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

IAM Access Analyzer

本記事は構成中です。概要・構築手順は確定していますが、検証セクションは個別リソースの検証記事を積み上げた後に追記予定です。
検証日: 2026-03-29 / リージョン: 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

パブリックアクセスについては、S3 の Block Public Access や EBS の Block Public Access 等、デフォルトでブロックする仕組みが整備されつつある。一方、クロスアカウントアクセスは意図的に設定するものであり、デフォルトではブロックされない。一時的な共有設定の消し忘れや、退職した委託先アカウントへの共有が残っているケースは実務で頻繁に発生する。

AWS は 2022 年から「データペリメーター」という概念を公式に推進しており、「信頼された ID だけが、信頼されたリソースに、期待されたネットワークからアクセスする」ことを保証する予防的ガードレールの確立を推奨している。2024 年 11 月に RCP(リソースコントロールポリシー)が Control Tower に追加されたのも、この戦略の一環である。

IAM Access Analyzer は、このデータペリメーターが正しく機能しているかを検証するツールとして位置づけられる。

対応リソース

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

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

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 の各コントロールの検出範囲は、コントロールのタイトルや説明から判断した。各コントロールの詳細な検出ロジックについては、別途 Security Hub CSPM の記事で整理予定。

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

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 / DynamoDBパブリック + クロスアカウント予防コントロールなし(カスタム SCP で対応可能)

IAM Access Analyzer で検出 → 予防コントロールでブロック → IAM Access Analyzer で検証、というサイクルを回すことで、データペリメーターを段階的に確立できる。

構築

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

検証

個別リソースの検証記事を積み上げた後に追記予定。

確認項目

  1. 組織外アカウントへの共有が検出されるか
  2. パブリックアクセスが検出されるか
  3. アーカイブルールにより SSO ロールの検出が抑制されるか
  4. アーカイブルールにより東京以外の IAM ロール検出が抑制されるか
  5. Security Hub に検出結果が連携されるか
  6. アーカイブ後に Security Hub から検出結果が消えるか