mcpField
I
implementing-aws-security-hub-compliance

implementing-aws-security-hub-compliance

github.com/mukul975安全35.2k49 次安装8 周前更新
代码仓库

关于 implementing-aws-security-hub-compliance

面向 AWS 组织的安全团队,指导集中部署 AWS Security Hub、汇总安全发现并评估合规状态。指南涵盖多账户配置、自定义洞察、自动修复和报告导出。

主要功能

  1. 01启用合规标准
  2. 02聚合多账户发现
  3. 03检查合规控制项
  4. 04创建自定义安全洞察
  5. 05配置自动修复流程
  6. 06导出发现并生成报告

适用场景

  1. 01集中管理多个 AWS 账户的安全状态
  2. 02持续检查 CIS、PCI DSS 或 NIST 标准
  3. 03根据安全发现触发自动修复
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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 HubAWS 服务,用于聚合来自 AWS 服务和第三方工具的安全发现结果,根据标准评估合规性,并提供统一的安全仪表板
安全标准一组预定义的安全控制项(CIS、PCI DSS、NIST 800-53),Security Hub 会依据这些控制项评估你的 AWS 配置
安全控制项标准中的单项检查,用于评估特定的 AWS 资源配置,例如 S3 存储桶是否阻止公共访问
发现结果由 Security Hub 或集成服务检测到的安全问题,采用 AWS Security Finding Format (ASFF) 格式
洞察按特定属性对发现结果进行自定义或托管分组,为安全分析提供聚合视图
ASFFAWS 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,并实现集中的发现结果聚合与自动告警。

方法:

  1. 在管理账号中启用 Security Hub,并指定一个安全账号作为委托管理员
  2. 通过 update-organization-configuration 为所有现有和新增成员账号配置自动启用
  3. 创建跨区域发现结果聚合器,将所有区域的发现结果汇总到管理员账号
  4. 在所有账号中启用 CIS AWS Foundations 1.4 和 AWS FSBP 标准
  5. 创建 EventBridge 规则,将 CRITICAL 发现结果路由到 PagerDuty,并将所有发现结果路由到 Splunk
  6. 针对主要组织风险构建自定义洞察:公共资源、缺失加密、未使用凭证
  7. 使用 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