1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

構築前レビューでAWS Security Hub CSPM のセキュリティ標準を活用しよう(前編)

1
Last updated at Posted at 2026-02-06

はじめに

2025年12月24日の AWS Security Hub CSPM のコントロールを構築前に活用する with Kiro CLI の投稿では、Security Hub CSPMのコントロールを使って設計資料をレビューする基本的な活用方法をご紹介しました。

今回は、この手法を深耕して、「構築前レビューに、Security Hub CSPM の様々なセキュリティ標準を活用する」という次のステップについて解説します。

前編、後編で分けて記載します。

前編では、Security Hub CSPM の様々なセキュリティ標準を取得する方法について詳しく解説します。

後編では、取得した様々な Security Hub CSPM のセキュリティ標準を使って、Kiro CLI でセキュリティ標準の範囲での設計段階でレビューを行います。
セキュリティ標準の範囲を変えてみた時に、Kiro CLI がどういう挙動をするかを確認し、複数のレビューの仕方を実施してレビュー品質を高める工夫を行います。

それでは前編で、Security Hub CSPM の様々なセキュリティ標準を取得していきましょう。
まず、Security Hub CSPM が利用できるセキュリティ標準についてから解説を始めていきましょう。


1. AWS Security Hub CSPM とは

CSPM(Cloud Security Posture Management)は、クラウド環境のセキュリティ設定を継続的に監視・評価する仕組みです。AWS Security Hub の CSPM 機能では、以下のような価値を提供します。

▼提供する価値

  • 設定ミスの早期発見: リソース作成時点でのセキュリティ設定チェック
  • コンプライアンス対応: 業界標準への準拠状況の可視化
  • 継続的な監視: 設定変更時の自動チェック

2. Security Hub CSPM で利用可能なセキュリティ標準

Security Hub CSPM では、以下のような業界標準が利用できます。

▼主要な標準

  • AWS Foundational Security Best Practices: AWSが推奨するセキュリティベストプラクティスおよびベースライン
  • CIS AWS Foundations Benchmark: CIS(Center for Internet Security)が定めるAWS環境向けの業界標準
  • PCI DSS: クレジットカード業界のデータセキュリティ標準
  • NIST SP 800-53: 米国連邦政府機関向けのセキュリティ管理基準
  • NIST SP 800-171: 米国政府と取引する組織向けのセキュリティ要求事項

本稿では、この標準を設計時のレビューの観点で活用していく手法を解説していきます。

実際にどういう標準があるかを確認/参照するには、Security Hub CSPM の有効化と、標準の有効化が必要になります。コントロールの取得だけであれば Security Hub CSPM の有効化 は不要ですが、標準を参照するにはこれから説明するステップが必要になります。

以下では、Security Hub CSPM 有効化から標準別の コントロールID一覧 生成までの一連のスクリプトを記載します。

3. Security Hub CSPM の標準の情報取得

3.1 Security Hub CSPM の有効化

以下の処理では、Security Hubサービスの状態を確認し、無効の場合は有効化していきます。

留意事項: Security Hub CSPM は、有効化しても問題ないアカウントで実施してください。

まず、Security Hub CSPM のサービスの状態を確認します。無効化されている場合、InvalidAccessException エラーが出力されます。

Security Hub CSPMの状況確認
$ aws securityhub describe-hub --region "${AWS_REGION}"

An error occurred (InvalidAccessException) when calling the DescribeHub operation: Account 123456789012 is not subscribed to AWS Security Hub

次に、Security Hub CSPM サービスを有効化します。その後、再度状態を確認します。有効化されたため、エラーが出なくなり、jsonが返ってきました。

Security Hub CSPMの有効化
$ aws securityhub enable-security-hub --region "${AWS_REGION}"
$ aws securityhub describe-hub --region "${AWS_REGION}"
{
    "HubArn": "arn:aws:securityhub:us-east-1:123456789012:hub/default",
    "SubscribedAt": "2026-01-27T03:33:30.752Z",
    "AutoEnableControls": true,
    "ControlFindingGenerator": "SECURITY_CONTROL"
}
$

3.2 セキュリティ標準の有効化

ここでは、Security Hub CSPM で利用可能なすべてのセキュリティ標準を取得し、各標準を有効化します。

留意事項:

  • 各セキュリティ標準の有効化は、
    有効化しても問題ない AWSアカウント で実施してください。
  • 必要に応じて、標準ごとに有効化する/しないと選択する処理を追加してください。

各標準の状態を確認します。
Security Hub CPSM の有効化直後では、以下の標準が有効化されています。
  • AWS Foundational Security Best Practices v1.0.0
  • CIS AWS Foundations Benchmark v1.2.0
各標準の状態の一覧(Security Hub CPSM 有効化直後)
$ aws securityhub get-enabled-standards
{
    "StandardsSubscriptions": [
        {
            "StandardsSubscriptionArn": "arn:aws:securityhub:us-east-1:123456789012:subscription/cis-aws-foundations-benchmark/v/1.2.0",
            "StandardsArn": "arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0",
            "StandardsInput": {},
            "StandardsStatus": "INCOMPLETE",
            "StandardsControlsUpdatable": "READY_FOR_UPDATES",
            "StandardsStatusReason": {
                "StatusReasonCode": "NO_AVAILABLE_CONFIGURATION_RECORDER"
            }
        },
        {
            "StandardsSubscriptionArn": "arn:aws:securityhub:us-east-1:123456789012:subscription/aws-foundational-security-best-practices/v/1.0.0",
            "StandardsArn": "arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0",
            "StandardsInput": {},
            "StandardsStatus": "INCOMPLETE",
            "StandardsControlsUpdatable": "READY_FOR_UPDATES",
            "StandardsStatusReason": {
                "StatusReasonCode": "NO_AVAILABLE_CONFIGURATION_RECORDER"
            }
        }
    ]
}
$ 

標準の Amazon Resource Name(ARN)のみを出力してみます。

各標準の状態の一覧(Security Hub CPSM 有効化直後、標準のARNのみ --query で絞り込み)
$ aws securityhub get-enabled-standards \
  --query 'StandardsSubscriptions[*].[StandardsArn, StandardsStatus]' \
  --output table
-------------------------------------------------------------------------------------------------------------
|                                            GetEnabledStandards                                            |
+---------------------------------------------------------------------------------------------+-------------+
|  arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0                        |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0  |  INCOMPLETE |
+---------------------------------------------------------------------------------------------+-------------+
$

次に、以下の流れで、Security Hub CPSM のすべての標準を有効化します。

  1. aws securityhub describe-standards で、
    すべてのセキュリティ標準の ARN を取得します。
  2. 取得した ARN に対して、ARN に 12桁のAWSアカウントを付与します。
  3. aws securityhub get-enabled-standards で有効化状態を確認します。
  4. 無効の場合、aws securityhub batch-enable-standards で有効化します。
  5. aws securityhub get-enabled-standards で有効化状態を確認します。

まず、aws securityhub describe-standards の出力結果を 1件見てみます。
出力結果には、この標準の ARN や、名称、説明等が含まれています。

セキュリティ標準の説明
$ aws securityhub describe-standards --query 'Standards[9]'
{
    "StandardsArn": "arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1",
    "Name": "PCI DSS v4.0.1",
    "Description": "The Payment Card Industry Data Security Standard (PCI DSS) v4.0.1 is an information security standard for entities that store, process, and/or transmit cardholder data. This Security Hub standard automatically checks for your compliance readiness against a subset of PCI DSS V4.0.1 requirements.",
    "EnabledByDefault": false,
    "StandardsManagedBy": {
        "Company": "AWS",
        "Product": "Security Hub"
    }
}
$ 

ここから、aws securityhub describe-standards で ARN のみを抽出し、ARN に対して AWSアカウントの12桁の番号を付与します。

セキュリティ標準から ARNを抽出
$ aws securityhub describe-standards \
    --query "Standards[9].StandardsArn" --output text
arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1
$ 
$ export AWS_ACCOUNT=123456789012
$ aws securityhub describe-standards \
    --query "Standards[9].StandardsArn" --output text \
    | sed "s/::/:${AWS_ACCOUNT}:/g"
arn:aws:securityhub:us-east-1:123456789012:standards/pci-dss/v/4.0.1
$ 

取得した ARN にAWSアカウントの12桁の番号を付与したもので、現状を確認します。
aws securityhub get-enabled-standards で、以下の通り、何も出力されないことで、
有効化されていないことがわかります。

セキュリティ標準の設定状況
$ aws securityhub get-enabled-standards \
  --region "${AWS_REGION}" \
  --standards-subscription-arn "arn:aws:securityhub:us-east-1:123456789012:standards/pci-dss/v/4.0.1"
{
    "StandardsSubscriptions": []
}

aws securityhub batch-enable-standards で、取得したセキュリティ標準を有効化します。

セキュリティ標準の有効化
$ aws securityhub batch-enable-standards \
  --region "${AWS_REGION}" \
  --standards-subscription-requests "[{\"StandardsArn\":\"arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1\"}]"
{
    "StandardsSubscriptions": [
        {
            "StandardsSubscriptionArn": "arn:aws:securityhub:us-east-1:123456789012:subscription/pci-dss/v/4.0.1",
            "StandardsArn": "arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1",
            "StandardsInput": {},
            "StandardsStatus": "PENDING",
            "StandardsControlsUpdatable": "NOT_READY_FOR_UPDATES"
        }
    ]
}
$ 

取得した ARN にAWSアカウントの12桁の番号を付与したもので、現状を確認します。
aws securityhub get-enabled-standards で、以下の通り、設定状況が出力されたことで、
有効化されたことがわかります。

セキュリティ標準の設定状況
$ aws securityhub get-enabled-standards \
    --region "${AWS_REGION}" \
    --standards-subscription-arn "arn:aws:securityhub:us-east-1:123456789012:standards/pci-dss/v/4.0.1"
{
    "StandardsSubscriptions": [
        {
            "StandardsSubscriptionArn": "arn:aws:securityhub:us-east-1:123456789012:subscription/pci-dss/v/4.0.1",
            "StandardsArn": "arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1",
            "StandardsInput": {},
            "StandardsStatus": "INCOMPLETE",
            "StandardsControlsUpdatable": "READY_FOR_UPDATES",
            "StandardsStatusReason": {
                "StatusReasonCode": "NO_AVAILABLE_CONFIGURATION_RECORDER"
            }
        }
    ]
}
$ 

以上の流れで、セキュリティ標準を有効化することができます。
ここで、一括ですべてのセキュリティ標準を有効化するスクリプト例を記載します。

すべての標準を有効化するスクリプト例
#!/bin/bash

echo "=== すべてのセキュリティ標準のARNを取得 ==="
STANDARD_LIST=$(
  aws securityhub describe-standards \
    --region "${AWS_REGION}" \
    --query "Standards[*].StandardsArn" \
    --output text
)

echo ""
echo "=== 有効/無効をチェックし、無効なら有効化します ==="
for STANDARD in ${STANDARD_LIST}; do

  #
  # セキュリティ標準のARNに、このアカウントを付加
  # 例: arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1
  #  → arn:aws:securityhub:us-east-1:<ACCOUNT_ID>:standards/pci-dss/v/4.0.1
  STANDARD_FOR_THIS_ACCOUNT=$(echo "${STANDARD}" | sed "s/::/:${AWS_ACCOUNT}:/g")

  echo "----------------------------------"
  echo "対象スタンダード: ${STANDARD}"
  echo "このアカウント用: ${STANDARD_FOR_THIS_ACCOUNT}"

  # 無効のときは StandardsSubscriptions が空配列になる想定。
  # --output text で値が存在しない場合は空 or "None" になるため両方ケア。
  SUB_ARN=$(
    aws securityhub get-enabled-standards \
      --region "${AWS_REGION}" \
      --standards-subscription-arn "${STANDARD_FOR_THIS_ACCOUNT}" \
      --query 'StandardsSubscriptions[0].StandardsSubscriptionArn' \
      --output text 2>/dev/null || true
  )

  if [ -z "${SUB_ARN}" ] || [ "${SUB_ARN}" = "None" ]; then
    echo "→ 無効と判定。有効化します。"
    set -x
    aws securityhub batch-enable-standards \
      --region "${AWS_REGION}" \
      --standards-subscription-requests "[{\"StandardsArn\":\"${STANDARD}\"}]"
    set +x
  fi

  sleep 10
  echo ""
  echo "----"
  echo "有効化状況を出力します。"
  set -x
  aws securityhub get-enabled-standards \
    --region "${AWS_REGION}" \
    --standards-subscription-arn "${STANDARD_FOR_THIS_ACCOUNT}" \
    --query 'StandardsSubscriptions[0].StandardsSubscriptionArn' \
    --output text 2>/dev/null || true
  set +x

  echo ""
done

上記のスクリプトを実行します。
各標準の状態を確認します。
初期の2つに加え、全体で以下の標準が有効化されました。
  • AWS Foundational Security Best Practices v1.0.0 (初期で有効の標準)
  • AWS Resource Tagging Standard v1.0.0
  • CIS AWS Foundations Benchmark v1.2.0 (初期で有効の標準)
  • CIS AWS Foundations Benchmark v1.4.0
  • CIS AWS Foundations Benchmark v3.0.0
  • CIS AWS Foundations Benchmark v5.0.0
  • NIST Special Publication 800-171 Revision 2
  • NIST Special Publication 800-53 Revision 5
  • PCI DSS v3.2.1
  • PCI DSS v4.0.1
各標準の状態の一覧(Security Hub CPSM 有効化直後)
$ aws securityhub get-enabled-standards \
  --query 'StandardsSubscriptions[*].[StandardsArn, StandardsStatus]' \
  --output table
-------------------------------------------------------------------------------------------------------------
|                                            GetEnabledStandards                                            |
+---------------------------------------------------------------------------------------------+-------------+
|  arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark/v/1.2.0                        |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/aws-foundational-security-best-practices/v/1.0.0  |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/aws-resource-tagging-standard/v/1.0.0             |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/cis-aws-foundations-benchmark/v/1.4.0             |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/cis-aws-foundations-benchmark/v/3.0.0             |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/cis-aws-foundations-benchmark/v/5.0.0             |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/nist-800-171/v/2.0.0                              |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/nist-800-53/v/5.0.0                               |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/pci-dss/v/3.2.1                                   |  INCOMPLETE |
|  arn:aws:securityhub:us-east-1::standards/pci-dss/v/4.0.1                                   |  INCOMPLETE |
+---------------------------------------------------------------------------------------------+-------------+
$

3.3 Security Hub CSPM のコントロール一覧を複数のパターンで出力

この処理では、スクリプトで、Security Hubのコントロール情報を複数の形式で出力し、標準別のコントロールIDファイルを生成します。全コントロール、有効コントロール、標準別コントロールなど、用途に応じた分類を行い、後続のレビュー処理で活用できる形式で保存します。

スクリプトを以下に記載します。スクリプトの記載の後、主要な処理を解説します。

Security Hub CSPM のコントロール一覧を複数のパターンで出力するスクリプト
LOG_DATE=$(date +%Y%m%d-%H%M%S)
LOG_FILE1="../standards/Security-Hub-Controls-All-Controls.${LOG_DATE}.log" # Security Hubのコントロール一覧
LOG_FILE2="../standards/Security-Hub-Controls-in-Standards.${LOG_DATE}.log" # 全スタンダードのコントロール一覧
MAP_FILE="../standards/Security-Hub-Controls.${LOG_DATE}.mapping.log" # コントロールID x 標準マップ
FILE_HEAD="../standards/Security-Hub-ControlIDs"
FILE_NAME1="1.ALL"                           # すべてのコントロールID
FILE_NAME2="2.Availables"                    # 有効なコントロールID
FILE_NAME3="3.UnAvailables"                  # 無効なコントロールID
FILE_NAME4="4.Availables_inside_Standards"   # スタンダードに含まれるコントロールID
FILE_NAME5="5.Availables_outside_Standards"  # スタンダードに含まれない有効なコントロールID
AWS_REGION="us-east-1"

# 格納先ディレクトリ作成
mkdir -p ../standards

set -x
###########################################################################################
# Security Hubのコントロール一覧を出力
# コントロールID|重要度|有効/無効|タイトル|説明|説明URL を抽出
# - 重要度:CRITICAL HIGH MEDIUM LOW
# - 有効:AVAILABLE
# - 無効:UNAVAILABLE
###########################################################################################
aws securityhub list-security-control-definitions --region "${AWS_REGION}" \
  | sed 's/\\n/##LF##/g' \
  | jq -r '.SecurityControlDefinitions[] | "\(.SecurityControlId)|\(.SeverityRating)|\(.CurrentRegionAvailability)|\(.Title)|\(.Description)|\(.RemediationUrl)"' \
  | sort \
  >> "${LOG_FILE1}"

###########################################################################################
# 全スタンダードのコントロール一覧を出力
# スタンダード名|コントロールID|重要度|有効/無効|無効の場合の理由|タイトル|説明|説明URL を抽出
###########################################################################################
for STD_SUB_ARN in $(aws securityhub get-enabled-standards --region "${AWS_REGION}" --query 'StandardsSubscriptions[*].StandardsSubscriptionArn' --output text); do

# ARNからセキュリティスタンダード名の固有部分を抽出(:区切りで6フィールド目以降)
STD_SUB_ARN2=$(echo "${STD_SUB_ARN}" | cut -d':' -f6- | sed 's/subscription.//g' )

# Security Hubのスタンダードの定義から、
# スタンダード名|コントロールID|重要度|有効/無効|無効の場合の理由|タイトル|説明|説明URL を抽出
# Excel資料に読み込む時には、テキストを | 区切りで読み込み、##LF## を Ctrl+J で置換する
aws securityhub describe-standards-controls --region "${AWS_REGION}" --standards-subscription-arn "${STD_SUB_ARN}" \
  | sed 's/\\n/##LF##/g' \
  | jq -r --arg Standard "$STD_SUB_ARN2" '.Controls[] | "\($Standard)|\(.ControlId)|\(.SeverityRating)|\(.ControlStatus)|\(.DisabledReason)|\(.Title)|\(.Description)|\(.RemediationUrl)"' \
  | sort \
  >> "${LOG_FILE2}"
done

###########################################################################################
# コントロールIDを保存
###########################################################################################
# すべてのコントロールIDを取得して保存
cat \
  "${LOG_FILE1}" | cut -d'|' -f1 | sort \
  > "${FILE_HEAD}_${FILE_NAME1}.${LOG_DATE}.log"

# 有効なコントロールIDを取得して保存
grep -v "|UNAVAILABLE|" \
  "${LOG_FILE1}" | cut -d'|' -f1 | sort \
  > "${FILE_HEAD}_${FILE_NAME2}.${LOG_DATE}.log"

# 無効なコントロールIDを取得して保存
grep    "|UNAVAILABLE|" \
  "${LOG_FILE1}" | cut -d'|' -f1 | sort \
  > "${FILE_HEAD}_${FILE_NAME3}.${LOG_DATE}.log"

# スタンダードに含まれるコントロールIDを取得して保存
cat \
  "${LOG_FILE2}" | cut -d'|' -f8 | cut -d'/' -f6 | sort | uniq \
  > "${FILE_HEAD}_${FILE_NAME4}.${LOG_DATE}.log"

# スタンダードに含まれない有効なコントロールIDを取得して保存
comm -3 \
  "${FILE_HEAD}_${FILE_NAME2}.${LOG_DATE}.log" \
  "${FILE_HEAD}_${FILE_NAME4}.${LOG_DATE}.log" \
  > "${FILE_HEAD}_${FILE_NAME5}.${LOG_DATE}.log"

# スタンダードごとにコントロールIDを取得して保存
for STANDARD in `cat ${LOG_FILE2} | cut -d'|' -f1 | sort| uniq`
do

  # ログ用にスタンダード名の "/" を "_" に置換
  STANDARD2=$(echo -e ${STANDARD} | sed 's#/#_#g')

  # スタンダードに対するコントロールIDを抽出してファイルに保存
  grep ${STANDARD} \
    ${LOG_FILE2} | cut -d'|' -f8 | cut -d'/' -f6 | sort \
    > "${FILE_HEAD}_${STANDARD2}.${LOG_DATE}.log"
done

###########################################################################################
# コントロールID、スタンダード、リスクのマッピング表を出力
###########################################################################################
cat "${LOG_FILE2}" | perl mapping-Controls-and-Standards.pl > ${MAP_FILE}

スクリプトのうち、主要な処理を解説します。

スクリプトではまず、aws securityhub list-security-control-definitions で、Security Hubのコントロール一覧を出力しています。

Security Hubのコントロール一覧を出力
$ aws securityhub list-security-control-definitions \
  --query "SecurityControlDefinitions[0]"
{
    "SecurityControlId": "ACM.1",
    "Title": "Imported and ACM-issued certificates should be renewed after a specified time period",
    "Description": "This control checks whether an AWS Certificate Manager (ACM) certificate is renewed within the specified time period. It checks both imported certificates and certificates provided by ACM. The control fails if the certificate isn't renewed within the specified time period. Unless you provide a custom parameter value for the renewal period, Security Hub uses a default value of 30 days.",
    "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation",
    "SeverityRating": "MEDIUM",
    "CurrentRegionAvailability": "AVAILABLE",
    "CustomizableProperties": [
        "Parameters"
    ]
}
$ 

上記の情報から、jqコマンドで以下の情報を抽出し、"|" 区切りの形式に変換します。

項目 内容
.SecurityControlId コントロールID
.SeverityRating 重要度
.CurrentRegionAvailability 有効/無効
.Title タイトル
.Description 説明
.RemediationUrl 説明URL
Security Hubのコントロール一覧を出力
$ aws securityhub list-security-control-definitions | jq -r '.SecurityControlDefinitions[0] | "\(.SecurityControlId)|\(.SeverityRating)|\(.CurrentRegionAvailability)|\(.Title)|\(.Description)|\(.RemediationUrl)"'
ACM.1|MEDIUM|AVAILABLE|Imported and ACM-issued certificates should be renewed after a specified time period|This control checks whether an AWS Certificate Manager (ACM) certificate is renewed within the specified time period. It checks both imported certificates and certificates provided by ACM. The control fails if the certificate isn't renewed within the specified time period. Unless you provide a custom parameter value for the renewal period, Security Hub uses a default value of 30 days.|https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation
$ 

セキュリティ標準を取得します。この後の処理で、セキュリティ標準ごとに情報を抽出する際に使用します。

Security Hubのセキュリティ標準を取得
$ STD_SUB_ARN=$(aws securityhub get-enabled-standards \
  --region "${AWS_REGION}" \
  --query 'StandardsSubscriptions[9].StandardsSubscriptionArn' \
  --output text )
$ echo $STD_SUB_ARN
arn:aws:securityhub:us-east-1:123456789012:subscription/pci-dss/v/4.0.1
$ 
$ STD_SUB_ARN2=$(echo "${STD_SUB_ARN}" | cut -d':' -f6- | sed 's/subscription.//g' )
$ echo $STD_SUB_ARN2
pci-dss/v/4.0.1
$ 

どのセキュリティ標準にどのコントロールが含まれるかを、aws securityhub describe-standards-controls で取得します。

Security Hubのセキュリティ標準とコントロールの関係を含む
$ aws securityhub describe-standards-controls \
  --region "${AWS_REGION}" \
  --standards-subscription-arn "${STD_SUB_ARN}" \
  | sed 's/\\n/##LF##/g' \
  | jq -r --arg Standard "$STD_SUB_ARN2" '.Controls[0]'
{
  "StandardsControlArn": "arn:aws:securityhub:us-east-1:123456789012:control/pci-dss/v/4.0.1/ACM.1",
  "ControlStatus": "ENABLED",
  "ControlStatusUpdatedAt": "2026-02-03T13:17:44.655000+00:00",
  "ControlId": "ACM.1",
  "Title": "Imported and ACM-issued certificates should be renewed after a specified time period",
  "Description": "This control checks whether an AWS Certificate Manager (ACM) certificate is renewed within the specified time period. It checks both imported certificates and certificates provided by ACM. The control fails if the certificate isn't renewed within the specified time period. Unless you provide a custom parameter value for the renewal period, Security Hub uses a default value of 30 days.",
  "RemediationUrl": "https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation",
  "SeverityRating": "MEDIUM",
  "RelatedRequirements": [
    "PCI DSS v4.0.1/4.2.1"
  ]
}
$ 

上記の情報から、jqコマンドで以下の情報を抽出し、"|" 区切りの形式に変換します。

項目 内容
セキュリティ標準名 (直接設定)
.ControlId コントロールID
.SeverityRating 重要度
.ControlStatus 有効/無効
.DisabledReason 無効の場合の理由
.Title タイトル
.Description 説明
.RemediationUrl 説明URL
Security Hubのセキュリティ標準とコントロールの関係を含む
$ aws securityhub describe-standards-controls \
  --region "${AWS_REGION}" \
  --standards-subscription-arn "${STD_SUB_ARN}" \
  | sed 's/\\n/##LF##/g' \
  | jq -r \
    --arg Standard "$STD_SUB_ARN2" \
  '.Controls[0] | "\($Standard)|\(.ControlId)|\(.SeverityRating)|\(.ControlStatus)|\(.DisabledReason)|\(.Title)|\(.Description)|\(.RemediationUrl)"'
pci-dss/v/4.0.1|ACM.1|MEDIUM|ENABLED|null|Imported and ACM-issued certificates should be renewed after a specified time period|This control checks whether an AWS Certificate Manager (ACM) certificate is renewed within the specified time period. It checks both imported certificates and certificates provided by ACM. The control fails if the certificate isn't renewed within the specified time period. Unless you provide a custom parameter value for the renewal period, Security Hub uses a default value of 30 days.|https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation
$ 

実行結果の例

上記のスクリプトを実行すると、以下のファイルが生成されます。
これらのどのセキュリティ標準にどのコントロールIDが含まれるかを示すファイル群を使うことで、構築前レビューで、レビュー範囲の絞り込みを行うことが可能になります。

出力されるファイル ファイル内容
Security-Hub-ControlIDs_
1.ALL.*.log
すべてのコントロールID
Security-Hub-ControlIDs_
2.Availables.*.log
有効なコントロールID
Security-Hub-ControlIDs_
3.UnAvailables.*.log
無効なコントロールID
Security-Hub-ControlIDs_
4.Availables_inside_Standards.*.log
スタンダードに含まれるコントロールID
Security-Hub-ControlIDs_
5.Availables_outside_Standards.*.log
スタンダードに含まれない有効なコントロールID
Security-Hub-ControlIDs_
aws-foundational-security-best-practices_v_1.0.0.*.log
標準ごとのコントロールID一覧
Security-Hub-ControlIDs_
aws-resource-tagging-standard_v_1.0.0.*.log
Security-Hub-ControlIDs_
cis-aws-foundations-benchmark_v_1.2.0.*.log
Security-Hub-ControlIDs_
cis-aws-foundations-benchmark_v_1.4.0.*.log
Security-Hub-ControlIDs_
cis-aws-foundations-benchmark_v_3.0.0.*.log
Security-Hub-ControlIDs_
cis-aws-foundations-benchmark_v_5.0.0.*.log
Security-Hub-ControlIDs_
nist-800-171_v_2.0.0.*.log
Security-Hub-ControlIDs_
nist-800-53_v_5.0.0.*.log
Security-Hub-ControlIDs_
pci-dss_v_3.2.1.*.log
Security-Hub-ControlIDs_
pci-dss_v_4.0.1.*.log
Security-Hub-Controls-All-Controls.*.log Security Hubのコントロール一覧
Security-Hub-Controls-in-Standards.*.log 全スタンダードのコントロール一覧
Security-Hub-Controls.*.mapping.log コントロールID x 標準マップ

実際の出力結果例を記載します。

実行結果の例
$ ls -l 
total 896
-rw-r--r--. 1 ssm-user ssm-user   5317 Jan 27 07:29 Security-Hub-ControlIDs_1.ALL.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   5235 Jan 27 07:29 Security-Hub-ControlIDs_2.Availables.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user     82 Jan 27 07:29 Security-Hub-ControlIDs_3.UnAvailables.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   5210 Jan 27 07:29 Security-Hub-ControlIDs_4.Availables_inside_Standards.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user     25 Jan 27 07:29 Security-Hub-ControlIDs_5.Availables_outside_Standards.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   3175 Jan 27 07:29 Security-Hub-ControlIDs_aws-foundational-security-best-practices_v_1.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   1364 Jan 27 07:29 Security-Hub-ControlIDs_aws-resource-tagging-standard_v_1.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    410 Jan 27 07:29 Security-Hub-ControlIDs_cis-aws-foundations-benchmark_v_1.2.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    370 Jan 27 07:29 Security-Hub-ControlIDs_cis-aws-foundations-benchmark_v_1.4.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    265 Jan 27 07:29 Security-Hub-ControlIDs_cis-aws-foundations-benchmark_v_3.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    284 Jan 27 07:29 Security-Hub-ControlIDs_cis-aws-foundations-benchmark_v_5.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    590 Jan 27 07:29 Security-Hub-ControlIDs_nist-800-171_v_2.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   2587 Jan 27 07:29 Security-Hub-ControlIDs_nist-800-53_v_5.0.0.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user    356 Jan 27 07:29 Security-Hub-ControlIDs_pci-dss_v_3.2.1.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user   1219 Jan 27 07:29 Security-Hub-ControlIDs_pci-dss_v_4.0.1.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user 255930 Jan 27 07:29 Security-Hub-Controls-All-Controls.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user 545949 Jan 27 07:29 Security-Hub-Controls-in-Standards.20260127-072924.log
-rw-r--r--. 1 ssm-user ssm-user  34393 Jan 27 07:29 Security-Hub-Controls.20260127-072924.mapping.log
$ 
$ head -1 Security-Hub-Controls-All-Controls.20260127-072924.log
ACM.1|MEDIUM|AVAILABLE|Imported and ACM-issued certificates should be renewed after a specified time period|This control checks whether an AWS Certificate Manager (ACM) certificate is renewed within the specified time period. It checks both imported certificates and 
certificates provided by ACM. The control fails if the certificate isn’t renewed within the specified time period. Unless you provide a custom parametervalue for the renewal period, Security Hub uses a default value of 30 days.|https://docs.aws.amazon.com/console/securityhub/ACM.1/remediation
$ 
$ head -1 Security-Hub-Controls-in-Standards.20260127-072924.log
cis-aws-foundations-benchmark/v/1.2.0|CIS.1.10|LOW|ENABLED|null|Ensure IAM password policy prevents password reuse|IAM password policies can prevent the reuse of a given password by the same user. It is recommended that the password policy prevent the reuse of passwords.|https://docs.aws.amazon.com/console/securityhub/IAM.16/remediation
$ 
$ fgrep -f Security-Hub-ControlIDs_5.Availables_outside_Standards.20260127-072924.log Security-Hub-Controls-All-Controls.20260127-072924.log | cut -d'|' -f1-4
EC2.22|MEDIUM|AVAILABLE|Unused EC2 security groups should be removed
RDS.18|HIGH|AVAILABLE|RDS instances should be deployed in a VPC
Redshift.9|MEDIUM|AVAILABLE|Redshift clusters should not use the default database name
$ 

すべての有効なコントロールIDを、スタンダードに含まれない有効なコントロールIDを取得して保存したファイル Security-Hub-ControlIDs_5.Availables_outside_Standards.*.log で fgrep して、スタンダードに含まれない有効なコントロールIDを抽出したりもできます。
2026年1月29日時点では、Amazon EC2用のコントロールEC2.22、Amazon RDS用のコントロールRDS.18、Amazon Redshift用のコントロール Redshift.9 は、標準には組み込まれていないようですね。Redshift.9 は、AWS Security Hub ユーザーガイドに記載もありませんでした。


3.4 Security Hub標準とコントロール、リスクのマッピング表

3.3 のスクリプトの最後では、各標準とコントロールの関係性を可視化するために、各標準とコントロールIDをマッピングするスクリプトを実行しています。
マッピングスクリプトの実行例を抜粋して紹介します。

このスクリプトにより、どのコントロールがどの標準に含まれているかを、より俯瞰的に理解することが可能になります。

基本的にはセキュリティ標準を使うが、ここのコントロールも必要に応じて確認するようにしていきたい、といった用途で、活用できるでしょう。

Security Hub標準とコントロール、リスクのマッピング表(抜粋版)
$ cat Security-Hub-Controls.20260127-072924.mapping.log

▼Standard
01:aws-foundational-security-best-practices/v/1.0.0
02:aws-resource-tagging-standard/v/1.0.0
03:cis-aws-foundations-benchmark/v/1.2.0
04:cis-aws-foundations-benchmark/v/1.4.0
05:cis-aws-foundations-benchmark/v/3.0.0
06:cis-aws-foundations-benchmark/v/5.0.0
07:nist-800-171/v/2.0.0
08:nist-800-53/v/5.0.0
09:pci-dss/v/3.2.1
10:pci-dss/v/4.0.1

▼Standards/Rules対応表
Risk    |Rules: Standards    |01|02|03|04|05|06|07|08|09|10|
MEDIUM  |ACM.1               | o|  |  |  |  |  | o| o|  | o|
HIGH    |ACM.2               | o|  |  |  |  |  |  |  |  | o|
LOW     |ACM.3               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |APIGateway.1        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.2        | o|  |  |  |  |  | o| o|  |  |
(~~~~~~~~~~~~~略~~~~~~~~~~~~~~~~~)
MEDIUM  |WAF.10              | o|  |  |  |  |  |  | o|  |  |
LOW     |WAF.11              |  |  |  |  |  |  |  | o|  | o|
MEDIUM  |WAF.12              | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |WorkSpaces.1        | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |WorkSpaces.2        | o|  |  |  |  |  |  |  |  |  |

▼Risk Count
CRITICAL  : 29
HIGH      : 66
MEDIUM    : 257
LOW       : 203
ALL       : 555
$

また、定期的にこのスクリプトを実行しておくと、前回の実行と今回での差分で、どんなコントロールIDが追加されたかを追跡することも可能です。

マッピングスクリプトと、マッピングスクリプトの実行結果の全文も掲載します。

Security Hub標準とコントロール、リスクのマッピング表(全件表示)
 ※クリックして展開
Security Hub標準とコントロール、リスクのマッピング表
$ cat Security-Hub-Controls.20260127-072924.mapping.log

▼Standard
01:aws-foundational-security-best-practices/v/1.0.0
02:aws-resource-tagging-standard/v/1.0.0
03:cis-aws-foundations-benchmark/v/1.2.0
04:cis-aws-foundations-benchmark/v/1.4.0
05:cis-aws-foundations-benchmark/v/3.0.0
06:cis-aws-foundations-benchmark/v/5.0.0
07:nist-800-171/v/2.0.0
08:nist-800-53/v/5.0.0
09:pci-dss/v/3.2.1
10:pci-dss/v/4.0.1

▼Standards/Rules対応表
Risk    |Rules: Standards    |01|02|03|04|05|06|07|08|09|10|
MEDIUM  |ACM.1               | o|  |  |  |  |  | o| o|  | o|
HIGH    |ACM.2               | o|  |  |  |  |  |  |  |  | o|
LOW     |ACM.3               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |APIGateway.1        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.2        | o|  |  |  |  |  | o| o|  |  |
LOW     |APIGateway.3        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.4        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.5        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.8        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |APIGateway.9        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |Account.1           | o|  |  |  | o| o|  | o|  |  |
HIGH    |Account.2           |  |  |  |  |  |  |  | o|  |  |
LOW     |Amplify.1           |  | o|  |  |  |  |  |  |  |  |
LOW     |Amplify.2           |  | o|  |  |  |  |  |  |  |  |
LOW     |AppConfig.1         |  | o|  |  |  |  |  |  |  |  |
LOW     |AppConfig.2         |  | o|  |  |  |  |  |  |  |  |
LOW     |AppConfig.3         |  | o|  |  |  |  |  |  |  |  |
LOW     |AppConfig.4         |  | o|  |  |  |  |  |  |  |  |
LOW     |AppFlow.1           |  | o|  |  |  |  |  |  |  |  |
LOW     |AppRunner.1         |  | o|  |  |  |  |  |  |  |  |
LOW     |AppRunner.2         |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |AppSync.1           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |AppSync.2           | o|  |  |  |  |  |  |  |  | o|
LOW     |AppSync.4           |  | o|  |  |  |  |  |  |  |  |
HIGH    |AppSync.5           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |AppSync.6           | o|  |  |  |  |  |  |  |  |  |
LOW     |Athena.2            |  | o|  |  |  |  |  |  |  |  |
LOW     |Athena.3            |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Athena.4            | o|  |  |  |  |  |  |  |  |  |
LOW     |AutoScaling.1       | o|  |  |  |  |  |  | o| o|  |
MEDIUM  |AutoScaling.2       | o|  |  |  |  |  |  | o|  |  |
HIGH    |AutoScaling.3       | o|  |  |  |  |  |  | o|  | o|
HIGH    |AutoScaling.5       | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |AutoScaling.6       | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |AutoScaling.9       | o|  |  |  |  |  |  | o|  |  |
LOW     |AutoScaling.10      |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Backup.1            | o|  |  |  |  |  |  | o|  |  |
LOW     |Backup.2            |  | o|  |  |  |  |  |  |  |  |
LOW     |Backup.3            |  | o|  |  |  |  |  |  |  |  |
LOW     |Backup.4            |  | o|  |  |  |  |  |  |  |  |
LOW     |Backup.5            |  | o|  |  |  |  |  |  |  |  |
LOW     |Batch.1             |  | o|  |  |  |  |  |  |  |  |
LOW     |Batch.2             |  | o|  |  |  |  |  |  |  |  |
LOW     |Batch.3             |  | o|  |  |  |  |  |  |  |  |
LOW     |Batch.4             |  | o|  |  |  |  |  |  |  |  |
LOW     |CloudFormation.2    |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |CloudFormation.3    | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |CloudFormation.4    | o|  |  |  |  |  |  |  |  |  |
HIGH    |CloudFront.1        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |CloudFront.3        | o|  |  |  |  |  |  | o|  | o|
LOW     |CloudFront.4        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |CloudFront.5        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |CloudFront.6        | o|  |  |  |  |  |  | o|  | o|
LOW     |CloudFront.7        | o|  |  |  |  |  | o| o|  |  |
LOW     |CloudFront.8        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |CloudFront.9        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |CloudFront.10       | o|  |  |  |  |  | o| o|  | o|
HIGH    |CloudFront.12       | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |CloudFront.13       | o|  |  |  |  |  |  |  |  |  |
LOW     |CloudFront.14       |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |CloudFront.15       | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |CloudFront.16       | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |CloudFront.17       | o|  |  |  |  |  |  |  |  |  |
HIGH    |CloudTrail.1        | o|  | o| o| o| o|  | o|  |  |
MEDIUM  |CloudTrail.2        | o|  | o| o| o| o| o| o| o| o|
HIGH    |CloudTrail.3        |  |  |  |  |  |  | o|  | o| o|
LOW     |CloudTrail.4        | o|  | o| o| o| o| o| o| o| o|
MEDIUM  |CloudTrail.5        | o|  | o| o|  |  |  | o| o|  |
CRITICAL|CloudTrail.6        |  |  | o| o|  |  |  |  |  | o|
LOW     |CloudTrail.7        |  |  | o| o| o| o|  |  |  | o|
LOW     |CloudTrail.9        |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |CloudTrail.10       |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |CloudWatch.1        |  |  | o| o|  |  | o|  | o|  |
LOW     |CloudWatch.2        |  |  | o|  |  |  | o|  |  |  |
LOW     |CloudWatch.3        |  |  | o|  |  |  |  |  |  |  |
LOW     |CloudWatch.4        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.5        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.6        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.7        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.8        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.9        |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.10       |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.11       |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.12       |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.13       |  |  | o| o|  |  | o|  |  |  |
LOW     |CloudWatch.14       |  |  | o| o|  |  | o|  |  |  |
HIGH    |CloudWatch.15       |  |  |  |  |  |  | o| o|  |  |
MEDIUM  |CloudWatch.16       |  |  |  |  |  |  |  | o|  |  |
HIGH    |CloudWatch.17       |  |  |  |  |  |  |  | o|  |  |
LOW     |CodeArtifact.1      |  | o|  |  |  |  |  |  |  |  |
CRITICAL|CodeBuild.1         | o|  |  |  |  |  |  | o| o| o|
CRITICAL|CodeBuild.2         | o|  |  |  |  |  |  | o| o| o|
LOW     |CodeBuild.3         | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |CodeBuild.4         | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |CodeBuild.7         | o|  |  |  |  |  |  |  |  |  |
LOW     |CodeGuruProfiler.1  |  | o|  |  |  |  |  |  |  |  |
LOW     |CodeGuruReviewer.1  |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.1           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.2           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.3           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.4           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.5           | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Cognito.6           | o|  |  |  |  |  |  |  |  |  |
CRITICAL|Config.1            | o|  | o| o| o| o|  | o| o|  |
LOW     |Connect.1           |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Connect.2           | o|  |  |  |  |  |  |  |  |  |
CRITICAL|DMS.1               | o|  |  |  |  |  |  | o| o| o|
LOW     |DMS.2               |  | o|  |  |  |  |  |  |  |  |
LOW     |DMS.3               |  | o|  |  |  |  |  |  |  |  |
LOW     |DMS.4               |  | o|  |  |  |  |  |  |  |  |
LOW     |DMS.5               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |DMS.6               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.7               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.8               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.9               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.10              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.11              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.12              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DMS.13              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |DataFirehose.1      | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DataSync.1          | o|  |  |  |  |  |  |  |  |  |
LOW     |DataSync.2          |  | o|  |  |  |  |  |  |  |  |
LOW     |Detective.1         |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |DocumentDB.1        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DocumentDB.2        | o|  |  |  |  |  |  | o|  | o|
CRITICAL|DocumentDB.3        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DocumentDB.4        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |DocumentDB.5        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DocumentDB.6        | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |DynamoDB.1          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DynamoDB.2          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DynamoDB.3          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DynamoDB.4          |  |  |  |  |  |  |  | o|  |  |
LOW     |DynamoDB.5          |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |DynamoDB.6          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |DynamoDB.7          | o|  |  |  |  |  |  | o|  | o|
CRITICAL|EC2.1               | o|  |  |  |  |  |  | o| o|  |
HIGH    |EC2.2               | o|  | o| o| o| o|  | o| o|  |
MEDIUM  |EC2.3               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.4               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.6               | o|  | o| o| o| o| o| o| o|  |
MEDIUM  |EC2.7               | o|  |  | o| o| o|  | o|  |  |
HIGH    |EC2.8               | o|  |  |  | o| o|  | o|  | o|
HIGH    |EC2.9               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.10              | o|  |  |  |  |  | o| o|  |  |
LOW     |EC2.12              |  |  |  |  |  |  |  | o| o|  |
HIGH    |EC2.13              |  |  | o|  |  |  | o| o| o| o|
HIGH    |EC2.14              |  |  | o|  |  |  |  |  |  | o|
MEDIUM  |EC2.15              | o|  |  |  |  |  |  | o|  | o|
LOW     |EC2.16              | o|  |  |  |  |  | o| o|  | o|
LOW     |EC2.17              | o|  |  |  |  |  |  | o|  |  |
HIGH    |EC2.18              | o|  |  |  |  |  | o| o|  |  |
CRITICAL|EC2.19              | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |EC2.20              | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |EC2.21              | o|  |  | o| o| o| o| o|  | o|
HIGH    |EC2.23              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.24              | o|  |  |  |  |  |  | o|  |  |
HIGH    |EC2.25              | o|  |  |  |  |  |  | o|  | o|
LOW     |EC2.28              |  |  |  |  |  |  |  | o|  |  |
LOW     |EC2.33              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.34              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.35              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.36              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.37              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.38              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.39              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.40              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.41              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.42              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.43              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.44              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.45              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.46              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.47              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.48              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.49              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.50              |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.51              | o|  |  |  |  |  | o| o|  | o|
LOW     |EC2.52              |  | o|  |  |  |  |  |  |  |  |
HIGH    |EC2.53              |  |  |  |  | o| o|  |  |  | o|
HIGH    |EC2.54              |  |  |  |  | o| o|  |  |  | o|
MEDIUM  |EC2.55              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.56              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.57              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.58              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EC2.60              | o|  |  |  |  |  |  | o|  |  |
LOW     |EC2.170             | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |EC2.171             | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |EC2.172             | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |EC2.173             | o|  |  |  |  |  |  |  |  |  |
LOW     |EC2.174             |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.175             |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.176             |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.177             |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.178             |  | o|  |  |  |  |  |  |  |  |
LOW     |EC2.179             |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |EC2.180             | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |EC2.181             | o|  |  |  |  |  |  |  |  |  |
HIGH    |EC2.182             | o|  |  |  |  |  |  |  |  |  |
HIGH    |ECR.1               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ECR.2               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ECR.3               | o|  |  |  |  |  |  | o|  |  |
LOW     |ECR.4               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |ECR.5               |  |  |  |  |  |  |  | o|  |  |
HIGH    |ECS.1               | o|  |  |  |  |  |  | o|  |  |
HIGH    |ECS.2               | o|  |  |  |  |  |  | o|  | o|
HIGH    |ECS.3               | o|  |  |  |  |  |  | o|  |  |
HIGH    |ECS.4               | o|  |  |  |  |  |  | o|  |  |
HIGH    |ECS.5               | o|  |  |  |  |  |  | o|  |  |
HIGH    |ECS.8               | o|  |  |  |  |  |  | o|  | o|
HIGH    |ECS.9               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ECS.10              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ECS.12              | o|  |  |  |  |  |  | o|  |  |
LOW     |ECS.13              |  | o|  |  |  |  |  |  |  |  |
LOW     |ECS.14              |  | o|  |  |  |  |  |  |  |  |
LOW     |ECS.15              |  | o|  |  |  |  |  |  |  |  |
HIGH    |ECS.16              | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |ECS.17              |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |ECS.18              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |ECS.19              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |ECS.20              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |ECS.21              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |EFS.1               | o|  |  |  | o| o|  | o|  |  |
MEDIUM  |EFS.2               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EFS.3               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EFS.4               | o|  |  |  |  |  |  | o|  | o|
LOW     |EFS.5               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |EFS.6               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |EFS.7               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |EFS.8               | o|  |  |  |  | o|  |  |  |  |
HIGH    |EKS.1               | o|  |  |  |  |  |  | o|  | o|
HIGH    |EKS.2               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |EKS.3               | o|  |  |  |  |  |  | o|  | o|
LOW     |EKS.6               |  | o|  |  |  |  |  |  |  |  |
LOW     |EKS.7               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |EKS.8               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ELB.1               | o|  |  |  |  |  |  | o| o|  |
MEDIUM  |ELB.2               | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |ELB.3               | o|  |  |  |  |  | o| o|  | o|
MEDIUM  |ELB.4               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ELB.5               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.6               | o|  |  |  |  |  |  | o|  |  |
LOW     |ELB.7               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.8               | o|  |  |  |  |  | o| o|  | o|
MEDIUM  |ELB.9               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.10              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.12              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ELB.13              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.14              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ELB.16              |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.17              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ELB.18              | o|  |  |  |  |  |  |  |  |  |
HIGH    |EMR.1               | o|  |  |  |  |  |  | o|  | o|
CRITICAL|EMR.2               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |EMR.3               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |EMR.4               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ES.1                | o|  |  |  |  |  |  | o| o|  |
CRITICAL|ES.2                | o|  |  |  |  |  |  | o| o| o|
MEDIUM  |ES.3                | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ES.4                | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ES.5                | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ES.6                | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ES.7                | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |ES.8                | o|  |  |  |  |  |  | o|  | o|
LOW     |ES.9                |  | o|  |  |  |  |  |  |  |  |
HIGH    |ElastiCache.1       | o|  |  |  |  |  |  | o|  |  |
HIGH    |ElastiCache.2       | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |ElastiCache.3       | o|  |  |  |  |  |  | o|  |  |
LOW     |ElasticBeanstalk.1  | o|  |  |  |  |  |  | o|  |  |
HIGH    |ElasticBeanstalk.2  | o|  |  |  |  |  |  | o|  | o|
HIGH    |ElasticBeanstalk.3  | o|  |  |  |  |  |  |  |  | o|
LOW     |EventBridge.2       |  | o|  |  |  |  |  |  |  |  |
LOW     |EventBridge.3       | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |EventBridge.4       |  |  |  |  |  |  |  | o|  |  |
LOW     |FSx.1               | o|  |  |  |  |  |  | o|  |  |
LOW     |FSx.2               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |FSx.3               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |FSx.4               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |FSx.5               | o|  |  |  |  |  |  |  |  |  |
LOW     |FraudDetector.1     |  | o|  |  |  |  |  |  |  |  |
LOW     |FraudDetector.2     |  | o|  |  |  |  |  |  |  |  |
LOW     |FraudDetector.3     |  | o|  |  |  |  |  |  |  |  |
LOW     |FraudDetector.4     |  | o|  |  |  |  |  |  |  |  |
LOW     |Glue.1              |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Glue.3              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Glue.4              | o|  |  |  |  |  |  | o|  |  |
HIGH    |GuardDuty.1         | o|  |  |  |  |  | o| o| o| o|
LOW     |GuardDuty.2         |  | o|  |  |  |  |  |  |  |  |
LOW     |GuardDuty.3         |  | o|  |  |  |  |  |  |  |  |
LOW     |GuardDuty.4         |  | o|  |  |  |  |  |  |  |  |
HIGH    |GuardDuty.5         | o|  |  |  |  |  |  |  |  |  |
HIGH    |GuardDuty.6         | o|  |  |  |  |  |  |  |  | o|
HIGH    |GuardDuty.7         | o|  |  |  |  |  |  |  |  | o|
HIGH    |GuardDuty.8         | o|  |  |  |  |  |  |  |  |  |
HIGH    |GuardDuty.9         | o|  |  |  |  |  |  |  |  | o|
HIGH    |GuardDuty.10        | o|  |  |  |  |  |  |  |  | o|
HIGH    |GuardDuty.11        | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |GuardDuty.12        | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |GuardDuty.13        | o|  |  |  |  |  |  |  |  |  |
HIGH    |IAM.1               | o|  | o| o|  |  | o| o| o|  |
LOW     |IAM.2               | o|  | o|  | o| o| o| o| o|  |
MEDIUM  |IAM.3               | o|  | o| o| o| o|  | o|  | o|
CRITICAL|IAM.4               | o|  | o| o| o| o|  | o| o|  |
MEDIUM  |IAM.5               | o|  | o| o| o| o|  | o|  | o|
CRITICAL|IAM.6               | o|  | o| o| o| o|  | o| o| o|
MEDIUM  |IAM.7               | o|  |  |  |  |  | o| o|  | o|
MEDIUM  |IAM.8               | o|  | o|  |  |  | o| o| o| o|
CRITICAL|IAM.9               |  |  | o| o| o| o|  | o| o| o|
MEDIUM  |IAM.10              |  |  |  |  |  |  | o|  | o|  |
MEDIUM  |IAM.11              |  |  | o|  |  |  | o|  |  | o|
MEDIUM  |IAM.12              |  |  | o|  |  |  | o|  |  | o|
MEDIUM  |IAM.13              |  |  | o|  |  |  | o|  |  |  |
MEDIUM  |IAM.14              |  |  | o|  |  |  | o|  |  | o|
MEDIUM  |IAM.15              |  |  | o| o| o| o| o|  |  |  |
LOW     |IAM.16              |  |  | o| o| o| o| o|  |  | o|
LOW     |IAM.17              |  |  | o|  |  |  |  |  |  | o|
LOW     |IAM.18              |  |  | o| o| o| o| o|  |  | o|
MEDIUM  |IAM.19              |  |  |  |  |  |  | o| o| o| o|
LOW     |IAM.21              | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |IAM.22              |  |  |  | o| o| o| o|  |  |  |
LOW     |IAM.23              |  | o|  |  |  |  |  |  |  |  |
LOW     |IAM.24              |  | o|  |  |  |  |  |  |  |  |
LOW     |IAM.25              |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |IAM.26              |  |  |  |  | o| o|  |  |  |  |
MEDIUM  |IAM.27              |  |  |  |  | o| o|  |  |  |  |
HIGH    |IAM.28              |  |  |  |  | o| o|  |  |  |  |
LOW     |IVS.1               |  | o|  |  |  |  |  |  |  |  |
LOW     |IVS.2               |  | o|  |  |  |  |  |  |  |  |
LOW     |IVS.3               |  | o|  |  |  |  |  |  |  |  |
HIGH    |Inspector.1         | o|  |  |  |  |  |  |  |  | o|
HIGH    |Inspector.2         | o|  |  |  |  |  |  |  |  | o|
HIGH    |Inspector.3         | o|  |  |  |  |  |  |  |  | o|
HIGH    |Inspector.4         | o|  |  |  |  |  |  |  |  | o|
LOW     |IoT.1               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoT.2               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoT.3               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoT.4               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoT.5               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoT.6               |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTEvents.1         |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTEvents.2         |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTEvents.3         |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTSiteWise.1       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTSiteWise.2       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTSiteWise.3       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTSiteWise.4       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTSiteWise.5       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTTwinMaker.1      |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTTwinMaker.2      |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTTwinMaker.3      |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTTwinMaker.4      |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTWireless.1       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTWireless.2       |  | o|  |  |  |  |  |  |  |  |
LOW     |IoTWireless.3       |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |KMS.1               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |KMS.2               | o|  |  |  |  |  |  | o|  |  |
CRITICAL|KMS.3               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |KMS.4               |  |  | o| o| o| o|  | o| o| o|
CRITICAL|KMS.5               | o|  |  |  |  |  |  |  |  |  |
LOW     |Keyspaces.1         |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Kinesis.1           | o|  |  |  |  |  |  | o|  |  |
LOW     |Kinesis.2           |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Kinesis.3           | o|  |  |  |  |  |  |  |  |  |
CRITICAL|Lambda.1            | o|  |  |  |  |  |  | o| o| o|
MEDIUM  |Lambda.2            | o|  |  |  |  |  |  | o|  | o|
LOW     |Lambda.3            |  |  |  |  |  |  |  | o| o|  |
MEDIUM  |Lambda.5            | o|  |  |  |  |  |  | o|  |  |
LOW     |Lambda.6            |  | o|  |  |  |  |  |  |  |  |
LOW     |Lambda.7            |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |MQ.2                | o|  |  |  |  |  |  | o|  | o|
LOW     |MQ.4                |  | o|  |  |  |  |  |  |  |  |
LOW     |MQ.5                |  |  |  |  |  |  |  | o|  |  |
LOW     |MQ.6                |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |MSK.1               | o|  |  |  |  |  |  | o|  | o|
LOW     |MSK.2               |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |MSK.3               | o|  |  |  |  |  |  |  |  | o|
CRITICAL|MSK.4               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |MSK.5               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |MSK.6               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |Macie.1             | o|  |  |  |  |  |  | o|  |  |
HIGH    |Macie.2             | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.1           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.2           | o|  |  |  |  |  |  | o|  | o|
CRITICAL|Neptune.3           | o|  |  |  |  |  |  | o|  | o|
LOW     |Neptune.4           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.5           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.6           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.7           | o|  |  |  |  |  |  | o|  |  |
LOW     |Neptune.8           | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Neptune.9           |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |NetworkFirewall.1   |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |NetworkFirewall.2   | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |NetworkFirewall.3   | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |NetworkFirewall.4   | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |NetworkFirewall.5   | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |NetworkFirewall.6   | o|  |  |  |  |  | o| o|  |  |
LOW     |NetworkFirewall.7   |  | o|  |  |  |  |  |  |  |  |
LOW     |NetworkFirewall.8   |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |NetworkFirewall.9   | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |NetworkFirewall.10  | o|  |  |  |  |  |  | o|  |  |
HIGH    |Opensearch.1        | o|  |  |  |  |  |  | o| o|  |
CRITICAL|Opensearch.2        | o|  |  |  |  |  |  | o| o|  |
MEDIUM  |Opensearch.3        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Opensearch.4        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Opensearch.5        | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |Opensearch.6        | o|  |  |  |  |  |  | o|  |  |
HIGH    |Opensearch.7        | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Opensearch.8        | o|  |  |  |  |  |  | o|  |  |
LOW     |Opensearch.9        |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Opensearch.10       | o|  |  |  |  |  |  | o|  | o|
LOW     |Opensearch.11       |  |  |  |  |  |  |  | o|  |  |
LOW     |PCA.1               | o|  |  |  |  |  |  | o|  |  |
LOW     |PCA.2               |  | o|  |  |  |  |  |  |  |  |
CRITICAL|RDS.1               | o|  |  |  |  |  |  | o| o|  |
CRITICAL|RDS.2               | o|  |  |  | o| o|  | o| o| o|
MEDIUM  |RDS.3               | o|  |  | o| o| o|  | o|  |  |
MEDIUM  |RDS.4               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.5               | o|  |  |  |  | o|  | o|  |  |
LOW     |RDS.6               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.7               | o|  |  |  |  |  |  | o|  |  |
LOW     |RDS.8               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.9               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |RDS.10              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.11              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.12              | o|  |  |  |  |  |  | o|  |  |
HIGH    |RDS.13              | o|  |  |  | o| o|  | o|  | o|
MEDIUM  |RDS.14              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.15              | o|  |  |  |  | o|  | o|  |  |
LOW     |RDS.16              | o|  |  |  |  |  |  | o|  |  |
LOW     |RDS.17              | o|  |  |  |  |  |  | o|  |  |
LOW     |RDS.19              | o|  |  |  |  |  |  | o|  |  |
LOW     |RDS.20              | o|  |  |  |  |  |  | o|  | o|
LOW     |RDS.21              | o|  |  |  |  |  |  | o|  | o|
LOW     |RDS.22              | o|  |  |  |  |  |  | o|  | o|
LOW     |RDS.23              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.24              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |RDS.25              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |RDS.26              |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.27              | o|  |  |  |  |  |  | o|  |  |
LOW     |RDS.28              |  | o|  |  |  |  |  |  |  |  |
LOW     |RDS.29              |  | o|  |  |  |  |  |  |  |  |
LOW     |RDS.30              |  | o|  |  |  |  |  |  |  |  |
LOW     |RDS.31              |  | o|  |  |  |  |  |  |  |  |
LOW     |RDS.32              |  | o|  |  |  |  |  |  |  |  |
LOW     |RDS.33              |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |RDS.34              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |RDS.35              | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |RDS.36              | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |RDS.37              | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |RDS.38              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RDS.39              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RDS.40              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.41              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RDS.42              | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |RDS.43              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RDS.44              | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RDS.45              | o|  |  |  |  |  |  | o|  |  |
HIGH    |RDS.46              | o|  |  |  |  |  |  |  |  |  |
LOW     |RDS.47              | o|  |  |  |  |  |  |  |  |  |
LOW     |RDS.48              | o|  |  |  |  |  |  |  |  |  |
CRITICAL|Redshift.1          | o|  |  |  |  |  |  | o| o| o|
MEDIUM  |Redshift.2          | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |Redshift.3          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Redshift.4          | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |Redshift.6          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Redshift.7          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Redshift.8          | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |Redshift.10         | o|  |  |  |  |  |  | o|  |  |
LOW     |Redshift.11         |  | o|  |  |  |  |  |  |  |  |
LOW     |Redshift.12         |  | o|  |  |  |  |  |  |  |  |
LOW     |Redshift.13         |  | o|  |  |  |  |  |  |  |  |
LOW     |Redshift.14         |  | o|  |  |  |  |  |  |  |  |
HIGH    |Redshift.15         | o|  |  |  |  |  |  |  |  | o|
MEDIUM  |Redshift.16         |  |  |  |  |  |  |  | o|  |  |
LOW     |Redshift.17         |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Redshift.18         | o|  |  |  |  |  |  |  |  |  |
HIGH    |RedshiftServerless.1| o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RedshiftServerless.2| o|  |  |  |  |  |  |  |  |  |
HIGH    |RedshiftServerless.3| o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RedshiftServerless.4|  |  |  |  |  |  |  | o|  |  |
MEDIUM  |RedshiftServerless.5| o|  |  |  |  |  |  |  |  |  |
MEDIUM  |RedshiftServerless.6| o|  |  |  |  |  |  |  |  |  |
LOW     |Route53.1           |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Route53.2           | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |S3.1                | o|  |  | o| o| o|  | o| o| o|
CRITICAL|S3.2                | o|  |  |  |  |  |  | o| o|  |
CRITICAL|S3.3                | o|  |  |  |  |  |  | o| o|  |
MEDIUM  |S3.5                | o|  |  | o| o| o| o| o| o| o|
HIGH    |S3.6                | o|  |  |  |  |  | o| o|  |  |
LOW     |S3.7                |  |  |  |  |  |  |  | o| o|  |
HIGH    |S3.8                | o|  |  | o| o| o|  | o|  | o|
MEDIUM  |S3.9                | o|  |  |  |  |  | o| o|  | o|
MEDIUM  |S3.10               |  |  |  |  |  |  |  | o|  |  |
MEDIUM  |S3.11               |  |  |  |  |  |  | o| o|  |  |
MEDIUM  |S3.12               | o|  |  |  |  |  |  | o|  |  |
LOW     |S3.13               | o|  |  |  |  |  |  | o|  |  |
LOW     |S3.14               |  |  |  |  |  |  | o| o|  |  |
MEDIUM  |S3.15               |  |  |  |  |  |  |  | o|  | o|
MEDIUM  |S3.17               |  |  |  |  |  |  | o| o|  | o|
CRITICAL|S3.19               | o|  |  |  |  |  |  | o|  | o|
LOW     |S3.20               |  |  |  | o| o| o|  | o|  |  |
MEDIUM  |S3.22               |  |  |  |  | o| o|  |  |  | o|
MEDIUM  |S3.23               |  |  |  |  | o| o|  |  |  | o|
LOW     |S3.25               | o|  |  |  |  |  |  |  |  |  |
LOW     |SES.1               |  | o|  |  |  |  |  |  |  |  |
LOW     |SES.2               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |SES.3               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |SNS.1               |  |  |  |  |  |  | o| o|  |  |
LOW     |SNS.3               |  | o|  |  |  |  |  |  |  |  |
CRITICAL|SNS.4               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |SQS.1               | o|  |  |  |  |  |  | o|  |  |
LOW     |SQS.2               |  | o|  |  |  |  |  |  |  |  |
CRITICAL|SQS.3               | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |SSM.1               | o|  |  |  |  |  |  | o| o|  |
HIGH    |SSM.2               | o|  |  |  |  |  | o| o| o| o|
LOW     |SSM.3               | o|  |  |  |  |  |  | o| o| o|
CRITICAL|SSM.4               | o|  |  |  |  |  |  | o|  |  |
LOW     |SSM.5               |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |SSM.6               | o|  |  |  |  |  |  |  |  |  |
CRITICAL|SSM.7               | o|  |  |  |  |  |  |  |  |  |
HIGH    |SageMaker.1         | o|  |  |  |  |  |  | o| o| o|
HIGH    |SageMaker.2         | o|  |  |  |  |  |  | o|  |  |
HIGH    |SageMaker.3         | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |SageMaker.4         | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |SageMaker.5         | o|  |  |  |  |  |  |  |  |  |
LOW     |SageMaker.6         |  | o|  |  |  |  |  |  |  |  |
LOW     |SageMaker.7         |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |SageMaker.8         | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |SecretsManager.1    | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |SecretsManager.2    | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |SecretsManager.3    | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |SecretsManager.4    | o|  |  |  |  |  |  | o|  | o|
LOW     |SecretsManager.5    |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |ServiceCatalog.1    | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |StepFunctions.1     | o|  |  |  |  |  |  |  |  | o|
LOW     |StepFunctions.2     |  | o|  |  |  |  |  |  |  |  |
LOW     |Transfer.1          |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |Transfer.2          | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |Transfer.3          | o|  |  |  |  |  |  | o|  |  |
LOW     |Transfer.4          |  | o|  |  |  |  |  |  |  |  |
LOW     |Transfer.5          |  | o|  |  |  |  |  |  |  |  |
LOW     |Transfer.6          |  | o|  |  |  |  |  |  |  |  |
LOW     |Transfer.7          |  | o|  |  |  |  |  |  |  |  |
MEDIUM  |WAF.1               | o|  |  |  |  |  |  | o|  | o|
MEDIUM  |WAF.2               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.3               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.4               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.6               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.7               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.8               | o|  |  |  |  |  |  | o|  |  |
MEDIUM  |WAF.10              | o|  |  |  |  |  |  | o|  |  |
LOW     |WAF.11              |  |  |  |  |  |  |  | o|  | o|
MEDIUM  |WAF.12              | o|  |  |  |  |  | o| o|  |  |
MEDIUM  |WorkSpaces.1        | o|  |  |  |  |  |  |  |  |  |
MEDIUM  |WorkSpaces.2        | o|  |  |  |  |  |  |  |  |  |

▼Risk Count
CRITICAL  : 29
HIGH      : 66
MEDIUM    : 257
LOW       : 203
ALL       : 555
$
リージョンごとに、出力されるコントロールIDは異なります。
上記は us-east-1 の例です。 Amazon CloudFront や Amazon Route 53 のコントロールが含まれています。

Security Hub標準とコントロール、リスクのマッピング表を作成するスクリプト
 ※クリックして展開
Security Hub標準とコントロール、リスクのマッピング表を作成するスクリプト
$ cat mapping-Controls-and-Standards.pl
#!/usr/bin/perl
#
# スクリプト名: mapping-Controls-and-Standards.pl
#
# 処理内容
# AWS Security Hub のコントロールのリストを読み込みます。
# 以下の情報を抽出・整形し、出力します。
#
#   1. 検出されたすべてのセキュリティスタンダードの一覧。
#   2. 各コントロール (ルール) のリスクレベル、およびそのコントロールが関連するセキュリティスタンダードとの対応表。
#      対応表では、各コントロールがどのスタンダードに属するかを 'o' で示します。
#
# 入力ファイル
# Security Hub のコントロール情報を含むテキストファイル
# 各行は '|' で区切られたフィールドを持ち、以下の情報を含みます。
#
#   - リストの形式
#     "スタンダード名|コントロールID|重要度|有効/無効|無効の場合の理由|タイトル|説明|コントロールの概要説明URL"
#
#   - 詳細
#     - 1列目: セキュリティスタンダード名 (例: cis-aws-foundations-benchmark/v/1.2.0)
#     - 3列目: リスクレベル (例: LOW, MEDIUM, HIGH, CRITICAL)
#     - 最終列: コントロールの概要説明URL (例: https://docs.aws.amazon.com/console/securityhub/IAM.16/remediation)
#
# 出力形式
#   1. ソートされたスタンダードの一覧。
#   2. 各コントロールのリスクレベルとコントロール名、そして各スタンダードへの対応を示すマトリックス形式の表。
#
# 使用例
#   cat Security-Hub-Controls.log | perl Mapping-Controls-and-Standards.pl
#
use strict;
use warnings;

my %table;
my %standards;
my %risks;
my %rules;
my %risk_count;

# 入力データを1行ずつ処理
while (<>) {
    chomp;
    my @fields = split(/\|/);
    my $standard = $fields[0];  # 1列目: Standard名
    my $risk = $fields[2];      # 3列目: リスクレベル (CRITICAL HIGH MEDIUM LOW)
    my $rule = $fields[-1];     # 最終列: ルールURL

    # URLから不要な部分を削除
    $rule =~ s|https://docs\.aws\.amazon\.com/console/securityhub/||;
    $rule =~ s/\/remediation$//;

    # Autoscaling.5をAutoScaling.5に修正
    if ( $rule =~ /Autoscaling.5/ ) {
      $rule =~ s/Autoscaling.5/AutoScaling.5/;
    }

    # データを連想配列に格納
    $table{$rule}{$standard} = 1;
    $standards{$standard} = 1;
    $rules{$rule} = 1;
    $risks{$rule} = $risk;
}

# ルールごとにリスクをカウント
for my $rule (keys %risks) {
    $risk_count{$risks{$rule}}++;
}

# Standardのキーをソート
my @sorted_standards = sort keys %standards;

# ルールをプレフィックスでアルファベット順、番号で数値順にソート
my @sorted_rules = sort {
    my ($a_prefix, $a_num) = $a =~ /^(.+?)\.(\d+)$/;
    my ($b_prefix, $b_num) = $b =~ /^(.+?)\.(\d+)$/;
    $a_prefix cmp $b_prefix || $a_num <=> $b_num;
} keys %rules;

# Standard一覧を出力
print "\n▼Standard\n";
for (my $i = 0; $i < @sorted_standards; $i++) {
    printf "%02d:%s\n", $i + 1, $sorted_standards[$i];
}

# Standards/Rules対応表を出力
print "\n▼Standards/Rules対応表\n";
printf "%-8s|%-20s|", "Risk","Rules: Standards";
for (my $i = 0; $i < @sorted_standards; $i++) {
    printf "%02d|", $i + 1;
}
print "\n";

# 各ルールに対して対応するStandardに〇を表示
for my $rule (@sorted_rules) {
    printf "%-8s|%-20s|", $risks{$rule}, $rule;
    for my $standard (@sorted_standards) {
        print ($table{$rule}{$standard} ? " o|" : "  |");
    }
    print "\n";
}
print "\n";

# リスクレベル別の集計を出力
my $total_risk_count =0 ;
print "▼Risk Count\n";
for my $risk (qw(CRITICAL HIGH MEDIUM LOW)) {
    printf "%-10s: %d\n", $risk, $risk_count{$risk} || 0;
    $total_risk_count += $risk_count{$risk};
}
printf "%-10s: %d\n", "ALL", $total_risk_count || 0;
$ 

まとめ

本稿では、AWS Security Hub CSPM が提供する複数のセキュリティ標準を、構築後の監視用途ではなく、構築前の設計レビューにどう活用できるかという観点で解説しました。

Security Hub CSPM が内部で保持しているセキュリティ標準やコントロールの情報を AWS CLI で取得・加工し、「どのコントロールがどの標準に含まれているか」「標準には含まれないが有効なコントロールは何か」といった観点で、標準別・リスク別・コントロール別に再利用しやすい形態へ整理・出力する手順を、具体的なスクリプトとともに示しました。

本稿(前編)では、後続の設計レビューに活用することを目的として、AWS Security Hub CSPM が提供する複数のセキュリティ標準およびコントロール情報を取得・整理するところまでを扱いました。

後編では、ここで生成したデータを Kiro CLI と組み合わせることで、設計レビューをどのように実施できるのかを掘り下げていく予定です。
標準を切り替えながらレビュー観点を変える、あるいは複数標準を横断して共通の高リスクコントロールを抽出するといった使い方は、実務での構築前レビューの品質向上に直結するはずです。

この投稿が皆様のご参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?