如何使用Terraform Compliance检查GCP资源是否包含指定标签键?
问题根因
你编写的规则存在两处语义偏差:
Then it must contain label1的逻辑是检查资源的顶层属性是否存在label1字段,而非检查labels这个map类型属性内的键值对- 未显式强制要求资源必须配置
labels属性,容易出现漏判
正确的feature文件写法
Feature: GCP资源成本标签强制校验 Scenario: 所有支持labels属性的资源必须包含指定成本标签 Given I have any resource defined Then it must have labels And its labels must contain label1
规则说明
Then it must have labels:校验所有资源必须显式配置labels属性且属性值不能为null,会直接拦截dataset3这类未配置labels的资源And its labels must contain label1:校验labels属性的map结构中必须存在label1键,会直接拦截dataset2这类配置了labels但缺少指定标签的资源
执行该规则后,只有dataset1会通过校验,完全符合你的需求。
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

