コンテンツにスキップ

Security Hub CSPM

本ページは構成と方針を整理した段階です。個別コントロールの検証は今後実施し、結果に基づいてまとめ記事をブラッシュアップしていきます。「デフォルトで保護されているか」の分類は公式ドキュメントからの一次整理であり、実環境での検証により確定させます。
本ページの情報は 2026 年 4 月時点のものです。セキュリティ基準は AWS Foundational Security Best Practices(FSBP)v1.0.0 を対象としています。

Security Hub CSPM とは

AWS Security Hub の CSPM(Cloud Security Posture Management)機能は、AWS リソースの設定がセキュリティベストプラクティスに準拠しているかを自動チェックするサービスである。各チェック項目は「コントロール」と呼ばれ、AWS Config ルールにより評価される。

他のツールとの位置づけ

Security Hub CSPM で検出された問題に対して、「予防」と「検出の深掘り」の両面で補完するツールがある。

検出

ツール役割チェック方法
Security Hub CSPM設定の逸脱を継続的にチェックAWS Config ルールによる設定チェック
IAM Access Analyzer外部からの到達可能性を分析Zelkova 自動推論エンジンによるポリシー分析

Security Hub CSPM は「設定がどうなっているか」をチェックする。IAM Access Analyzer は「最終的に誰がアクセスできるか」を分析する。Security Hub CSPM がパブリックアクセスの設定チェックを中心とするのに対し、IAM Access Analyzer はクロスアカウントアクセスも含めた到達可能性を分析する。

なお、Control Tower にも独自の検出コントロール(Strongly recommended / Elective)があり、パブリックアクセス関連のものも含まれる。ただし、FSBP の方がコントロール数が多く網羅性が高いため、本記事では FSBP を基準として整理する。

予防

ツール役割適用方法
Control Tower 予防コントロールAWS が提供するマネージドな予防ガードレールControl Tower コンソールから OU 単位で有効化
Declarative Policiesサービスの基本設定を組織全体に宣言的に強制Organizations で OU 単位またはアカウント単位で適用
カスタム SCP / RCP 等予防コントロールが存在しないサービスを補完Organizations で独自のポリシーを作成・適用

予防コントロールおよび Declarative Policies が存在するサービスについては、これらを優先的に活用すべきである。予防コントロールは AWS がポリシーの内容を管理しており、サービスの仕様変更に追従する。Declarative Policies はサービスのコントロールプレーンで直接強制されるため、新しい API が追加されてもポリシーの更新なしに設定を維持できる。カスタム SCP / RCP は自分でメンテナンスが必要であり、サービスの API 変更や新機能追加に対して追従漏れのリスクがある。

予防コントロールが存在しないサービスについては、カスタム SCP / RCP 等で補完する必要がある。個別コントロールの検証で、カスタムポリシーの実装例と妥当性を検証する。

セキュリティ基準と重大度

FSBP を対象とする理由

Security Hub には複数のセキュリティ基準(CIS AWS Foundations Benchmark、PCI DSS 等)があるが、本記事では AWS Foundational Security Best Practices(FSBP) を対象とする。FSBP は AWS 自身が定義したベストプラクティス集であり、AWS サービス固有の設定チェックが最も網羅的に含まれている。他の基準(CIS 等)は業界標準の観点からのチェックであり、FSBP と重複するコントロールも多い。

重大度 CRITICAL / HIGH にフォーカスする理由

Security Hub コントロールの重大度は、悪用の難易度侵害の可能性に基づいて AWS が割り当てている(AWS Prescriptive Guidance)。

重大度定義意味
CRITICAL即座に修復すべき(escalating を避けるため)悪用が容易で、侵害の可能性が高い。放置するとリスクが拡大する
HIGH優先的に対処すべき悪用の難易度は中程度だが、侵害された場合の影響が大きい
MEDIUM緊急ではないが対処すべき悪用の難易度が高い、または侵害の影響が限定的
LOW単独では対処不要他の問題と組み合わさった場合にリスクとなる可能性がある

MEDIUM / LOW のコントロールも対処すべきものであり、無視してよいわけではない。ただし、AWS は「CRITICAL と HIGH の finding を優先的に調査することを推奨」していることから、本記事では対処の優先順位に従い、まず CRITICAL / HIGH のコントロールを対象とする。

CRITICAL / HIGH コントロールの全体像

FSBP の CRITICAL / HIGH コントロールは合計 82 件(CRITICAL 27 件、HIGH 55 件)ある。セキュリティ上の懸念パターンで分類すると以下の通り。

パターン件数割合CRITICALHIGH概要
パブリックアクセスの防止3543%2114リソースがインターネットに公開されていないことを確認
セキュリティサービスの有効化1417%113GuardDuty、Inspector、Config 等の有効化
パッチ / バージョン管理79%07IMDSv2 強制、マイナーバージョン自動アップグレード等
最小権限 / アクセス制御67%06ワイルドカード権限の禁止、SG の制限等
認証情報の保護67%42クリアテキスト認証情報の排除、ルートアクセスキー排除
ログ・監視の確保45%04CloudTrail マルチリージョン証跡、ログ設定
ネットワーク分離 / VPC 設計67%06カスタム VPC 配置、拡張 VPC ルーティング
暗号鍵の保護22%11KMS キーの削除防止
その他22%02上記に含まれないもの

CRITICAL 27 件中 21 件(78%)がパブリックアクセスの防止に分類される。

選定の考え方

本記事では、パブリックアクセスの防止(35 件)を検証対象とする。

パブリックアクセスにフォーカスする理由:

  • CRITICAL 27 件中 21 件(78%)がパブリックアクセス関連であり、最もリスクが高いパターン
  • 全 82 件の 43% を占める最大のカテゴリ

残り 47 件は、テーマが異なるため今回は扱わない。セキュリティサービスの有効化(GuardDuty / Inspector 等)は組織設計、パッチ管理やネットワーク分離はワークロード固有の運用設計に依存するテーマであり、パブリックアクセスの防止とは検証の観点が異なる。なお、CloudFront.12(CloudFront ディストリビューションが存在しない S3 オリジンを指さない)は FSBP では HIGH に分類されているが、削除済みの S3 バケット名を第三者に取得されるリスク(サブドメインテイクオーバー)を検出するものであり、リソースの公開設定をチェックする他のパブリックアクセス防止コントロールとは性質が異なるため、本記事のスコープ外とする。

パブリックアクセス関連コントロール一覧(35 件)

CRITICAL(21 件)

#コントロールタイトルデフォルト保護予防コントロールDeclarative Policies ※※カスタム SCPIAM Access Analyzer
1EC2.1EBS スナップショットをパブリックに復元可能にしない未保護(要検証)CT.EC2.PV.3, CT.EC2.PV.7EBS Snapshot BPA対象
2EC2.19SG でハイリスクポートへの無制限アクセスを許可しない未保護(要検証)なし要検討対象外
3DMS.1DMS レプリケーションインスタンスをパブリックにしない未保護(要検証)なし要検討対象外
4ES.2Elasticsearch ドメインをパブリックにアクセス可能にしない未保護(要検証)なし要検討対象外
5Opensearch.2OpenSearch ドメインをパブリックにアクセス可能にしない未保護(要検証)なし要検討対象外
6RDS.1RDS スナップショットをプライベートにする保護済み(要検証)なし要検討対象
7RDS.2RDS DB インスタンスのパブリックアクセスを禁止する未保護(要検証)なし要検討対象外
8Redshift.1Redshift クラスターのパブリックアクセスを禁止する未保護(要検証)なし要検討対象外
9DocumentDB.3DocumentDB 手動クラスタースナップショットをパブリックにしない保護済み(要検証)なし要検討対象外
10Neptune.3Neptune DB クラスタースナップショットをパブリックにしない保護済み(要検証)なし要検討対象外
11MSK.4MSK クラスターのパブリックアクセスを無効にする保護済み(要検証)なし要検討対象外
12Lambda.1Lambda 関数ポリシーでパブリックアクセスを禁止する保護済み(要検証)CT.LAMBDA.PV.2対象
13S3.2S3 汎用バケットでパブリック読み取りアクセスをブロックする保護済み(要検証)関連あり ※S3 BPA対象
14S3.3S3 汎用バケットでパブリック書き込みアクセスをブロックする保護済み(要検証)関連あり ※S3 BPA対象
15S3.19S3 アクセスポイントで BPA 設定を有効にする保護済み(要検証)関連あり ※S3 BPA対象
16KMS.5KMS キーをパブリックにアクセス可能にしない保護済み(要検証)CT.KMS.PV.7対象
17SNS.4SNS トピックアクセスポリシーでパブリックアクセスを許可しない未保護(要検証)なし要検討対象
18SQS.3SQS キューアクセスポリシーでパブリックアクセスを許可しない未保護(要検証)関連あり ※対象
19SSM.4SSM ドキュメントをパブリックにしない保護済み(要検証)なし要検討対象外
20SSM.7SSM ドキュメントのパブリック共有ブロック設定を有効にする未保護(要検証)なし要検討対象外
21EMR.2EMR ブロックパブリックアクセス設定を有効にする保護済み(要検証)なし要検討対象外

HIGH(14 件)

#コントロールタイトルデフォルト保護予防コントロールDeclarative Policies ※※カスタム SCPIAM Access Analyzer
1EC2.9EC2 インスタンスにパブリック IPv4 アドレスを持たせない未保護(要検証)なしVPC BPA要検討対象外
2EC2.25EC2 起動テンプレートでパブリック IP を割り当てない未保護(要検証)なしVPC BPA要検討対象外
3EC2.182EBS スナップショットの BPA 設定を有効にする未保護(要検証)CT.EC2.PV.7EBS Snapshot BPA対象
4Autoscaling.5Auto Scaling 起動設定でパブリック IP を割り当てない未保護(要検証)なしVPC BPA要検討対象外
5ECS.2ECS サービスにパブリック IP を自動割り当てしない保護済み(要検証)なしVPC BPA要検討対象外
6ECS.16ECS タスクセットにパブリック IP を自動割り当てしない保護済み(要検証)なしVPC BPA要検討対象外
7EKS.1EKS クラスターエンドポイントをパブリックにアクセス可能にしない未保護(要検証)なし要検討対象外
8EMR.1EMR クラスタープライマリノードにパブリック IP を持たせない未保護(要検証)なしVPC BPA要検討対象外
9RDS.46RDS DB インスタンスを IGW ルートがあるパブリックサブネットにデプロイしない未保護(要検証)なしVPC BPA要検討対象外
10Redshift.15Redshift SG でクラスターポートへのインターネットアクセスを許可しない未保護(要検証)なし要検討対象外
11RedshiftServerless.3Redshift Serverless ワークグループのパブリックアクセスを禁止する未保護(要検証)なし要検討対象外
12SageMaker.1SageMaker ノートブックインスタンスでダイレクトインターネットアクセスを無効にする未保護(要検証)なしVPC BPA要検討対象外
13S3.6S3 汎用バケットポリシーで他の AWS アカウントからのアクセスを制限する保護済み(要検証)関連あり ※関連あり ※※対象
14S3.8S3 汎用バケットで BPA を有効にする保護済み(要検証)関連あり ※S3 BPA対象
※「関連あり」の予防コントロールについて:CT.S3.PV.4(RCP: 組織外アクセスブロック)および CT.SQS.PV.1(RCP: 組織外アクセスブロック)は、Security Hub CSPM がチェックする設定(BPA の有無、ポリシーの内容等)とは異なるレイヤーで動作する。RCP はリソースポリシーを書き換えないため、RCP を有効化しても Security Hub CSPM の finding は PASSED に変わらない(CT.S3.PV.5 の検証で確認済み)。「カバーされる」ではなく「関連する予防コントロールがある」という位置づけである。
※※ Declarative Policies は Organizations のポリシータイプの一つで、サービスの基本設定を組織全体に宣言的に強制する機能である。Security Hub finding への影響は未検証であり、個別コントロールの検証で確認する。

デフォルト保護の分類(暫定)

公式ドキュメントからの一次整理に基づく暫定分類。個別コントロールの検証で確定させる。

分類件数コントロール
デフォルトで保護済み15S3.2, S3.3, S3.6, S3.8, S3.19, RDS.1, DocumentDB.3, Neptune.3, MSK.4, Lambda.1, KMS.5, SSM.4, ECS.2, ECS.16, EMR.2
デフォルトで未保護20EC2.1, EC2.19, EC2.9, EC2.25, EC2.182, Autoscaling.5, DMS.1, ES.2, Opensearch.2, RDS.2, RDS.46, Redshift.1, Redshift.15, RedshiftServerless.3, SNS.4, SQS.3, SSM.7, EKS.1, EMR.1, SageMaker.1
上記の分類は公式ドキュメントからの一次整理であり、実環境での検証により確定させる。特に「デフォルトで保護済み」としたものについても、アカウントの作成時期やサービスの設定方法(コンソール / CLI / CloudFormation)によってデフォルト動作が異なる場合がある。

IAM Access Analyzer との検出範囲の比較

Security Hub CSPM は主にパブリックアクセスの設定をチェックする(S3.6 のようにクロスアカウントアクセスをチェックするコントロールも一部存在する)。一方、IAM Access Analyzer はパブリックアクセスに加えてクロスアカウントアクセスも検出する。

分類件数コントロール
IAM Access Analyzer 対象12EC2.1, EC2.182, Lambda.1, S3.2, S3.3, S3.6, S3.8, S3.19, KMS.5, SNS.4, SQS.3, RDS.1
IAM Access Analyzer 対象外23EC2.19, EC2.9, EC2.25, Autoscaling.5, DMS.1, ES.2, Opensearch.2, RDS.2, RDS.46, Redshift.1, Redshift.15, RedshiftServerless.3, DocumentDB.3, Neptune.3, MSK.4, SSM.4, SSM.7, EKS.1, EMR.1, EMR.2, SageMaker.1, ECS.2, ECS.16

IAM Access Analyzer 対象のリソースについては、Security Hub CSPM がパブリックアクセスのみを検出するコントロールであっても、IAM Access Analyzer でクロスアカウントアクセスを補完的に検出できる。IAM Access Analyzer 対象外のリソースについては、クロスアカウントの検出手段が限られるため、予防コントロールやカスタム SCP による予防的対処がより重要になる。

検証の進め方

確認ポイント

個別コントロールの検証では、デフォルト保護の有無に応じて以下の確認を行う。

共通

  1. 検出対象が何か(何の設定をチェックしているか)
  2. パブリックアクセスのみか、クロスアカウントアクセスも検出するか
  3. IAM Access Analyzer の対象リソースであれば、検出範囲の対比
  4. デフォルトで保護されているか

パターン A:デフォルトで保護されている場合

  1. 何をやったら検出するか(ユーザーの誤操作を想定した設定変更)
  2. Config ルールで強制的に finding 生成 → FAILED 確認
  3. 設定を戻す → PASSED に戻るか確認
  4. 設定変更を防ぐための手段(予防コントロール → カスタム SCP → Config ルールと修復)
  5. 予防手段を適用した後、Security Hub finding の状態はどうなるか

パターン B:デフォルトで保護されていない場合

  1. 今検出されているか(サービス起動が必要なら起動)
  2. Config ルールで強制的に finding 生成 → FAILED 確認
  3. デフォルトで保護するための設定方法
  4. 設定適用後 → PASSED に戻るか確認
  5. 設定変更を防ぐための手段(予防コントロール → カスタム SCP → Config ルールと修復)
  6. 予防手段を適用した後、Security Hub finding の状態はどうなるか

検証対象コントロール一覧

#コントロール重大度対象サービス記事
1EC2.1CRITICALEBS スナップショット検証予定
2EC2.19CRITICALセキュリティグループ検証予定
3DMS.1CRITICALDMS レプリケーションインスタンス検証予定
4ES.2CRITICALElasticsearch ドメイン検証予定
5Opensearch.2CRITICALOpenSearch ドメイン検証予定
6RDS.1CRITICALRDS スナップショット検証予定
7RDS.2CRITICALRDS DB インスタンス検証予定
8Redshift.1CRITICALRedshift クラスター検証予定
9DocumentDB.3CRITICALDocumentDB スナップショット検証予定
10Neptune.3CRITICALNeptune スナップショット検証予定
11MSK.4CRITICALMSK クラスター検証予定
12Lambda.1CRITICALLambda 関数検証予定
13S3.2CRITICALS3 バケット検証予定
14S3.3CRITICALS3 バケット検証予定
15S3.19CRITICALS3 アクセスポイント検証予定
16KMS.5CRITICALKMS キー検証予定
17SNS.4CRITICALSNS トピック検証予定
18SQS.3CRITICALSQS キュー検証予定
19SSM.4CRITICALSSM ドキュメント検証予定
20SSM.7CRITICALSSM ドキュメント検証予定
21EMR.2CRITICALEMR Block Public Access検証予定
22EC2.9HIGHEC2 インスタンス検証予定
23EC2.25HIGHEC2 起動テンプレート検証予定
24EC2.182HIGHEBS Block Public Access検証予定
25Autoscaling.5HIGHAuto Scaling 起動設定検証予定
26ECS.2HIGHECS サービス検証予定
27ECS.16HIGHECS タスクセット検証予定
28EKS.1HIGHEKS クラスター検証予定
29EMR.1HIGHEMR クラスター検証予定
30RDS.46HIGHRDS DB インスタンス(サブネット)検証予定
31Redshift.15HIGHRedshift セキュリティグループ検証予定
32RedshiftServerless.3HIGHRedshift Serverless検証予定
33SageMaker.1HIGHSageMaker ノートブック検証予定
34S3.6HIGHS3 バケット検証予定
35S3.8HIGHS3 バケット検証予定