关于 implementing-aws-security-hub-compliance
面向 AWS 组织的安全团队,指导集中部署 AWS Security Hub、汇总安全发现并评估合规状态。指南涵盖多账户配置、自定义洞察、自动修复和报告导出。
主要功能
- 01启用合规标准
- 02聚合多账户发现
- 03检查合规控制项
- 04创建自定义安全洞察
- 05配置自动修复流程
- 06导出发现并生成报告
适用场景
- 01集中管理多个 AWS 账户的安全状态
- 02持续检查 CIS、PCI DSS 或 NIST 标准
- 03根据安全发现触发自动修复
- 04向组织汇总合规情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill implementing-aws-security-hub-compliance安装后在 Claude Code 中输入/implementing-aws-security-hub-compliance确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
实施 AWS Security Hub 合规
何时使用
- 需要在多个 AWS 账户之间建立集中式安全态势管理时
- 合规要求需要针对 CIS、PCI DSS 或 NIST 800-53 标准进行持续监控时
- 需要聚合来自 GuardDuty、Inspector、Macie、Firewall Manager 和第三方工具的发现结果时
- 需要构建由安全发现结果触发的自动化修复工作流时
- 高管相关方需要整个组织的安全合规仪表板时
不要使用于实时威胁检测(请使用 GuardDuty)、漏洞扫描(请使用 Inspector)或数据分类(请使用 Macie)。Security Hub 会聚合来自这些服务的发现结果,但不会取代它们。
先决条件
- 已为 Security Hub 配置委派管理员的 AWS Organizations
- 具备
securityhub:*、config:*、events:*和lambda:*的 IAM 权限 - 在所有目标账户和区域中启用 AWS Config(Security Hub 要求)
- 用于多账户部署的 CloudFormation StackSets 或 Terraform
- 已配置用于将告警路由到安全团队的 SNS 主题
工作流
步骤 1:启用带合规标准的 Security Hub
在管理账户中启用 Security Hub,并选择要评估的合规标准。
# Enable Security Hub in the current account/region
aws securityhub enable-security-hub \
--enable-default-standards \
--control-finding-generator SECURITY_CONTROL
# Enable specific compliance standards
aws securityhub batch-enable-standards --standards-subscription-requests \
'[
{"StandardsArn": "arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0"},
{"StandardsArn": "arn:aws:securityhub:us-east-1::standards/cis-aws-foundations-benchmark/v/1.4.0"},
{"StandardsArn": "arn:aws:securityhub:us-east-1::standards/pci-dss/v/3.2.1"},
{"StandardsArn": "arn:aws:securityhub:us-east-1::standards/nist-800-53/v/5.0.0"}
]'
# Verify enabled standards
aws securityhub get-enabled-standards \
--query 'StandardsSubscriptions[*].[StandardsArn,StandardsStatus]' --output table
步骤 2:配置多账户聚合
设置委派管理员,并聚合来自所有组织账户的发现结果。
# Designate a delegated admin (run from management account)
aws securityhub enable-organization-admin-account \
--admin-account-id 111122223333
# From the delegated admin account, enable auto-enrollment
aws securityhub update-organization-configuration \
--auto-enable \
--auto-enable-standards DEFAULT
# Create a finding aggregator for cross-region aggregation
aws securityhub create-finding-aggregator \
--region-linking-mode ALL_REGIONS
# List member accounts
aws securityhub list-members \
--query 'Members[*].[AccountId,MemberStatus]' --output table
步骤 3:查看合规分数和失败的控制项
查询 Security Hub 以了解已启用标准的合规态势,并识别失败的控制项。
# Get overall compliance score for CIS benchmark
aws securityhub get-standards-control-associations \
--security-control-id "IAM.1" \
--query 'StandardsControlAssociationSummaries[*].[StandardsArn,AssociationStatus]' \
--output table
# List all failed controls
aws securityhub get-findings \
--filters '{
"ComplianceStatus": [{"Value": "FAILED", "Comparison": "EQUALS"}],
"RecordState": [{"Value": "ACTIVE", "Comparison": "EQUALS"}],
"WorkflowStatus": [{"Value": "NEW", "Comparison": "EQUALS"}]
}' \
--sort-criteria '{"Field": "SeverityNormalized", "SortOrder": "desc"}' \
--max-items 50 \
--query 'Findings[*].[Title,Severity.Label,Compliance.Status,Resources[0].Id]' \
--output table
# Get finding counts by severity
aws securityhub get-insight-results \
--insight-arn "arn:aws:securityhub:us-east-1:111122223333:insight/111122223333/default/2"
步骤 4:创建自定义安全洞察
构建自定义洞察,以跟踪组织特定的安全优先事项。
# Create insight for publicly accessible resources
aws securityhub create-insight \
--name "Publicly Accessible Resources" \
--filters '{
"ResourceType": [
{"Value": "AwsS3Bucket", "Comparison": "EQUALS"},
{"Value": "AwsEc2SecurityGroup", "Comparison": "EQUALS"},
{"Value": "AwsRdsDbInstance", "Comparison": "EQUALS"}
],
"ComplianceStatus": [{"Value": "FAILED", "Comparison": "EQUALS"}],
"SeverityLabel": [{"Value": "CRITICAL", "Comparison": "EQUALS"}, {"Value": "HIGH", "Comparison": "EQUALS"}]
}' \
--group-by-attribute "ResourceType"
# Create insight for unencrypted resources
aws securityhub create-insight \
--name "Unencrypted Resources Across Accounts" \
--filters '{
"Title": [{"Value": "encryption", "Comparison": "CONTAINS"}],
"ComplianceStatus": [{"Value": "FAILED", "Comparison": "EQUALS"}]
}' \
--group-by-attribute "AwsAccountId"
步骤 5:使用 EventBridge 配置自动化修复
设置 EventBridge 规则,以针对特定发现结果类型触发基于 Lambda 的自动修复。
# Create EventBridge rule for Security Hub findings
aws events put-rule \
--name "security-hub-critical-findings" \
--event-pattern '{
"source": ["aws.securityhub"],
"detail-type": ["Security Hub Findings - Imported"],
"detail": {
"findings": {
"Severity": {"Label": ["CRITICAL"]},
"Compliance": {"Status": ["FAILED"]},
"Workflow": {"Status": ["NEW"]}
}
}
}'
# Example Lambda auto-remediation for S3 public access (Python)
cat > /tmp/remediate_s3.py << 'PYEOF'
import boto3
import json
def lambda_handler(event, context):
s3 = boto3.client('s3')
securityhub = boto3.client('securityhub')
for finding in event['detail']['findings']:
if 'S3' in finding.get('Title', '') and 'public' in finding.get('Title', '').lower():
bucket_arn = finding['Resources'][0]['Id']
bucket_name = bucket_arn.split(':::')[-1]
s3.put_public_access_block(
Bucket=bucket_name,
PublicAccessBlockConfiguration={
'BlockPublicAcls': True,
'IgnorePublicAcls': True,
'BlockPublicPolicy': True,
'RestrictPublicBuckets': True
}
)
securityhub.batch_update_findings(
FindingIdentifiers=[{
'Id': finding['Id'],
'ProductArn': finding['ProductArn']
}],
Workflow={'Status': 'RESOLVED'},
Note={
'Text': 'Auto-remediated: Block Public Access enabled',
'UpdatedBy': 'security-hub-auto-remediation'
}
)
return {'statusCode': 200}
PYEOF
步骤 6:导出发现结果并生成合规报告
导出 Security Hub 发现结果,用于报告以及与外部 SIEM 或 GRC 平台集成。
# Export all findings to S3 via a custom script
aws securityhub get-findings \
--filters '{
"RecordState": [{"Value": "ACTIVE", "Comparison": "EQUALS"}]
}' \
--max-items 1000 \
--output json > security-hub-findings-export.json
# Send critical findings to SNS
aws sns publish \
--topic-arn arn:aws:sns:us-east-1:111122223333:security-alerts \
--subject "Security Hub Daily Summary" \
--message file://daily-summary.json
# Integrate with third-party SIEM via EventBridge
aws events put-targets \
--rule security-hub-critical-findings \
--targets '[{
"Id": "splunk-hec",
"Arn": "arn:aws:events:us-east-1:111122223333:api-destination/splunk-hec",
"HttpParameters": {
"HeaderParameters": {"Authorization": "Splunk HEC_TOKEN"}
}
}]'
关键概念
| 术语 | 定义 |
|---|---|
| Security Hub | AWS 服务,用于聚合来自 AWS 服务和第三方工具的安全发现结果,根据标准评估合规性,并提供统一的安全仪表板 |
| 安全标准 | 一组预定义的安全控制项(CIS、PCI DSS、NIST 800-53),Security Hub 会依据这些控制项评估你的 AWS 配置 |
| 安全控制项 | 标准中的单项检查,用于评估特定的 AWS 资源配置,例如 S3 存储桶是否阻止公共访问 |
| 发现结果 | 由 Security Hub 或集成服务检测到的安全问题,采用 AWS Security Finding Format (ASFF) 格式 |
| 洞察 | 按特定属性对发现结果进行自定义或托管分组,为安全分析提供聚合视图 |
| ASFF | AWS Security Finding Format,所有 Security Hub 集成用于一致表示发现结果的标准化 JSON 模式 |
工具与系统
- AWS Security Hub:跨 AWS 账户的安全发现结果中央聚合与合规评估平台
- AWS Config:Security Hub 用于评估资源合规性所必需的配置记录服务
- Amazon EventBridge:用于将 Security Hub 发现结果路由到 Lambda、SNS 或外部修复系统的事件总线
- AWS Lambda:用于由 Security Hub 发现结果触发的自动化修复函数的无服务器计算服务
- Prowler:开源工具,可通过 ASFF 集成将发现结果发送到 Security Hub
常见场景
场景:在 50 个账号的组织中推广 Security Hub
背景:一个安全团队需要在 AWS Organization 中的所有账号内启用带有 CIS 和 FSBP 标准的 Security Hub,并实现集中的发现结果聚合与自动告警。
方法:
- 在管理账号中启用 Security Hub,并指定一个安全账号作为委托管理员
- 通过
update-organization-configuration为所有现有和新增成员账号配置自动启用 - 创建跨区域发现结果聚合器,将所有区域的发现结果汇总到管理员账号
- 在所有账号中启用 CIS AWS Foundations 1.4 和 AWS FSBP 标准
- 创建 EventBridge 规则,将 CRITICAL 发现结果路由到 PagerDuty,并将所有发现结果路由到 Splunk
- 针对主要组织风险构建自定义洞察:公共资源、缺失加密、未使用凭证
- 使用 Lambda 和 SES 向利益相关者安排每周合规报告
陷阱:Security Hub 要求在每个账号和区域中启用 AWS Config。未能启用 Config 将导致控制项显示为“No data”,而不是 PASSED 或 FAILED。禁用了 Config 的成员账号将静默产生不完整的合规分数。
输出格式
AWS Security Hub Compliance Report
=====================================
Organization: acme-corp (50 accounts)
Region: us-east-1 (aggregated from all regions)
Report Date: 2026-02-23
Standards Enabled: CIS 1.4, FSBP v1.0, PCI DSS 3.2.1
COMPLIANCE SCORES:
CIS AWS Foundations 1.4: 78% (142/182 controls passing)
AWS FSBP v1.0.0: 85% (198/233 controls passing)
PCI DSS 3.2.1: 72% (89/124 controls passing)
CRITICAL FINDINGS: 23
HIGH FINDINGS: 87
MEDIUM FINDINGS: 245
LOW FINDINGS: 412
TOP FAILING CONTROLS:
[IAM.6] MFA not enabled for root account 12 accounts
[S3.2] S3 Block Public Access not enabled 8 accounts
[EC2.19] Security groups allow unrestricted access 15 accounts
[RDS.3] RDS encryption at rest not enabled 6 accounts
AUTO-REMEDIATION ACTIONS (Last 30 Days):
S3 Block Public Access enabled: 14
Security Group rules restricted: 8
CloudTrail logging re-enabled: 3
Total auto-remediated findings: 25
评论
支持 Markdown