如何通过CloudFormation配置AWS Config的全部AWS托管规则
AWS CloudFormation实现全选所有AWS Config托管规则方案
你要实现控制台全选所有AWS托管Config规则的效果,有两种可落地的实现方式:
方案1:使用AWS合规包(Conformance Pack,推荐)
控制台的全选托管规则功能本质是调用了AWS预置的全量托管规则合规包模板,用该方案部署和控制台操作效果完全一致,无需手动逐条定义规则:
- 在你现有模板的
Resources块中新增以下2个资源即可:
# 合规包所需服务角色 ConfigConformancePackRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: config-conforms.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSConfigConformancePackServiceRolePolicy" # 全量AWS托管规则合规包 AllAWSManagedRulesConformancePack: Type: AWS::Config::ConformancePack DependsOn: - ConfigRecorder - ConfigDeliveryChannel Properties: ConformancePackName: all-aws-managed-config-rules # 使用AWS官方预置的全量托管规则模板 TemplateS3Uri: !Sub "s3://awsconfigconforms-${AWS::Region}/templates/aws-operational-best-practices-all-rules.yaml" DeliveryS3Bucket: !Ref ConfigBucket RoleArn: !GetAtt ConfigConformancePackRole.Arn
方案2:手动逐条定义所有托管规则
如果你需要按照你现有模板中ConfigRuleForVolumeTags的格式单独定义每条规则,可按以下步骤操作:
- 首先通过AWS CLI拉取当前区域所有AWS托管规则的唯一标识符:
aws configservice list-aws-config-rules --owner AWS --query "ConfigRules[].Source.SourceIdentifier" --output text
- 遍历返回的标识符,按照你现有的规则格式批量生成资源块即可,示例如下:
# 示例规则1:检查S3桶是否开启版本控制 ConfigRuleS3VersioningEnabled: DependsOn: ConfigRecorder Type: AWS::Config::ConfigRule Properties: Scope: ComplianceResourceTypes: - "AWS::S3::Bucket" Source: Owner: AWS SourceIdentifier: "S3_BUCKET_VERSIONING_ENABLED" # 示例规则2:检查EC2实例是否使用EBS优化 ConfigRuleEC2EbsOptimized: DependsOn: ConfigRecorder Type: AWS::Config::ConfigRule Properties: Scope: ComplianceResourceTypes: - "AWS::EC2::Instance" Source: Owner: AWS SourceIdentifier: "EC2_INSTANCE_EBS_OPTIMIZED"
注意事项
- 部分托管规则需要传入必填参数,直接无参数部署会报错,需要根据规则要求补充
InputParameters配置 - 全量托管规则部署会产生对应的配置评估费用,建议先确认AWS Config计费规则后再部署
- 全局资源类规则需要确保你模板中的
IncludeGlobalResourceTypes参数设置为True,你现有模板已默认开启该配置
内容的提问来源于stack exchange,提问作者Deepakvg
相关产品推荐
相关产品推荐

