AWS Config 规则与修复
部署托管和自定义 Config 规则以检测不合规资源,并使用 SSM Automation 文档自动执行修复
AWS Config 规则与修复 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
什么是 AWS Config
AWS Config 是一项持续配置审计服务,会记录 AWS 资源随时间变化的配置状态,并根据所需规则评估这些配置。CloudTrail 记录“谁做了什么”,而 AWS Config 能回答“此资源现在是什么样的?”以及“它在过去任意时间点是什么样的?”。它还可以回答:“此配置是否符合我的策略?”,因此成为治理与合规的首选服务。
配置项目与配置历史
AWS Config 记录资源时,会创建一个配置项目(CI),即某个时间点该资源的属性、关系和元数据快照。每当资源发生变化,都会记录一个新的 CI。AWS Config 会为每个资源维护完整的配置历史,因此您可以查看某个安全组在数月间如何演变,以及某条规则究竟何时被添加或删除。CI 会传送到 S3 存储桶,也可以选择传送到 CloudWatch Events。
# Get the full configuration history for an EC2 security group
aws configservice get-resource-config-history \
--resource-type AWS::EC2::SecurityGroup \
--resource-id sg-0abc1234def567890 \
--limit 10 \
--query 'configurationItems[].{Time:configurationItemCaptureTime,Status:configurationItemStatus}'启用 AWS Config
要开始使用 AWS Config,您需要创建配置记录器(指定要记录的资源类型)和传送通道(指定 S3 存储桶,以及可选的用于变更通知的 SNS 主题)。您可以记录所有受支持的资源类型,也可以只记录特定子集。配置聚合器可以将多个账户和区域中的 Config 数据整合到一个视图中,用于组织范围的合规报告。
# Enable AWS Config recording for all resource types
aws configservice put-configuration-recorder \
--configuration-recorder \
name=default,roleARN=arn:aws:iam::111122223333:role/AWSConfigRole \
--recording-group allSupported=true,includeGlobalResourceTypes=true
# Set up delivery channel
aws configservice put-delivery-channel \
--delivery-channel \
name=default,s3BucketName=my-config-bucket-111122223333,snsTopicARN=arn:aws:sns:us-east-1:111122223333:ConfigChanges
aws configservice start-configuration-recorder --configuration-recorder-name defaultAWS Config 规则:托管规则
Config 规则定义资源所需的配置状态。AWS 托管 Config 规则是 AWS 提供的预构建规则,涵盖常见的合规检查。例如,s3-bucket-public-read-prohibited 检查 S3 存储桶是否未公开读取;ec2-instance-no-public-ip 检查 EC2 实例是否没有公有 IP;iam-password-policy 验证账户密码策略是否符合复杂度要求。目前提供 300 多项托管规则。
# Add the managed rule to check S3 buckets are not publicly readable
aws configservice put-config-rule \
--config-rule '{
"ConfigRuleName": "s3-bucket-public-read-prohibited",
"Source": {
"Owner": "AWS",
"SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"
},
"Scope": {
"ComplianceResourceTypes": ["AWS::S3::Bucket"]
}
}'
# View compliance status of all rules
aws configservice describe-compliance-by-config-rule \
--query 'ComplianceByConfigRules[].{Rule:ConfigRuleName,Compliance:Compliance.ComplianceType}'使用 Lambda 创建自定义 Config 规则
如果没有 AWS 托管规则涵盖您的需求,您可以使用 AWS Lambda 函数编写自定义 Config 规则。Lambda 会接收配置项目作为事件负载,并且必须返回 COMPLIANT 或 NON_COMPLIANT 判定结果。自定义规则可以强制执行组织特定的命名约定、必需标签、获准的 AMI ID,或合规团队要求的任何逻辑。规则可以在变更时评估(资源发生变化时)、定期评估(每 1/3/6/12/24 小时),也可以同时采用两种方式。
# Register a custom Lambda-backed Config rule
aws configservice put-config-rule \
--config-rule '{
"ConfigRuleName": "required-tags-enforcer",
"Source": {
"Owner": "CUSTOM_LAMBDA",
"SourceIdentifier": "arn:aws:lambda:us-east-1:111122223333:function:RequiredTagsChecker",
"SourceDetails": [{
"EventSource": "aws.config",
"MessageType": "ConfigurationItemChangeNotification"
}]
},
"Scope": {
"ComplianceResourceTypes": ["AWS::EC2::Instance","AWS::S3::Bucket"]
}
}'使用 CloudFormation Guard 实施主动规则
Config 还支持使用 AWS CloudFormation Guard(这是一种策略即代码语言)创建主动规则。主动规则会在资源通过 CloudFormation、AWS CDK 或 Terraform Cloud 创建之前对其进行评估,在部署时而不是资源进入生产环境后发现不合规配置。这会将合规性检查前移到基础设施流程中。主动评估是一项较新的功能,SAA-C03 考试可能会在治理前移场景中提及它。
使用 SSM 自动修复
Config 规则可以与自动修复操作配合使用,从而无需人工干预即可修复不合规资源。修复操作使用AWS Systems Manager(SSM)Automation 文档。例如,如果有人启用了公开访问,导致某个 S3 存储桶变得不合规,Config 可以自动运行 AWS-DisableS3BucketPublicReadWrite SSM 文档,重新启用该存储桶的公有访问阻止功能。修复可以是自动的(立即执行),也可以是手动的(按需触发)。
# Add automatic remediation to a Config rule
aws configservice put-remediation-configurations \
--remediation-configurations '[
{
"ConfigRuleName": "s3-bucket-public-read-prohibited",
"TargetType": "SSM_DOCUMENT",
"TargetId": "AWS-DisableS3BucketPublicReadWrite",
"Parameters": {
"S3BucketName": {"ResourceValue": {"Value": "RESOURCE_ID"}},
"AutomationAssumeRole": {"StaticValue": {"Values": ["arn:aws:iam::111122223333:role/ConfigRemediationRole"]}}
},
"Automatic": true,
"MaximumAutomaticAttempts": 3,
"RetryAttemptSeconds": 60
}
]'Config 时间线与资源关系
控制台中的 AWS Config 资源时间线会以时间线形式显示某个资源的每一次配置变更——您可以回溯到任意时间点,准确查看该资源当时的状态,包括它与其他资源的关系(例如关联了哪些安全组、关联了哪个 IAM 角色)。点击某个关系即可跳转到相关资源的时间线。这使 Config 成为根因分析中不可或缺的工具:您可以准确定位导致 Production 中断的具体变更。
# Get current compliance status for all EC2 instances
aws configservice get-compliance-details-by-resource \
--resource-type AWS::EC2::Instance \
--resource-id i-0123456789abcdef0 \
--query 'EvaluationResults[].{Rule:EvaluationResultIdentifier.EvaluationResultQualifier.ConfigRuleName,Compliance:ComplianceType}'跨账户聚合 Config 数据
配置聚合器会将多个 AWS 账户和区域中的 Config 数据收集到一个账户中,以便集中进行合规性报告。在 AWS Organisation 中,您可以在管理账户中创建聚合器,它会自动包含所有成员账户,而无需逐个进行授权。聚合器支持使用 Advanced Queries 进行查询——这是一个类似 SQL 的界面,可在几秒钟内找出整个组织中的所有不合规资源。
# Query all non-compliant resources across an organisation using Advanced Query
aws configservice select-aggregate-resource-config \
--configuration-aggregator-name OrgAggregator \
--expression "SELECT resourceId, resourceType, accountId, awsRegion
WHERE complianceType = 'NON_COMPLIANT'
AND resourceType = 'AWS::S3::Bucket'"
--query 'Results'大规模修复
当您拥有数千个不合规资源时,Config 的修复例外功能可以让您在规定期限内豁免特定资源,并记录说明原因,从而避免对合理的边缘情况进行误报修复。对于大规模清理,您可以从控制台批量触发手动修复,或使用系统管理器状态管理器关联,按计划将所需配置应用到 EC2 实例集群,同时结合 Config 的检测能力与 SSM 的强制执行能力。
# Add a remediation exception for a specific resource
aws configservice put-remediation-exceptions \
--config-rule-name s3-bucket-public-read-prohibited \
--resource-keys ResourceType=AWS::S3::Bucket,ResourceId=my-public-website-bucket \
--message 'Static website hosting requires public access' \
--expiration-time 2025-01-01T00:00:00ZAWS Config 与 CloudTrail 对比
区分 Config 和 CloudTrail 是 SAA-C03 中的常见考点。CloudTrail回答的是:谁在何时、从哪里执行了什么操作(API 调用审计日志)。AWS Config回答的是:资源现在是什么状态,以及它随时间发生过哪些变化(配置状态历史记录和合规性)。二者相辅相成——CloudTrail 告诉您有人在下午 3 点调用了 ModifySecurityGroup,而 Config 会显示该安全组变更前后的状态。将二者结合使用,才能实现完整的安全治理。
快速检查
测试您对本课 AWS 解决方案架构师(SAA-C03)相关概念的理解。
课程回顾
本课学习了:AWS Config 会记录配置状态随时间的变化,并根据合规规则评估资源;托管规则和自定义规则可以通过自动评估或按需评估检查数百种资源属性;SSM Automation 修复可以在无需人工干预的情况下自动修复不合规资源。接下来我们将学习 Conformance Packs 和 Organisation Trails,了解适用于企业规模治理的方案。
常见问题解答
「AWS Config 规则与修复」课时是免费的吗?
是的 — 「AWS Config 规则与修复」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「AWS Config 规则与修复」这节课中我会学到什么?
部署托管和自定义 Config 规则以检测不合规资源,并使用 SSM Automation 文档自动执行修复 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「AWS Config 规则与修复」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- CloudTrail 跟踪与事件历史记录
- CloudTrail Insights 与日志文件完整性
- AWS Config 规则与修复
- 合规性数据包与组织级跟踪