SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

AWS Security Hub — セキュリティスコア・コンプライアンス基準・統合管理

AWS Security Hubのセキュリティコントロール、FSBP/CIS/PCI DSS/SOC2準拠チェック、複数AWSアカウントの集中管理、Finding集約、EventBridgeとの自動修復設計を解説。

一言結論

Security HubはGuardDuty・Inspector・Macieなど複数のAWSセキュリティサービスのFindingをASFFフォーマットで集約してコンプライアンス準拠を一元可視化するサービスで、EventBridgeとLambdaを組み合わせることで検出から自動修復まで完結させることができる。

AWS Security Hubとは

AWS Security HubはAWSアカウントのセキュリティ状態を一元的に可視化し、コンプライアンス基準への準拠状況をチェックするサービスだ。GuardDuty、Inspector、Macieなど複数のAWSサービスからのFindingを集約する。

サポートするコンプライアンス基準

AWS基盤セキュリティベストプラクティス (FSBP):
  AWSの推奨セキュリティ設定を200以上チェック

CIS AWS Foundations Benchmark:
  CISが定めるAWS設定のベストプラクティス(v1.2/v1.4/v3.0)

PCI DSS:
  クレジットカード情報を扱うシステム向け

NIST SP 800-53:
  米国連邦政府の情報セキュリティ基準

SOC 2:
  サービス組織のセキュリティ・可用性・処理の完全性・機密性・プライバシー

CIS Controls:
  サイバー攻撃に対する重要セキュリティコントロール

セキュリティコントロールの例(FSBP)

IAM.1: IAMポリシーをrootアカウントにアタッチしない
IAM.4: IAMルートアクセスキーが存在してはならない
IAM.5: MFAが管理コンソールアクセスに必要
EC2.2: デフォルトのセキュリティグループにトラフィックを許可しない
S3.1: S3バケットのパブリックアクセスブロックを有効化
S3.2: S3バケットのパブリックアクセスのブロックを有効化(バケットレベル)
CloudTrail.1: CloudTrailを有効化する
CloudTrail.2: CloudTrailのログファイル検証を有効化
RDS.1: RDSスナップショットはプライベートにする
KMS.1: KMSキーのローテーションを有効化

マルチアカウント統合

# Organizations連携でのSecurity Hub有効化(管理アカウント)
aws securityhub enable-organization-admin-account \
  --admin-account-id 123456789012

# 委任管理者アカウントから全メンバーを有効化
aws securityhub create-members \
  --account-details '[
    {"AccountId": "111111111111", "Email": "dev@example.com"},
    {"AccountId": "222222222222", "Email": "prod@example.com"}
  ]'

# クロスリージョン集約(全リージョンを東京に集約)
aws securityhub create-finding-aggregator \
  --region-linking-mode ALL_REGIONS \
  --region ap-northeast-1

Finding集約

Security HubはAWSサービスおよびサードパーティからのFindingをASFF(Amazon Security Finding Format)に標準化して集約する。

集約されるFindingのソース:
  AWS GuardDuty
  Amazon Inspector v2
  Amazon Macie
  AWS IAM Access Analyzer
  AWS Firewall Manager
  AWS Audit Manager
  サードパーティ(Rapid7, CrowdStrike等)

カスタムインサイト

複数のFindingにまたがるパターンを可視化できる。

# カスタムインサイト: 重要なリソースへの未解決Findingを集計
aws securityhub create-insight \
  --name "Critical Open Findings by Resource" \
  --filters '{
    "SeverityLabel": [{"Value": "CRITICAL", "Comparison": "EQUALS"}],
    "WorkflowStatus": [{"Value": "NEW", "Comparison": "EQUALS"}],
    "RecordState": [{"Value": "ACTIVE", "Comparison": "EQUALS"}]
  }' \
  --group-by-attribute "ResourceId"

EventBridgeとの自動修復

// Security HubのFindingをEventBridgeでトリガー
{
  "source": ["aws.securityhub"],
  "detail-type": ["Security Hub Findings - Imported"],
  "detail": {
    "findings": {
      "ProductFields": {
        "StandardsGuideArn": [{
          "prefix": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark"
        }]
      },
      "Severity": {
        "Label": ["CRITICAL", "HIGH"]
      }
    }
  }
}
# 自動修復Lambda: S3バケットのパブリックアクセスを自動ブロック
def handler(event, context):
    for finding in event['detail']['findings']:
        if finding['Types'][0] == 'Software and Configuration Checks/AWS Security Best Practices':
            resource_id = finding['Resources'][0]['Id']
            
            # S3のパブリックアクセスブロック
            if 'S3' in resource_id:
                bucket_name = resource_id.split(':::')[1]
                s3 = boto3.client('s3')
                s3.put_public_access_block(
                    Bucket=bucket_name,
                    PublicAccessBlockConfiguration={
                        'BlockPublicAcls': True,
                        'IgnorePublicAcls': True,
                        'BlockPublicPolicy': True,
                        'RestrictPublicBuckets': True
                    }
                )
                
                # FindingのワークフローをRESOLVEDに更新
                securityhub = boto3.client('securityhub')
                securityhub.batch_update_findings(
                    FindingIdentifiers=[{
                        'Id': finding['Id'],
                        'ProductArn': finding['ProductArn']
                    }],
                    Workflow={'Status': 'RESOLVED'},
                    Note={'Text': 'Auto-remediated', 'UpdatedBy': 'AutoRemediationLambda'}
                )

セキュリティスコアの解釈

スコア = (合格したコントロール数 / 評価したコントロール数) × 100

スコアの目安:
  90%以上: 良好
  70-89%:  改善が必要
  70%未満: 要緊急対応

スコア向上の優先順位:
  1. CRITICALのFindingを解消
  2. HIGHのFindingを解消
  3. MFAの強制、rootキーの削除等の基本的な対策

試験頻出ポイント

  • Security HubはAWSサービスからFindingを集約するサービス(直接検出はしない)
  • マルチアカウント管理はOrganizations委任管理者から一括設定
  • 自動修復にはEventBridge + Lambdaを使う
  • FSBP(AWS基盤セキュリティベストプラクティス)がデフォルトの推奨基準
  • クロスリージョン集約でリージョン横断のセキュリティ管理が可能

まとめ

Security Hubはセキュリティの「見える化」基盤だ。GuardDuty・Inspector・Macieの検出結果を一箇所で管理し、コンプライアンス基準への準拠状況を継続的にモニタリングできる。EventBridgeとの連携で検出から修復までを自動化することが推奨される。