「S3バケットを設定したけど、本当に外部から見えていないか不安」「IAMロールに余計な権限がついているかもしれないが、全部手動で確認するのは現実的ではない」――クラウドのアクセス制御はオンプレに比べて格段に複雑で、設定ミスが静かに潜んでいることも少なくない。
オンプレ時代は物理的なネットワーク境界がファイアウォールの役割を果たしていたが、クラウドではリソースごとにポリシーを設定するため、一箇所の設定ミスが外部公開につながるリスクがある。
この記事では、AWSが提供するセキュリティサービス「AWS IAM Access Analyzer」について、オンプレ経験者にもわかりやすく解説する。外部アクセス検知の仕組みから、CLIでの使い方、未使用権限の見つけ方まで、現場で使える知識を網羅する。
なぜIAM Access Analyzerが必要なのか?(オンプレとの違い・背景)
オンプレ環境では、外部との通信はファイアウォールやVLAN設計で制御するのが基本だった。「どのサービスがどの範囲に公開されているか」は、ネットワーク構成図を見れば把握できた。
クラウドに移行すると話が変わる。リソースへのアクセス制御は「リソースベースのポリシー」「アイデンティティベースのポリシー」「信頼ポリシー」など複数のレイヤーで管理される。IAMロールのAssume Role設定やS3バケットポリシーを組み合わせると、意図せずに外部アカウントからのアクセスを許可してしまうことがある。
さらに、組織が成長してAWSアカウントやリソースが増えると、全リソースのポリシーを手動で追いかけるのは非現実的だ。
IAM Access Analyzerはそのギャップを埋めるサービスで、2019年にリリースされた。リソースベースのポリシーを継続的に分析し、「外部の主体(アカウント・インターネット)からアクセスできる状態になっているリソース」を自動で検出してくれる。
IAM Access Analyzerの基本的な仕組み
1. アナライザーの種類
IAM Access Analyzerには2種類のアナライザーがある。
・外部アクセスアナライザー(External Access Analyzer): リソースベースのポリシーを分析し、AWSアカウントまたはAWS Organizations外部からアクセス可能なリソースを検出する。利用料金は無料。
・未使用アクセスアナライザー(Unused Access Analyzer): IAMユーザー・ロール・アクセスキーの中で、一定期間使用されていない権限を検出する。2023年にリリースされ、最小権限の実装推進に役立つ。IAMロール・ユーザー数に応じた料金が発生する(後述)。
2. 対応リソースと検出できること
外部アクセスアナライザーが検出できるリソースは以下の通りだ(2026年6月時点)。
| リソースタイプ | 検出される主なリスク |
|---|---|
| Amazon S3バケット | バケットポリシー・ACLによる外部公開 |
| Amazon SQSキュー | キューポリシーによる外部アカウントへのアクセス許可 |
| AWS KMSキー | キーポリシーで外部アカウントへの使用許可 |
| AWS Lambda(関数・レイヤー) | リソースベースのポリシーによる外部呼び出し許可 |
| IAMロール | 信頼ポリシーで外部アカウント・プリンシパルを許可 |
| AWS Secrets Manager | シークレットポリシーによる外部アクセス許可 |
| Amazon SNSトピック | トピックポリシーによる外部サブスクライブ許可 |
| Amazon EBSスナップショット | パブリック共有設定 |
| Amazon ECRリポジトリ | リポジトリポリシーによる外部アカウントへのプル許可 |
| Amazon RDSスナップショット | パブリック共有設定 |
ポイントは「継続的に監視している」という点だ。ポリシーを変更するたびに自動で再分析され、新たな外部アクセスが検出されると所見(Finding)として記録される。
IAM Access Analyzerの使い方
1. アナライザーの有効化
AWSコンソールから「IAM」→「Access Analyzer」→「アナライザーを作成」と進む。AWS CLIで作成する場合は以下のコマンドを使う。
# アカウントレベルの外部アクセスアナライザーを作成(AWS CLI) aws accessanalyzer create-analyzer \ --analyzer-name my-external-access-analyzer \ --type ACCOUNT \ --region ap-northeast-1
Organizations管理下にある場合は `–type ORGANIZATION` を指定すると、組織全体を信頼ゾーンとして扱い、組織外部からのアクセスのみを検出対象にできる。
# 組織レベルのアナライザーを作成(管理アカウントから実行) aws accessanalyzer create-analyzer \ --analyzer-name org-external-access-analyzer \ --type ORGANIZATION \ --region ap-northeast-1
2. 検出結果の確認とアーカイブ
アナライザーが起動すると既存のリソースをスキャンし、所見一覧が表示される。CLIで確認する場合は以下のコマンドを使う。
# 所見一覧を取得(アナライザーARNを指定) aws accessanalyzer list-findings \ --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/my-external-access-analyzer \ --region ap-northeast-1 # 特定リソースタイプでフィルタリング(例: S3バケットのみ) aws accessanalyzer list-findings \ --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/my-external-access-analyzer \ --filter '{"resourceType":{"eq":["AWS::S3::Bucket"]}}' \ --region ap-northeast-1
所見を確認して「意図した設定だ」と判断した場合は、アーカイブ処理をすることで誤検知として扱い、以後の所見一覧に表示されなくなる。
# 所見をアーカイブ(finding-idはlist-findingsで確認) aws accessanalyzer update-findings \ --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/my-external-access-analyzer \ --ids "finding-id-xxxxxxxxxxxxx" \ --status ARCHIVED \ --region ap-northeast-1
3. ポリシーのバリデーション(Previewアクセス機能)
IAM Access Analyzerには、ポリシーを実際に適用する前に「外部公開になるか」を検証するプレビュー機能がある。新しいバケットポリシーを試すときに事前に確認できるので、本番環境での設定ミスを防げる。
# IAMポリシーの構文・セキュリティ検証 aws accessanalyzer validate-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*" } ] }' \ --policy-type RESOURCE_POLICY \ --region ap-northeast-1
このバリデーション機能はAWS CloudFormationやTerraformのデプロイパイプラインにも組み込める。CodePipelineのステージにポリシー検証を入れることで、「セキュリティ違反のIaCはデプロイさせない」ワークフローを構築できる。
料金の仕組み(コスト感覚)
・外部アクセスアナライザー: 無料。アカウント内リソースの継続的な監視・所見検出コストはかからない。
・未使用アクセスアナライザー: 分析対象のIAMロール・ユーザー数に応じた料金が発生する。東京リージョン(ap-northeast-1)では、IAMロール・ユーザー1件あたり月額$0.20(2026年6月時点・USD)。IAMロールが100件あれば月額約$20の計算になる。
外部アクセスアナライザーは無料なので、まず有効化するだけでリスク可視化の恩恵を受けられる。未使用アクセスアナライザーはコスト対効果を見ながら判断するとよいが、IAMロール数が多い大規模環境では権限棚卸しのコストを大幅に削減できる。
応用・実務Tips
EventBridgeと連携して即時通知する
IAM Access Analyzerは所見を検出するたびにAmazon EventBridgeにイベントを送信する。EventBridgeルールでAmazon SNSトピック経由のSlackやメール通知を設定すれば、新たな外部公開リソースを即時キャッチできる。
Security Hubとの統合
IAM Access AnalyzerはAWS Security Hubと統合されており、所見をSecurity Hubのダッシュボードに集約できる。複数のセキュリティサービスの所見を一元管理している場合は積極的に活用したい。AWS Security Hub入門も合わせて参照してほしい。
ArchiveRuleで誤検知を自動アーカイブする
クロスアカウントアクセスを意図的に設定しているリソース(例: ログ集約アカウントへのS3バケット)は毎回手動アーカイブが必要になる。ArchiveRuleを設定すれば、特定条件に合致する所見を自動アーカイブし、ノイズを減らせる。
# 特定アカウントからのアクセスを自動アーカイブするルールを作成 aws accessanalyzer create-archive-rule \ --analyzer-name my-external-access-analyzer \ --rule-name allow-log-aggregation-account \ --filter '{ "principal.AWS": { "eq": ["arn:aws:iam::098765432109:root"] } }' \ --region ap-northeast-1
Organizationsで全アカウントを一元監視する
マルチアカウント環境では、管理アカウントから組織レベルのアナライザーを1つ作成するだけで全アカウントのリソースを横断分析できる。Security HubのOrganizationsモードと組み合わせると、セキュリティ運用の一元化が進む。
よくあるトラブルと対処法
所見が表示されない(スキャンが動いていない)
アナライザーを作成しても、リソースポリシーが変更されなければ自動の再スキャンは起動しない。手動で再スキャンをかけたい場合はコンソールの「スキャンを開始」ボタンか、CLIで以下を実行する。
# 特定リソースを手動スキャン aws accessanalyzer start-resource-scan \ --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/my-external-access-analyzer \ --resource-arn arn:aws:s3:::my-bucket \ --region ap-northeast-1
Organizationsアナライザーを作成できない
組織レベルのアナライザーは管理アカウント(またはIAM Access Analyzerの委任管理者)からしか作成できない。メンバーアカウントからは作成不可なので注意が必要だ。
意図した設定なのに毎回所見として上がる
ArchiveRuleで条件を設定して自動アーカイブするのが最も運用負荷の低い対処法だ。手動アーカイブは再スキャン時に解除されることはないが、ルールベースの自動アーカイブの方が安定して機能する。
未使用アクセスアナライザーの料金が想定より高い
IAMロール・ユーザー数が多い環境では料金が積み上がりやすい。不要なIAMロールを先に棚卸しして整理してから有効化するのが現実的だ。AWS IAM Identity Centerとの統合で不要なIAMユーザーを削減することも合わせて検討したい。
本記事のまとめ
| やりたいこと | 機能・手順 |
|---|---|
| 外部公開リソースを自動検出したい | 外部アクセスアナライザーを有効化(無料) |
| 組織全体のリソースをまとめて監視したい | タイプをORGANIZATIONに設定して作成 |
| ポリシーを適用前に安全確認したい | validate-policyで事前検証 |
| 意図した設定の誤検知を減らしたい | ArchiveRuleで自動アーカイブ |
| 新規所見をリアルタイムで受け取りたい | EventBridge → SNS → Slack通知連携 |
| 未使用の権限・ロールを洗い出したい | 未使用アクセスアナライザーを有効化(有料) |
IAM Access Analyzerの外部アクセスアナライザーは無料で使えるにもかかわらず、クラウドのアクセス制御ミスを継続的に検出してくれる強力なツールだ。オンプレ時代のファイアウォールに相当する「境界の番人」として、まず有効化することをすすめる。
クラウドセキュリティの基礎については「クラウドセキュリティの責任共有モデル」も合わせて参照してほしい。Linuxサーバーのセキュリティ基礎については、姉妹サイトLinuxMaster.JPで詳しく解説している。
クラウドのアクセス制御、本当に大丈夫ですか?
IAM Access Analyzerを有効化するだけでは、クラウドセキュリティの全体像はまだ見えていない。IAM設計・VPCセキュリティ・暗号化・コンプライアンス対策を体系的に身につけるには、体系的な学習が欠かせない。
オンプレの経験を活かしながら、現場で使えるクラウドスキルを体系的に身につけたい方へ、メルマガで実践的なクラウド活用ノウハウをお届けしています。
