You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置terraform-compliance仅拦截aws_s3_bucket_policy放行aws_iam_policy_document

解决方案

你要实现的需求核心是区分根模块用户显式声明的aws_s3_bucket_policy和S3模块内部自动创建的aws_s3_bucket_policy,使用terraform-compliance的地址正则过滤能力即可实现,正确的特性文件配置如下:

Feature: Force proper S3 bucket policy use
    Scenario: Block direct root-level aws_s3_bucket_policy resource usage
        Given I have aws_s3_bucket_policy resource defined with address not matching regex "^module\..*"
        Then it fails

规则原理

  • 所有在Terraform模块内部创建的资源,地址都会以module.为前缀,比如你S3模块内部创建的桶策略地址格式为module.my_s3_bucket.aws_s3_bucket_policy.s3_policy
  • 所有用户直接在根目录声明的aws_s3_bucket_policy资源,地址没有module.前缀,格式为aws_s3_bucket_policy.xxx
  • 规则中的with address not matching regex "^module\..*"过滤条件,会排除所有模块内部的aws_s3_bucket_policy资源,仅命中根目录下用户直接声明的非法资源,命中后直接触发失败

场景验证

  1. 非法场景(用户直接声明aws_s3_bucket_policy):资源地址无module.前缀,命中规则,拦截成功
  2. 合法场景(用户使用aws_iam_policy_document传参给S3模块):根目录无aws_s3_bucket_policy资源,模块内部的桶策略被过滤排除,规则校验通过

内容的提问来源于stack exchange,提问作者170730350

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:39:02