implementing-aws-config-rules-for-compliance

实施 AWS Config 规则,对 AWS 资源进行持续合规监控,部署符合 CIS 和 PCI DSS 框架的托管和自定义规则,使用 SSM Automation 配置自动修复,并在多账户之间聚合合规数据。

9 stars

Best use case

implementing-aws-config-rules-for-compliance is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

实施 AWS Config 规则,对 AWS 资源进行持续合规监控,部署符合 CIS 和 PCI DSS 框架的托管和自定义规则,使用 SSM Automation 配置自动修复,并在多账户之间聚合合规数据。

Teams using implementing-aws-config-rules-for-compliance should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/implementing-aws-config-rules-for-compliance/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/implementing-aws-config-rules-for-compliance/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/implementing-aws-config-rules-for-compliance/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How implementing-aws-config-rules-for-compliance Compares

Feature / Agentimplementing-aws-config-rules-for-complianceStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

实施 AWS Config 规则,对 AWS 资源进行持续合规监控,部署符合 CIS 和 PCI DSS 框架的托管和自定义规则,使用 SSM Automation 配置自动修复,并在多账户之间聚合合规数据。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 实施 AWS Config 规则以实现合规

## 适用场景

- 为 AWS 资源建立针对监管标准的持续合规监控时
- 实施配置漂移的自动检测和修复时
- 使用 AWS Organizations 构建跨多个 AWS 账户的合规仪表盘时
- 审计团队需要持续合规证据而非时点评估时
- 部署能在资源创建后几分钟内检测不合规资源的护栏时

**不适用于**:实时威胁检测(使用 GuardDuty)、应用漏洞扫描(使用 Inspector),或一次性合规评估(使用 Prowler 进行更快的即席审计)。

## 前置条件

- 在所有目标账户和区域启用 AWS Config 记录
- 具有 `config:*`、`ssm:*` 和 `lambda:*` 权限的 IAM 角色用于规则管理
- 配置 AWS Organizations 委派管理员,用于 Config 聚合
- S3 存储桶用于 Config 传输通道,SNS 主题用于通知
- CloudFormation StackSets 或 Terraform 用于多账户规则部署

## 工作流程

### 步骤 1:启用 AWS Config 记录

在每个目标账户中设置 Config 记录器和传输通道。

```bash
# 创建用于 Config 数据的 S3 存储桶
aws s3api create-bucket \
  --bucket config-compliance-data-ACCOUNT_ID \
  --region us-east-1

# 创建 Config 服务关联角色
aws iam create-service-linked-role --aws-service-name config.amazonaws.com

# 启动 Config 记录器
aws configservice put-configuration-recorder \
  --configuration-recorder name=default,roleARN=arn:aws:iam::ACCOUNT:role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig \
  --recording-group allSupported=true,includeGlobalResourceTypes=true

# 设置传输通道
aws configservice put-delivery-channel \
  --delivery-channel '{
    "name": "default",
    "s3BucketName": "config-compliance-data-ACCOUNT_ID",
    "snsTopicARN": "arn:aws:sns:us-east-1:ACCOUNT:config-notifications",
    "configSnapshotDeliveryProperties": {"deliveryFrequency": "TwentyFour_Hours"}
  }'

# 启动记录
aws configservice start-configuration-recorder --configuration-recorder-name default
```

### 步骤 2:部署用于 CIS 合规的托管 Config 规则

启用映射到 CIS AWS Foundations Benchmark 控制项的 AWS 托管 Config 规则。

```bash
# S3 存储桶安全规则
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "s3-bucket-public-read-prohibited",
  "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "s3-bucket-server-side-encryption-enabled",
  "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "s3-bucket-ssl-requests-only",
  "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_SSL_REQUESTS_ONLY"}
}'

# IAM 安全规则
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "iam-root-access-key-check",
  "Source": {"Owner": "AWS", "SourceIdentifier": "IAM_ROOT_ACCESS_KEY_CHECK"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "mfa-enabled-for-iam-console-access",
  "Source": {"Owner": "AWS", "SourceIdentifier": "MFA_ENABLED_FOR_IAM_CONSOLE_ACCESS"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "iam-password-policy",
  "Source": {"Owner": "AWS", "SourceIdentifier": "IAM_PASSWORD_POLICY"},
  "InputParameters": "{\"RequireUppercaseCharacters\":\"true\",\"RequireLowercaseCharacters\":\"true\",\"RequireSymbols\":\"true\",\"RequireNumbers\":\"true\",\"MinimumPasswordLength\":\"14\"}"
}'

# 网络安全规则
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "restricted-ssh",
  "Source": {"Owner": "AWS", "SourceIdentifier": "INCOMING_SSH_DISABLED"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "vpc-flow-logs-enabled",
  "Source": {"Owner": "AWS", "SourceIdentifier": "VPC_FLOW_LOGS_ENABLED"}
}'

# 加密规则
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "rds-storage-encrypted",
  "Source": {"Owner": "AWS", "SourceIdentifier": "RDS_STORAGE_ENCRYPTED"}
}'

aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "encrypted-volumes",
  "Source": {"Owner": "AWS", "SourceIdentifier": "ENCRYPTED_VOLUMES"}
}'
```

### 步骤 3:使用 Lambda 创建自定义 Config 规则

针对组织特定的合规要求构建自定义规则。

```python
# custom_config_rule.py - 确保 EC2 实例具有必需的标签
import json
import boto3

config = boto3.client('config')

REQUIRED_TAGS = ['Environment', 'Owner', 'CostCenter', 'Project']

def lambda_handler(event, context):
    invoking_event = json.loads(event['invokingEvent'])
    configuration_item = invoking_event.get('configurationItem', {})

    if configuration_item['resourceType'] != 'AWS::EC2::Instance':
        return

    tags = {t['key']: t['value'] for t in configuration_item.get('tags', [])}
    missing_tags = [tag for tag in REQUIRED_TAGS if tag not in tags]

    if missing_tags:
        compliance = 'NON_COMPLIANT'
        annotation = f"缺少必需标签: {', '.join(missing_tags)}"
    else:
        compliance = 'COMPLIANT'
        annotation = '所有必需标签均已存在'

    config.put_evaluations(
        Evaluations=[{
            'ComplianceResourceType': configuration_item['resourceType'],
            'ComplianceResourceId': configuration_item['resourceId'],
            'ComplianceType': compliance,
            'Annotation': annotation,
            'OrderingTimestamp': configuration_item['configurationItemCaptureTime']
        }],
        ResultToken=event['resultToken']
    )
```

```bash
# 部署自定义规则
aws configservice put-config-rule --config-rule '{
  "ConfigRuleName": "ec2-required-tags",
  "Source": {
    "Owner": "CUSTOM_LAMBDA",
    "SourceIdentifier": "arn:aws:lambda:us-east-1:ACCOUNT:function:config-required-tags",
    "SourceDetails": [{
      "EventSource": "aws.config",
      "MessageType": "ConfigurationItemChangeNotification"
    }]
  },
  "Scope": {"ComplianceResourceTypes": ["AWS::EC2::Instance"]}
}'
```

### 步骤 4:配置自动修复

设置 SSM Automation 文档,自动修复不合规资源。

```bash
# 自动修复公开访问的 S3 存储桶
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::ACCOUNT:role/ConfigRemediationRole"]}}
  },
  "Automatic": true,
  "MaximumAutomaticAttempts": 3,
  "RetryAttemptSeconds": 60
}]'

# 自动修复未加密的 EBS 卷
aws configservice put-remediation-configurations --remediation-configurations '[{
  "ConfigRuleName": "encrypted-volumes",
  "TargetType": "SSM_DOCUMENT",
  "TargetId": "AWS-EnableEBSEncryptionByDefault",
  "Parameters": {
    "AutomationAssumeRole": {"StaticValue": {"Values": ["arn:aws:iam::ACCOUNT:role/ConfigRemediationRole"]}}
  },
  "Automatic": true,
  "MaximumAutomaticAttempts": 1,
  "RetryAttemptSeconds": 300
}]'

# 自动修复允许来自 0.0.0.0/0 SSH 访问的安全组
aws configservice put-remediation-configurations --remediation-configurations '[{
  "ConfigRuleName": "restricted-ssh",
  "TargetType": "SSM_DOCUMENT",
  "TargetId": "AWS-DisablePublicAccessForSecurityGroup",
  "Parameters": {
    "GroupId": {"ResourceValue": {"Value": "RESOURCE_ID"}},
    "AutomationAssumeRole": {"StaticValue": {"Values": ["arn:aws:iam::ACCOUNT:role/ConfigRemediationRole"]}}
  },
  "Automatic": true,
  "MaximumAutomaticAttempts": 3,
  "RetryAttemptSeconds": 60
}]'
```

### 步骤 5:设置多账户聚合

将所有组织账户的合规数据聚合到中央视图。

```bash
# 为组织创建 Config 聚合器
aws configservice put-configuration-aggregator \
  --configuration-aggregator-name org-compliance-aggregator \
  --organization-aggregation-source '{
    "RoleArn": "arn:aws:iam::ACCOUNT:role/ConfigAggregatorRole",
    "AllAwsRegions": true
  }'

# 跨所有账户查询聚合合规情况
aws configservice get-aggregate-compliance-details-by-config-rule \
  --configuration-aggregator-name org-compliance-aggregator \
  --config-rule-name s3-bucket-public-read-prohibited \
  --compliance-type NON_COMPLIANT \
  --query 'AggregateEvaluationResults[*].[AccountId,AwsRegion,EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType]' \
  --output table

# 按账户获取合规摘要
aws configservice get-aggregate-compliance-summary-by-source \
  --configuration-aggregator-name org-compliance-aggregator \
  --query 'AggregateComplianceCounts[*].[GroupName,ComplianceSummary.CompliantResourceCount.CappedCount,ComplianceSummary.NonCompliantResourceCount.CappedCount]' \
  --output table
```

## 核心概念

| 术语 | 定义 |
|------|------|
| AWS Config 规则(Config Rule) | 持续或按计划评估 AWS 资源配置是否满足特定要求的合规检查 |
| 托管规则(Managed Rule) | AWS 提供的预构建 Config 规则,包含用于常见合规检查(如加密和公开访问)的标准化逻辑 |
| 自定义规则(Custom Rule) | 由 Lambda 函数支持的组织专用 Config 规则,评估自定义合规逻辑 |
| 修复操作(Remediation Action) | SSM Automation 文档或 Lambda 函数,用于自动修复不合规资源 |
| 配置聚合器(Configuration Aggregator) | AWS Config 功能,将多个账户和区域的合规数据汇总到集中视图 |
| 合规包(Conformance Pack) | 打包为可部署单元的 Config 规则和修复操作集合,用于特定合规框架 |

## 工具与系统

- **AWS Config**:用于 AWS 资源的持续配置记录和合规评估服务
- **SSM Automation**:AWS Systems Manager 文档,用于对不合规资源执行自动修复操作
- **Config 合规包(Config Conformance Packs)**:适用于 CIS、PCI DSS、NIST 800-53 和 HIPAA 合规的预构建规则集合
- **CloudFormation StackSets**:跨 AWS Organizations 多账户部署 Config 规则的机制
- **Config 聚合器(Config Aggregator)**:跨账户和跨区域的合规数据整合

## 常见场景

### 场景:在 30 个 AWS 账户中部署 CIS 合规监控

**场景背景**:一家金融服务公司需要在其所有 30 个生产账户中持续证明 CIS AWS Foundations Benchmark 合规,以通过年度 SOC 2 审计。

**方法**:
1. 通过 CloudFormation StackSets 在所有账户中启用 AWS Config 记录
2. 使用 StackSets 将 CIS 合规包部署到所有账户
3. 在安全账户中设置 Config 聚合器,实现全组织可见性
4. 为安全可自动修复的规则(公开 S3、未加密卷)配置自动修复
5. 创建 EventBridge 规则,在出现新的 NON_COMPLIANT 评估时发送告警
6. 构建每周合规报告,聚合所有账户的合规得分
7. 将 Config 快照存储在具有生命周期策略的 S3 中,用于审计留存

**常见陷阱**:Config 记录按记录的配置项收费。在资源众多的账户中,成本可能较高。使用有针对性的记录组,专注于与合规相关的资源类型,而不是记录所有资源。网络规则(安全组)的自动修复如果规则是有意设置为宽泛的,可能会中断应用程序。

## 输出格式

```
AWS Config 合规报告
===============================
组织: Acme Financial(30 个账户)
框架: CIS AWS Foundations 1.4
报告日期: 2026-02-23
活跃 Config 规则数: 48

合规摘要:
  总体合规率: 87%
  合规资源数:     4,234
  不合规资源数:     612
  不适用:           189

不合规情况最多的规则:
  encrypted-volumes:              89 个资源(14 个账户)
  vpc-flow-logs-enabled:          67 个资源(12 个账户)
  mfa-enabled-for-iam-console:    45 个资源(8 个账户)
  s3-bucket-ssl-requests-only:    34 个资源(6 个账户)
  restricted-ssh:                 28 个资源(5 个账户)

自动修复情况(过去 30 天):
  已修复的公开 S3 存储桶:      12 个
  已限制的安全组:               8 个
  已启用 EBS 默认加密:          6 个
  自动修复总计:                26 个
  修复失败:                     3 次

账户合规排名:
  1. prod-core(account-001):     96% 合规
  2. prod-data(account-002):     94% 合规
  ...
  30. dev-sandbox(account-030):  68% 合规
```

Related Skills

testing-cors-misconfiguration

9
from killvxk/cybersecurity-skills-zh

在安全评估期间,识别和利用跨源资源共享(CORS)错误配置,这些配置允许未经授权的跨域数据访问和凭证窃取。

remediating-s3-bucket-misconfiguration

9
from killvxk/cybersecurity-skills-zh

本技能提供识别和修复 Amazon S3 存储桶错误配置(这些错误配置会将敏感数据暴露给未授权访问)的分步操作流程。涵盖在账户和存储桶级别启用 S3 阻止公开访问(Block Public Access)、审计存储桶策略和 ACL、强制加密、配置访问日志记录,以及使用 AWS Config 和 Lambda 部署自动化修复措施。

performing-threat-hunting-with-yara-rules

9
from killvxk/cybersecurity-skills-zh

使用 YARA 模式匹配规则在文件系统和内存转储中狩猎恶意软件、可疑文件和入侵指标。 涵盖规则编写、yara-python 扫描以及与威胁情报源的集成。

performing-ssl-tls-inspection-configuration

9
from killvxk/cybersecurity-skills-zh

在网络安全设备上配置 SSL/TLS 检查,对 HTTPS 流量进行解密、检查和重加密以用于威胁检测,同时管理证书、豁免项和隐私合规要求。

implementing-zero-trust-with-hashicorp-boundary

9
from killvxk/cybersecurity-skills-zh

使用 HashiCorp Boundary 实现具备动态凭据代理、会话录制和 Vault 集成的身份感知零信任基础设施访问管理。

implementing-zero-trust-with-beyondcorp

9
from killvxk/cybersecurity-skills-zh

使用身份感知代理(IAP,Identity-Aware Proxy)、上下文感知访问策略、设备信任验证和 Access Context Manager,部署 Google BeyondCorp Enterprise 零信任访问控制,对 GCP 资源和内部应用强制执行基于身份和安全态势的访问。

implementing-zero-trust-network-access

9
from killvxk/cybersecurity-skills-zh

通过配置身份感知代理、微分段、基于条件访问策略的持续验证,以及在 AWS、Azure 和 GCP 环境中以 BeyondCorp 风格的架构替代传统 VPN 访问,在云环境中实施零信任网络访问(ZTNA)。

implementing-zero-trust-network-access-with-zscaler

9
from killvxk/cybersecurity-skills-zh

使用 Zscaler 实施零信任网络访问(Zero Trust Network Access,ZTNA),通过 Zscaler Private Access(ZPA)配置应用分段、访问策略和连接器,替代传统 VPN 架构

implementing-zero-trust-in-cloud

9
from killvxk/cybersecurity-skills-zh

本技能指导组织按照 NIST SP 800-207 和 Google BeyondCorp 原则在云环境中实施零信任(Zero Trust)架构,涵盖以身份为中心的访问控制、微分段(Micro-Segmentation)、持续验证、设备信任评估,以及部署身份感知代理(Identity-Aware Proxy)以消除 AWS、Azure 和 GCP 环境中的隐式网络信任。

implementing-zero-trust-for-saas-applications

9
from killvxk/cybersecurity-skills-zh

使用 CASB、SSPM、条件访问策略、OAuth 应用治理和会话控制,为 SaaS 应用实施零信任访问控制, 对云托管服务强制执行身份验证、设备合规性检查和数据保护。

implementing-zero-trust-dns-with-nextdns

9
from killvxk/cybersecurity-skills-zh

将 NextDNS 实施为零信任 DNS 过滤层,提供加密解析、威胁情报阻断、隐私保护,以及跨所有端点的组织策略执行。

implementing-zero-standing-privilege-with-cyberark

9
from killvxk/cybersecurity-skills-zh

部署 CyberArk Secure Cloud Access,通过基于时间、权限和审批控制的即时访问,在混合云和多云环境中消除常设权限。