是否有Google API可统计项目下Armor Policies自定义规则数量?
存在对应的Google API及实现方案
可用的Google API
你可以使用Google Compute Engine Security Policies API获取每个Armor安全策略下的规则列表,进而统计自定义规则数量。具体接口为获取单个安全策略详情的GET请求:
https://www.googleapis.com/compute/v1/projects/{{ client_project }}/global/securityPolicies/{{ policy_name }}
该接口返回的响应中,rules字段是包含所有规则的数组。其中默认规则的优先级固定为2147483647(最低优先级),自定义规则的优先级会高于这个值,因此可通过过滤该默认规则来统计自定义规则数量。
对应的Ansible脚本实现
以下是完整的Ansible脚本,用于统计项目下所有Armor安全策略的自定义规则总数,当总数超过20时抛出错误:
- name: 获取项目下所有Armor安全策略列表 uri: url: "https://www.googleapis.com/compute/v1/projects/{{ client_project }}/global/securityPolicies" method: GET validate_certs: yes status_code: 200 return_content: yes headers: Authorization: Bearer {{ oauthcmd.stdout }} Content-Type: application/json register: security_policies_list tags: network - name: 初始化自定义规则总数变量 set_fact: total_custom_rules: 0 tags: network - name: 遍历每个安全策略,获取规则详情 uri: url: "https://www.googleapis.com/compute/v1/projects/{{ client_project }}/global/securityPolicies/{{ item.name }}" method: GET validate_certs: yes status_code: 200 return_content: yes headers: Authorization: Bearer {{ oauthcmd.stdout }} Content-Type: application/json register: policy_details loop: "{{ security_policies_list.json.items | default([]) }}" tags: network when: security_policies_list.json.items is defined - name: 累加自定义规则数量 set_fact: total_custom_rules: "{{ total_custom_rules | int + (policy_details.results | sum(attribute='json.rules | length') - security_policies_list.json.items | length) }}" tags: network # 每个策略默认包含1条系统规则,因此总数需减去策略数量 - name: 检查自定义规则总数是否超出配额 assert: that: - total_custom_rules | int <= 20 fail_msg: "自定义Armor规则数量已超出20条的配额限制,当前总数为{{ total_custom_rules }}" tags: network
脚本说明
- 先获取项目下所有安全策略的列表;
- 遍历每个策略,拉取其规则详情;
- 每个策略默认自带1条系统规则,统计自定义规则时需从单策略总规则数中减去1;
- 累加所有自定义规则数量,判断是否超过20的配额限制,超出则触发错误提示。
内容的提问来源于stack exchange,提问作者vicky kumar gupta
相关产品推荐
相关产品推荐

