コンテンツにスキップ
IAM Access Analyzer

IAM Access Analyzer

検証日: 2026-04-05 / リージョン: ap-northeast-1(Analyzer は全 17 リージョンにデプロイ)

IAM Access Analyzer とは

IAM Access Analyzer は、AWS リソースが組織外やパブリックに公開されていないかを自動的に検出するサービスである。

一般的な構成管理ツール(CSPM)が「パブリックアクセスブロックがオンか」といった設定の有無をチェックするのに対し、IAM Access Analyzer は Zelkova という自動推論エンジンを用いて、バケットポリシー・ACL・IAM ポリシー・VPC エンドポイントポリシー等を組み合わせた到達可能性を数学的に分析する。

つまり、「設定がどうなっているか」ではなく「最終的に誰がアクセスできるか」を判定する。

Analyzer のタイプ

外部アクセスの Analyzer には、信頼ゾーン(zone of trust)の範囲に応じて 2 つのタイプがある。

タイプ信頼ゾーン検出対象コスト
ACCOUNT単一の AWS アカウントアカウント外からのアクセスを検出無料
ORGANIZATIONAWS Organizations 全体組織外からのアクセスを検出無料

ORGANIZATION タイプは組織全体を信頼ゾーンとするため、組織内のクロスアカウントアクセスは検出せず、組織外へのアクセスのみを検出する。Security Hub CSPM や予防コントロール(SCP / RCP)と同様に組織全体を一元的に管理する運用と整合するため、本記事では ORGANIZATION タイプを使用する。

なお、外部アクセスの検出は無料で利用できる。未使用アクセスの分析(別機能)は有料であり、本記事では外部アクセスの検出に焦点を当てるため扱わない。

外部アクセスの検出

IAM Access Analyzer の外部アクセス検出は、以下の 2 種類のアクセスを検出する。

検出対象説明Security Hub での重要度
パブリックアクセス全世界に公開されている(認証なしでアクセス可能)MEDIUM
クロスアカウントアクセス組織外の特定の AWS アカウントからアクセス可能LOW

パブリックアクセスについては、Block Public Access のようにデフォルトでブロックする仕組みを持つサービスがある。

リソースBlock Public Access のレベルデフォルト状態
S3 バケットアカウント + バケットバケットレベル: 有効(2023 年 4 月〜)、アカウントレベル: 無効
S3 ディレクトリバケット常時有効(変更不可)有効
EBS スナップショットアカウント(リージョン単位)無効
EC2 AMIアカウント(リージョン単位)有効(block-new-sharing)
DynamoDB常時有効(無効化不可)有効

一方、クロスアカウントアクセスについては、明示的にブロックする仕組みがないサービスが多い。S3 の BPA は RestrictPublicBuckets=true によりクロスアカウントアクセスもブロックするが(S3 バケットの検証で確認済み)、EBS の Block Public Access はパブリック共有のみが対象でクロスアカウント共有はブロックしない(公式ドキュメントに明記、CT.EC2.PV.7 の検証でも確認済み)。クロスアカウント共有を防ぐにはポリシーの適切な管理や予防コントロール(RCP / SCP)の導入が必要となる。

AWS は 2022 年から「データペリメーター」という概念を公式に推進しており、「信頼された ID だけが、信頼されたリソースに、期待されたネットワークからアクセスする」ことを保証する予防的ガードレールの確立を推奨している。Control Tower では SCP(サービスコントロールポリシー)によりアカウント内の IAM ユーザーやロールの操作(設定変更など)を制御できる。2024 年 11 月には RCP(リソースコントロールポリシー)が追加され、リソース側から組織外のアクセスを拒否する制御も可能になった。

IAM Access Analyzer は、BPA やリソースポリシー、予防コントロール等の設定を総合的に分析し、外部からアクセス可能なリソースが残っていないかを検出するツールとして位置づけられる。

対応リソース

外部アクセス検出に対応するリソースは 15 種類(2026 年 4 月時点)。

リソースタイプパブリックアクセス検出クロスアカウントアクセス検出
S3 バケット
S3 ディレクトリバケット✅ ※
IAM ロール
KMS キー
Lambda 関数・レイヤー
SQS キュー
Secrets Manager シークレット
SNS トピック
EBS ボリュームスナップショット
RDS DB スナップショット
RDS DB クラスタースナップショット
ECR リポジトリ
EFS ファイルシステム
DynamoDB ストリーム✅ ※
DynamoDB テーブル✅ ※

※ S3 ディレクトリバケットおよび DynamoDB は BPA が常時有効で無効化できないため、パブリックポリシーの設定自体がブロックされる。IAM Access Analyzer はパブリックアクセスの分析能力を持つと考えられるが、パブリックアクセスの状態が作れないため実際には finding は生成されない

Security Hub CSPM との比較

Security Hub CSPM(FSBP)は AWS のベストプラクティスに準拠するための設定チェックを提供する。外部アクセスに関連するコントロールも含まれるが、IAM Access Analyzer とはカバー範囲が異なる。

主な違いは以下の 2 点。

  • Security Hub CSPM は主にパブリックアクセス* プリンシパルによるアクセス)の設定をチェックする。特定の外部アカウントへのクロスアカウント共有は検出対象外のものが多い
  • IAM Access Analyzer はパブリックアクセスとクロスアカウントアクセスの両方を、ポリシーの組み合わせによる到達可能性分析で検出する
リソースタイプSecurity Hub CSPM(FSBP)IAM Access Analyzer
S3 バケットS3.1, S3.2, S3.3, S3.8(パブリックアクセスの設定チェック)パブリック + クロスアカウント(ポリシーの組み合わせ分析)
IAM ロール外部アクセスの直接チェックなしパブリック + クロスアカウント(信頼ポリシーの外部プリンシパルを検出)
KMS キーKMS.5(パブリックアクセスのチェック)パブリック + クロスアカウント
Lambda 関数Lambda.1(パブリックアクセスのチェック)パブリック + クロスアカウント
SQS キューSQS.3(パブリックアクセスのチェック)パブリック + クロスアカウント
SNS トピックSNS.4(パブリックアクセスのチェック)パブリック + クロスアカウント
Secrets Manager外部アクセスチェックなし(暗号化チェックのみ)パブリック + クロスアカウント
EBS スナップショットEC2.1(パブリック共有のチェック)パブリック + クロスアカウント(共有先アカウント ID の特定)
RDS スナップショットRDS.1(パブリック共有のチェック)パブリック + クロスアカウント(共有先アカウント ID の特定)
ECR / EFS外部アクセスチェックなしパブリック + クロスアカウント
DynamoDB外部アクセスチェックなしクロスアカウント ※※
S3 ディレクトリバケット外部アクセスチェックなしクロスアカウント ※※
Security Hub CSPM の各コントロールの検出範囲は、2026 年 3 月時点の FSBP コントロール一覧のタイトルや説明から判断した。各コントロールの詳細な検出ロジックについては、別途 Security Hub CSPM の記事で整理予定。

※※ DynamoDB および S3 ディレクトリバケットは BPA が常時有効でパブリックポリシーの設定自体がブロックされるため、IAM Access Analyzer が検出するのはクロスアカウントアクセスのみ

予防コントロールとの関係

IAM Access Analyzer で外部アクセスを検出した後、それを予防するには Control Tower の予防コントロールが有効である。

対象サービスIAM Access Analyzer(検出)予防コントロール(ブロック)
S3パブリック + クロスアカウントCT.S3.PV.4(RCP: 組織外アクセスブロック)
IAM ロール(STS)パブリック + クロスアカウントCT.STS.PV.1(RCP: 組織外 AssumeRole ブロック)
KMSパブリック + クロスアカウントCT.KMS.PV.7(RCP: 組織外アクセスブロック)
Lambdaパブリック + クロスアカウントCT.LAMBDA.PV.2(SCP: パブリック・クロスアカウントの権限付与をブロック)
SQSパブリック + クロスアカウントCT.SQS.PV.1(RCP: 組織外アクセスブロック)
Secrets Managerパブリック + クロスアカウントCT.SECRETSMANAGER.PV.1(RCP: 組織外アクセスブロック)
EBS スナップショットパブリック + クロスアカウントCT.EC2.PV.3(SCP: パブリック共有をブロック), CT.EC2.PV.7(Declarative: パブリック共有をブロック)※クロスアカウント共有のブロックは未対応
SNS / RDS / ECR / EFSパブリック + クロスアカウントControl Tower 予防コントロールなし
DynamoDBクロスアカウント(BPA によりパブリックはブロック)Control Tower 予防コントロールなし

IAM Access Analyzer で検出 → 予防コントロールでブロック → IAM Access Analyzer で検証、というサイクルを回すことで、データペリメーターを段階的に確立できる。なお、上記の予防コントロールには SCP と RCP が混在しており、制御の仕組みが異なる。SCP は組織内プリンシパルの操作を制限し、RCP はリソース側から組織外アクセスを遮断する。詳細は予防コントロールの SCP と RCP の違いを参照。

構築

委任管理者の設定、Terraform による全リージョン展開、アーカイブルールの設計については以下を参照。

検証

全 15 リソースタイプについて、外部アクセスの検出を検証した。各リソースの詳細は個別記事を参照。

#リソースタイプ記事
1S3 バケット(汎用 + ディレクトリ)s3-bucket
2IAM ロールiam-role
3KMS キーkms-key
4Lambda 関数lambda
5SQS キューsqs
6Secrets Manager シークレットsecrets-manager
7SNS トピックsns
8EBS スナップショットebs-snapshot
9RDS スナップショット(DB + クラスター)rds-snapshot
10ECR リポジトリecr-repository
11EFS ファイルシステムefs-filesystem
12DynamoDB(テーブル + ストリーム)dynamodb

確認項目と結果

  1. 組織外アカウントへの共有が検出されるか — 全リソースで確認済み。クロスアカウントアクセスの finding(isPublic: false)が生成された
  2. パブリックアクセスが検出されるか — BPA が常時有効な DynamoDB・S3 ディレクトリバケットを除く全リソースで確認済み。パブリックアクセスの finding(isPublic: true)が生成された
  3. アーカイブルールにより SSO ロールの検出が抑制されるかTerraform デプロイで確認済み
  4. アーカイブルールにより東京以外の IAM ロール検出が抑制されるかTerraform デプロイで確認済み
  5. Security Hub に検出結果が連携されるかS3 バケットの検証で確認済み
  6. アーカイブ後に Security Hub から検出結果が消えるかS3 バケットの検証で確認済み