如何找到未附加的防火墙规则



我正在查看防火墙规则。规则似乎是通过标记附加的,有没有办法识别没有相应资源的防火墙规则?

对象"VM 实例"和"防火墙规则"具有"网络标记"属性,该属性在逻辑上绑定它们:

CloudShell:$ gcloud compute instances describe lamp-1-vm --zone=us-central1-f 
...
tags: 
items:
- lamp-1-deployment
CloudShell:$ gcloud compute firewall-rules describe my-http-enable 
...
targetTags: 
- lamp-1-deployment

您可以使用gcloud和一些 shell 脚本来构建带有网络标记的防火墙规则列表和带有标记的实例列表,然后使用循环查找其标记未使用的防火墙规则。

在这里,您将找到一些有用的示例:

使用 gcloud(GCP 的命令行界面(进行过滤和格式化的乐趣

我尝试为这个难题构建一个解决方案,可以在这里的公共存储库中找到:

https://github.com/kolban-google/firewall-instances

它的文档是:


在 GCP 项目中,我们可以定义防火墙规则。 这些规则可以与计算相关联 通过使用标签的引擎实例。 在防火墙规则中,我们可以指定一组或多个 命名标记,仅当防火墙规则中的标记与关联的标记匹配时,才会应用规则 使用计算引擎。 随着我们项目的发展,我们最终可能会得到很多防火墙规则,我们可能会 发现自己在问这个问题"是否有任何不匹配的防火墙规则 计算引擎实例? 我们可以手动检查每个防火墙规则,然后查看是否 有任何匹配的实例,但这很费力且容易出错。 在这个项目中,我们描述了 动态检索当前防火墙规则然后自动搜索的示例工具 用于匹配具有相应标记的计算引擎实例。

要运行该工具,请下载,然后:

npm install
node index.js --projectNum [projectNum]

其中 projectNum 是项目的数字 ID。 结果是以下格式的 JSON 字符串:

[
{
"name": "[FIREWALL_RULE_NAME]",
"instances": [
"INSTANCE_NAME",
... 
]
},
...
]

如果防火墙规则没有匹配的实例,则不会填充实例字段。


从算法的角度来看:

Get the list of all firewall rules;
For each of the firewall rules {
Get the networkTags for that rule;
Search for all compute instances that have one or more of those tags;
List the rule and the associated compute instances that have the tags;
}

此项目按原样提供作为示例。

相关内容

  • 没有找到相关文章

最新更新