目次
- 初心者から実務者向けの包括的解説
- 概要
- IAM Access Analyzer が解決する課題
- 主な特徴
- アーキテクチャ
- External Access Analyzer
- Unused Access Analyzer
- Policy Validation
- Analyzer Type:Account Level vs Organization Level
- Zone of Trust(信頼ゾーン)
- Finding の詳細
- Policy Validator
- Policy Generation(ポリシー生成)
- Organizations 統合
- 他の類似ツールとの比較
- クライアント・エコシステム
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・活用シーン
- 導入ロードマップ
- 実装チェックリスト
- まとめ
AWS IAM Access Analyzer 完全ガイド v2.0
初心者から実務者向けの包括的解説
AWS IAM Access Analyzer は、IAM とリソースベースポリシーのセキュリティを自動検証し、意図しない外部アクセスが可能なリソース と 未使用の IAM 権限 を検出するサービスです。S3・KMS・Lambda・ECR・SQS などのリソースベースポリシーを継続分析し、組織外(別アカウント・パブリック)からのアクセス可能性を検出します。さらに、CloudTrail に基づいて過去 90 日間の未使用権限を分析し、最小権限化を提案し、CI/CD パイプラインで IAM ポリシーを事前検証して不正なポリシーのデプロイをブロックします。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け: IAM Access Analyzer とは何か、なぜ外部アクセス検出が重要かを学びたい方
- セキュリティエンジニア向け: External Access・Unused Access・Policy Validation の実装・運用
- DevSecOps / SRE 向け: CI/CD パイプラインでの Policy Validation・自動ポリシーチェック
- セキュリティ監査向け: アクセス許可分析・最小権限化・コンプライアンス証拠資料生成
- 意思決定者向け: Sonrai・CloudKnox・Ermetic との比較・投資判断
2026 年の IAM Access Analyzer エコシステム
- Policy Validation 拡大: Resource Control Policies(RCP)対応・複数言語サポート
- Unused Access の AI 駆動最適化: 機械学習による未使用権限の自動削除提案
- マルチアカウント分析: Organizations での一元的な権限分析・可視化
- Resource Control Policies(RCP): SCP の後継、より細粒度な制御対応
- クロスアカウント権限分析: 複数アカウント間のアクセス関係を自動発見
- ChatGPT / AI ポリシー生成: AI による最小権限ポリシー自動生成・最適化提案
定義
AWS 公式による定義:
“IAM Access Analyzer helps you identify resources in your AWS environment that are shared with an external entity. IAM Access Analyzer uses automated reasoning to analyze resource-based policies in your AWS environment.”
IAM Access Analyzer は IAM・リソースベースポリシーの自動セキュリティ検証プラットフォーム です。
目次
- 概要
- IAM Access Analyzer が解決する課題
- 主な特徴
- アーキテクチャ
- External Access Analyzer
- Unused Access Analyzer
- Policy Validation
- Analyzer Type:Account Level vs Organization Level
- Zone of Trust(信頼ゾーン)
- Finding の詳細
- Policy Validator
- Policy Generation(ポリシー生成)
- Organizations 統合
- 他の類似ツールとの比較
- クライアント・エコシステム
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・活用シーン
- 導入ロードマップ
- 実装チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ: IAM Access Analyzer は「あなたの AWS リソースのポリシーを自動的に調べて、誰がアクセスできるか を教えてくれるサービス」です。例えば、S3 バケットポリシーで誤って “Principal”: “*” を設定していたり、KMS キーを他の AWS アカウントと共有していたり、Lambda を外部 API で呼び出せるように設定していたりという 設定ミスを自動検出 し、さらに「IAM ロール・ユーザーが実際に使用していない権限」を検出して「この権限は削除できます」と提案します。
IAM Access Analyzer は以下を実現します。
| 機能 | 説明 |
|---|---|
| External Access 検出 | リソースベースポリシーで、意図しない外部(別アカウント・パブリック)アクセスが可能かを自動検出 |
| Unused Access 分析 | CloudTrail に基づいて、過去 90 日で使用されていない IAM 権限を検出・削除提案 |
| Policy Validation | IAM ポリシーをデプロイ前に検証し、構文エラー・セキュリティ警告を検出 |
| Policy Generation | CloudTrail から実際のアクセスパターンを学習し、最小権限ポリシーを自動生成 |
| Risk Scoring | 外部アクセスの リスクを数値化して優先付け |
| Organizations 統合 | 複数アカウント を一元的に分析・監視 |
| EventBridge 連携 | Finding を他の AWS サービスで自動処理 |
| 監査ログ | アクセス許可変更を CloudTrail に記録 |
IAM Access Analyzer が解決する課題
1. リソースベースポリシーの設定ミスによるデータ漏洩リスク
課題: S3 バケットポリシーで誤って Principal: “*” を設定してパブリック化、KMS キーを外部アカウントと共有、Lambda を外部 API で呼び出せるように設定…これらの設定ミスを手動レビューで検出するのは困難で、見落としがちく、データ漏洩につながる。
Access Analyzer の解決:
全リソースベースポリシーを自動分析
├── S3 バケットポリシー
├── KMS キーポリシー
├── Lambda リソースベースポリシー
├── SQS・SNS キューポリシー
└── ECR リポジトリポリシー
↓ 意図しない外部アクセスを検出
Finding 生成:
「S3 バケット xxx がパブリックアクセス可能」
「KMS キー yyy を Account ABC123 が復号可能」
「Lambda 関数 zzz を インターネットから呼び出し可能」
2. 過剰な IAM 権限による権限昇格リスク
課題: IAM ロール・ユーザーに AdministratorAccess を付与していても、実際には EC2 と S3 の操作のみ。多くの権限が未使用で、権限昇格攻撃のリスク。
Access Analyzer の解決:
過去 90 日間の CloudTrail から実際のアクセスを分析
├── 使用権限:ec2:*(20 アクション)、s3:GetObject(1 アクション)
└── 未使用権限:databases:*(100+)、iam:*(50+)、rds:*(100+)等
最小権限ポリシー を提案:
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:Get*",
"ec2:List*",
"s3:GetObject"
],
"Resource": "*"
}
結果:権限を 5% に削減、セキュリティリスク大幅低減
3. CI/CD パイプラインでのポリシー検証不備
課題: IAM ポリシーを CloudFormation / Terraform で定義し、本番デプロイするが、構文エラー・セキュリティ警告・ベストプラクティス違反を検証していない場合がある。
Access Analyzer の解決:
CodePipeline → CodeBuild
↓ ポリシー Validation
Access Analyzer Policy Validator
├── 構文チェック(JSON)
├── セキュリティ警告(過剰な権限)
├── ベストプラクティス違反
└── リソース存在確認
不正なポリシー → デプロイ自動ブロック
正常なポリシー → 本番環境へ自動デプロイ
4. 複数アカウント環境でのアクセス関係の把握困難性
課題: 50 アカウント環境で「Account A の IAM ロールが Account B・C の何にアクセスできるか」を把握するのは困難。クロスアカウント権限の意図しない設定を見落としがち。
Access Analyzer の解決:
Organizations レベルの分析で全アカウント を一元的に監視
├── Account A の IAM ロール → Account B の S3 へのアクセス権
├── Account A の IAM ロール → Account C の KMS キーの使用権
└── Account D の Lambda → Account A のログへのアクセス権
クロスアカウント権限マップを自動生成
→ 意図しないアクセス関係を即座に検出・改善
主な特徴
1. External Access Analysis
対象リソース:
├── Amazon S3(バケット・オブジェクト)
├── AWS KMS(キー)
├── AWS SQS(キュー)
├── AWS SNS(トピック)
├── AWS Lambda(関数・レイヤー)
├── AWS ECR(リポジトリ)
├── AWS Secrets Manager(シークレット)
├── IAM ロール(trust policy)
└── その他(EBS・EFS・API Gateway等)
分析方法:
リソースベースポリシー → AWS 自動推論エンジン(Zelkova)
├── Principal が外部か確認
├── Condition が不正か確認
└── Action で過剰な権限か確認
2. Unused Access Analysis(有料)
分析対象:
├── IAM ユーザー
├── IAM ロール(サービスロール含む)
├── IAM グループ
└── アクセスキー・コンソールパスワード
分析基準(過去 90 日):
├── 未使用ロール
├── 未使用アクセスキー
├── 未使用コンソールパスワード
└── 未使用の Action レベル権限
削除提案:
権限を実際に使用した Action のみに削減
→ セキュリティスコア向上・権限昇格リスク低減
3. Policy Validation
検証項目:
├── 文法チェック(JSON)
├── AWS API との互換性確認
├── セキュリティ警告
│ └── "Principal": "*"
│ └── "Action": "*"
│ └── "Resource": "*"(3 つ同時)
├── ベストプラクティス違反
│ └── 具体的なリソース指定なし
│ └── 具体的な Action 指定なし
├── リソース存在確認
└── タイプ推論(Policy の intent を推測)
アーキテクチャ
graph TB
IAM["IAM Policies<br/>S3/KMS/Lambda<br/>リソースベース"]
CT["CloudTrail<br/>90日分の<br/>アクティビティ"]
EA["External Access<br/>Analyzer<br/>リソース検証"]
UA["Unused Access<br/>Analyzer<br/>権限分析"]
PV["Policy<br/>Validator"]
PG["Policy<br/>Generator"]
FindingsDB["Findings Database"]
Console["Console"]
API["API"]
EB["EventBridge"]
IAM -->|リソース分析| EA
CT -->|アクティビティ分析| UA
IAM -->|デプロイ前検証| PV
CT -->|学習| PG
EA --> FindingsDB
UA --> FindingsDB
FindingsDB --> Console
FindingsDB --> API
FindingsDB --> EB
style EA fill:#fff3e0
style UA fill:#fff3e0
style PV fill:#e8f5e9
style PG fill:#f3e5f5
External Access Analyzer
External Access Finding
{
"FindingType": "ExternalAccess",
"Status": "ACTIVE",
"ResourceType": "AWS::S3::Bucket",
"ResourceArn": "arn:aws:s3:::my-public-bucket",
"ResourceName": "my-public-bucket",
"IsPrincipalExternal": true,
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject"
],
"Condition": null,
"CreatedAt": "2026-04-26T10:15:00Z",
"UpdatedAt": "2026-04-26T10:15:00Z",
"Severity": "HIGH"
}
検出タイプ
| タイプ | 説明 |
|---|---|
| Unrestricted Access | Principal: “*” → パブリックアクセス |
| Cross-Account Access | 別 AWS アカウントからのアクセス |
| Service Principal | 別 AWS サービス(CloudFront・Lambda 等)からのアクセス |
| Federated Access | 外部 IdP からのアクセス(SAML・OIDC) |
Unused Access Analyzer
Unused Access Finding
IAM ロール:DataAnalyst
付与権限(Policy):
├── s3:*(S3 全権限)
├── rds:*(RDS 全権限)
├── dynamodb:*(DynamoDB 全権限)
├── iam:*(IAM 全権限)
└── ec2:*(EC2 全権限)
CloudTrail から過去 90 日の実際の使用:
├── s3:GetObject(1 回)
├── s3:ListBucket(5 回)
├── dynamodb:Query(10 回)
└── [その他のすべてのアクション] → 0 回
Unused Access Finding:
削除可能な権限:
├── rds:*(未使用)
├── iam:*(未使用)
├── ec2:*(未使用)
├── s3:PutObject(未使用)
├── s3:DeleteObject(未使用)
└── [多数]
推奨ポリシー:
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"dynamodb:Query"
],
"Resource": "*"
}
Policy Validation
Validation in CI/CD Pipeline
# CodeBuild の buildspec.yml
version: 0.2
phases:
validate:
commands:
- |
aws accessanalyzer validate-policy \
--policy-document file://iam-policy.json \
--policy-type IDENTITY_POLICY \
--output json > validation-result.json
- |
if grep -q '"findingType": "ERROR"' validation-result.json; then
echo "Policy validation failed!"
cat validation-result.json
exit 1
else
echo "Policy validation passed!"
fi
# 結果:エラーなら デプロイブロック、成功なら 自動デプロイ
Validation 結果
{
"findings": [
{
"findingType": "ERROR",
"issueCode": "RESOURCE_ARN_NOT_SPECIFIED",
"message": "Resource should be specific ARN instead of '*'",
"locations": [
{
"span": {
"start": { "line": 8, "column": 25 },
"end": { "line": 8, "column": 28 }
}
}
]
},
{
"findingType": "WARNING",
"issueCode": "ACTION_NOT_SPECIFIC",
"message": "Action should be more specific than 's3:*'",
"locations": [...]
}
]
}
Analyzer Type:Account Level vs Organization Level
| タイプ | 対象 | 検出範囲 | 推奨シーン |
|---|---|---|---|
| Account Level | 単一アカウント | そのアカウント内のリソース | 小規模・テスト環境 |
| Organization Level | Organizations 傘下の全アカウント | 全メンバーアカウント のリソース | エンタープライズ・本番 |
Organization Level Analyzer:
Zone of Trust = Organization(全メンバーアカウント)
├── Organization 内のアカウント同士のアクセス → OK(信頼ゾーン内)
└── Organization 外からのアクセス → Finding(外部アクセス)
Zone of Trust(信頼ゾーン)
Zone of Trust の設定
Account Level Analyzer:
Zone of Trust = 単一アカウント
├── 同一アカウント内のリソース → OK
└── 別アカウント・パブリック → Finding
Organization Level Analyzer:
Zone of Trust = Organization(全メンバーアカウント)
├── Organization 内のアカウント同士 → OK
└── Organization 外・パブリック → Finding
Federated Analyzer:
Zone of Trust = 特定の外部 IdP
├── 指定 IdP からのアクセス → OK
└── その他すべて → Finding
Finding の詳細
Finding フィールド
{
"FindingId": "finding-abc123",
"FindingType": "ExternalAccess",
"Status": "ACTIVE",
"ResourceType": "AWS::S3::Bucket",
"ResourceArn": "arn:aws:s3:::my-bucket",
"ResourceName": "my-bucket",
"IsPrincipalExternal": true,
"Principal": {
"AWS": "*"
},
"Action": ["s3:GetObject", "s3:ListBucket"],
"Condition": null,
"CreatedAt": "2026-04-26T10:00:00Z",
"UpdatedAt": "2026-04-26T10:00:00Z",
"Severity": "HIGH"
}
Policy Validator
CLI での検証
# Identity Policy の検証
aws accessanalyzer validate-policy \
--policy-document file://policy.json \
--policy-type IDENTITY_POLICY
# Resource Policy の検証
aws accessanalyzer validate-policy \
--policy-document file://s3-bucket-policy.json \
--policy-type RESOURCE_POLICY
Policy Generation(ポリシー生成)
CloudTrail から学習して最小権限ポリシーを生成
IAM ロール:EC2Role
過去 90 日間の実際のアクティビティ:
├── ec2:DescribeInstances(100 回)
├── ec2:StartInstances(5 回)
├── ec2:StopInstances(3 回)
├── logs:CreateLogGroup(1 回)
├── logs:CreateLogStream(1 回)
├── logs:PutLogEvents(50 回)
└── cloudwatch:PutMetricData(100 回)
Access Analyzer が自動生成:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "cloudwatch:PutMetricData",
"Resource": "*"
}
]
}
Organizations 統合
Organization Level Analyzer
Organization 管理アカウント
├── Access Analyzer(Organization Level)有効化
└── 全メンバーアカウント を自動的に監視
├── Account A:20 個 Finding
├── Account B:3 個 Finding
├── Account C:0 個 Finding
└── Account D:5 個 Finding
統一ダッシュボール:
├── 組織全体:28 個 Finding
├── High 以上:12 個
├── アカウント別リスク分布
└── リソースタイプ別リスク分布
他の類似ツールとの比較
| ツール | 特徴 | 対象 | 推奨シーン |
|---|---|---|---|
| IAM Access Analyzer | AWS native、無料(External)・有料(Unused) | AWS のみ | AWS single / multi-account |
| Sonrai | エンタープライズ向け、AI 駆動分析 | AWS/Azure/GCP | 大規模組織・複数クラウド |
| CloudKnox | Identity security platform、リスク評価 | AWS/Azure/GCP/K8s | アイデンティティ セキュリティ重視 |
| Ermetic(Wiz に買収) | クラウドセキュリティ CSPM | AWS/Azure/GCP | CSPM + IAM 分析 |
| Open Policy Agent(OPA) | Policy as Code、OSS | ポリシー検証 | DevSecOps・多言語環境 |
AWS 環境での推奨:
- AWS のみ → IAM Access Analyzer (最高推奨、無料)
- External Access + Unused Access → IAM Access Analyzer(有料版)
- マルチクラウド → Sonrai + IAM Access Analyzer
クライアント・エコシステム
AWS Management Console
IAM Access Analyzer コンソール
├── Analyzers(作成・管理)
├── Findings(External Access / Unused Access)
├── Policy Validator
├── Insights(統計・傾向)
└── Settings(Organizations・通知)
AWS CLI / SDKs
# External Access Finding を取得
aws accessanalyzer list-findings \
--analyzer-arn "arn:aws:access-analyzer:..." \
--filter '{"name": "resourceType", "contains": ["AWS::S3::Bucket"]}'
# Unused Access を分析
aws accessanalyzer get-analyzed-resource \
--analyzer-arn "..." \
--resource-arn "arn:aws:iam::123456789012:role/MyRole"
# Policy を検証
aws accessanalyzer validate-policy \
--policy-document file://policy.json \
--policy-type IDENTITY_POLICY
IaC(CloudFormation / Terraform)
# Access Analyzer を有効化
resource "aws_accessanalyzer" "organization" {
analyzer_name = "organization-analyzer"
type = "ORGANIZATION"
}
# External Access Finding を監視
data "aws_accessanalyzer_findings" "external_access" {
analyzer_arn = aws_accessanalyzer.organization.arn
filter {
name = "findingType"
contains = ["ExternalAccess"]
}
filter {
name = "status"
contains = ["ACTIVE"]
}
}
ベストプラクティス
✅ 推奨パターン
-
Organization Level Analyzer を有効化
Organizations 環境では Organization Level Analyzer で全アカウント一元監視 → Account Level より効率的 -
External Access Analyzer は常時有効
無料で意図しない公開設定を検出 → データ漏洩リスク大幅低減 -
Unused Access Analyzer で定期的に権限監査
四半期ごとに 未使用権限を検出・削除 → 権限昇格リスク削減 -
CI/CD パイプラインに Policy Validation 組み込み
CloudFormation / Terraform デプロイ前に Policy Validator → 不正なポリシーのデプロイをブロック -
EventBridge と連携して自動対応
Finding 検出 → Lambda で自動修復(BPA 有効化等) → MTTR 短縮 -
定期的な Finding レビュー・アクション
週次:新規 Finding 確認 月次:解決状況レビュー 四半期:権限監査・削除
❌ アンチパターン
-
Account Level Analyzer だけで管理(Organizations 環境)
❌ 50 アカウント × 50 分析アナライザー → 管理困難 ✓ Organization Level で一元管理 -
External Access Finding を放置
❌ パブリックアクセス可能な リソースを見つけても対応しない ✓ 即座に BPA 有効化・権限削除 -
Unused Access を削除しない
❌ 未使用権限を放置 → セキュリティリスク増加 ✓ 四半期ごとに削除提案を実施 -
Policy Validation なしで本番デプロイ
❌ CloudFormation デプロイ時に ポリシーエラーで失敗 ✓ デプロイ前に Validation -
EventBridge 自動化なし(手動対応)
❌ Finding を手動確認・手動修復 ✓ Lambda で自動修復・通知
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| Analyzer が Finding を生成しない | Analyzer がまだ初期化中 / リソースが分析対象外 | 1-2 時間待機、または手動でポリシー変更をトリガー |
| External Access Finding が誤検知 | Condition による除外ルール が複雑 | Finding の詳細を確認・Zelkova(自動推論エンジン)の判定ロジック確認 |
| Unused Access が検出されない | CloudTrail ログが不完全 / 分析対象外 | CloudTrail が有効化・90 日分データ確認 |
| Policy Validation エラーが不正確 | IAM ポリシーの複雑な構文 | AWS ドキュメント・Policy Simulator で検証 |
| Organization Level Analyzer が同期されない | メンバーアカウントが遅延 | 数分待機、またはコンソールをリフレッシュ |
2025-2026 最新動向
1. AI / 機械学習による権限推奨最適化
未使用権限の自動削除提案が高精度化
- CloudTrail + 機械学習で実際の使用パターンをより正確に分析
- 偽陽性(誤検知)の削減
2. Resource Control Policies(RCP)対応
SCP の後継 RCP のサポート開始
- より細粒度な制御に対応
3. Policy Generation の AI 駆動化
CloudTrail から ChatGPT / Claude レベルの生成品質
- 自動生成ポリシーの品質向上
- ベストプラクティス自動適用
4. クロスアカウント権限マップの可視化
マルチアカウント環境での権限関係を自動マッピング
- 視覚的に権限フローを理解
- 意図しないアクセス関係を即座に検出
学習リソース
AWS 公式ドキュメント
-
What is IAM Access Analyzer
-
Getting Started with IAM Access Analyzer
-
IAM Access Analyzer Findings
ベストプラクティス
- AWS Security Blog - IAM Access Analyzer
- GitHub - AWS Samples IAM Analyzer
実装例・活用シーン
シーン 1:S3 バケットの設定ミス検出
S3 バケット:customer-data
ポリシー:
{
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::customer-data/*"
}
Access Analyzer が検出:
Finding:"ExternalAccess"
Severity:"CRITICAL"
Message:"Bucket is publicly accessible"
Lambda で自動修復:
1. BPA(Block Public Access)を有効化
2. バケットポリシーを削除 or 制限
3. CloudTrail に記録
4. Slack に通知
シーン 2:IAM ロール権限の最小化
IAM ロール:DataProcessor
現在の権限:AdministratorAccess(全権限)
CloudTrail 過去 90 日の実際の使用:
s3:GetObject・s3:PutObject・dynamodb:Query のみ
Access Analyzer が生成:
推奨ポリシー:
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"dynamodb:Query"
],
"Resource": [
"arn:aws:s3:::data-bucket/*",
"arn:aws:dynamodb:*:*:table/ProcessTable"
]
}
結果:権限を 5% に削減、リスク 95% 低減
シーン 3:CI/CD でのポリシー自動検証
開発者が IAM ポリシーを定義
policy.json(不正な内容):
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
CodeBuild で自動検証:
aws accessanalyzer validate-policy ...
結果:
Error:"Action should be specific"
Error:"Resource should be specific"
デプロイ自動ブロック、開発者に通知
→ 修正が必要
導入ロードマップ
Phase 1:セットアップ(0-1 ヶ月)
Week 1:
☐ IAM Access Analyzer 有効化(Account / Organization Level)
☐ Zone of Trust 設定
☐ Analyzer ステータス確認
Week 2-3:
☐ External Access Finding を確認
☐ High 以上の Finding に対応
☐ EventBridge ルール設定
Week 4:
☐ Policy Validator 導入(CI/CD パイプライン)
☐ 自動検証テスト
Phase 2:本運用(1-3 ヶ月)
Month 2:
☐ External Access Finding 定期レビュー(週次)
☐ Lambda での自動修復テスト
☐ SNS・Slack 通知設定
Month 3:
☐ Unused Access Analyzer 有効化(有料)
☐ 未使用権限分析・削除プロセス確立
☐ 月次監査レポート作成
Phase 3:最適化(3-6 ヶ月)
Month 4-5:
☐ Policy Generator での最小権限ポリシー生成
☐ 四半期ごとの権限監査実施
☐ セキュリティスコア改善
Month 6:
☐ 年次セキュリティ監査レポート
☐ ROI 分析(リスク削減・工数削減)
☐ 次年度計画・予算確保
実装チェックリスト
- [ ] IAM Access Analyzer 有効化(Account or Organization Level)
- [ ] Zone of Trust 正しく設定
- [ ] External Access Analyzer の Finding 確認
- [ ] High 以上 Finding に対応完了
- [ ] EventBridge + Lambda 統合テスト完了
- [ ] SNS / Slack 通知設定完了
- [ ] Policy Validator を CI/CD パイプラインに統合
- [ ] Unused Access Analyzer 有効化(有料)
- [ ] CloudTrail 90 日分データ確保
- [ ] 月次・四半期レビュー プロセス確立
まとめ
IAM Access Analyzer は AWS セキュリティの自動検証プラットフォーム です。
主要機能
- External Access 検出: 意図しない外部アクセス可能なリソースを自動検出(無料)
- Unused Access 分析: CloudTrail から未使用権限を検出・削除提案(有料)
- Policy Validation: デプロイ前にポリシーを検証・セキュリティ警告(無料)
- Policy Generation: 実際のアクティビティから最小権限ポリシーを自動生成
- Organizations 統合: 全アカウントを一元的に監視・管理
導入メリット
- セキュリティ向上: データ漏洩・権限昇格リスクを削減
- 権限最小化: 実際の使用パターンに基づいた最小権限実現
- 運用効率化: 自動修復・通知で MTTR 短縮
- コンプライアンス: ポリシー検証・監査ログで規制対応
IAM Access Analyzer 導入により、AWS セキュリティポスチャーの自動検証・継続改善 が実現できます。
参考文献
AWS 公式ドキュメント
- https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html
Learning Resources
- AWS Security Blog - IAM Access Analyzer articles
- AWS re:Invent sessions
- AWS Skill Builder courses
最終更新:2026-04-26 バージョン:v2.0