目次

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・リソースベースポリシーの自動セキュリティ検証プラットフォーム です。


目次

  1. 概要
  2. IAM Access Analyzer が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. External Access Analyzer
  6. Unused Access Analyzer
  7. Policy Validation
  8. Analyzer Type:Account Level vs Organization Level
  9. Zone of Trust(信頼ゾーン)
  10. Finding の詳細
  11. Policy Validator
  12. Policy Generation(ポリシー生成)
  13. Organizations 統合
  14. 他の類似ツールとの比較
  15. クライアント・エコシステム
  16. ベストプラクティス
  17. トラブルシューティング
  18. 2025-2026 最新動向
  19. 学習リソース
  20. 実装例・活用シーン
  21. 導入ロードマップ
  22. 実装チェックリスト
  23. まとめ
  24. 参考文献

概要

初心者向けメモ: 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"]
  }
}

ベストプラクティス

✅ 推奨パターン

  1. Organization Level Analyzer を有効化

    Organizations 環境では Organization Level Analyzer で全アカウント一元監視
    → Account Level より効率的
    
  2. External Access Analyzer は常時有効

    無料で意図しない公開設定を検出
    → データ漏洩リスク大幅低減
    
  3. Unused Access Analyzer で定期的に権限監査

    四半期ごとに 未使用権限を検出・削除
    → 権限昇格リスク削減
    
  4. CI/CD パイプラインに Policy Validation 組み込み

    CloudFormation / Terraform デプロイ前に Policy Validator
    → 不正なポリシーのデプロイをブロック
    
  5. EventBridge と連携して自動対応

    Finding 検出 → Lambda で自動修復(BPA 有効化等)
    → MTTR 短縮
    
  6. 定期的な Finding レビュー・アクション

    週次:新規 Finding 確認
    月次:解決状況レビュー
    四半期:権限監査・削除
    

❌ アンチパターン

  1. Account Level Analyzer だけで管理(Organizations 環境)

    ❌ 50 アカウント × 50 分析アナライザー → 管理困難
    ✓ Organization Level で一元管理
    
  2. External Access Finding を放置

    ❌ パブリックアクセス可能な リソースを見つけても対応しない
    ✓ 即座に BPA 有効化・権限削除
    
  3. Unused Access を削除しない

    ❌ 未使用権限を放置 → セキュリティリスク増加
    ✓ 四半期ごとに削除提案を実施
    
  4. Policy Validation なしで本番デプロイ

    ❌ CloudFormation デプロイ時に ポリシーエラーで失敗
    ✓ デプロイ前に Validation
    
  5. 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 公式ドキュメント

  1. What is IAM Access Analyzer

  2. Getting Started with IAM Access Analyzer

  3. IAM Access Analyzer Findings

ベストプラクティス

  1. AWS Security Blog - IAM Access Analyzer
  2. 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 セキュリティの自動検証プラットフォーム です。

主要機能

  1. External Access 検出: 意図しない外部アクセス可能なリソースを自動検出(無料)
  2. Unused Access 分析: CloudTrail から未使用権限を検出・削除提案(有料)
  3. Policy Validation: デプロイ前にポリシーを検証・セキュリティ警告(無料)
  4. Policy Generation: 実際のアクティビティから最小権限ポリシーを自動生成
  5. Organizations 統合: 全アカウントを一元的に監視・管理

導入メリット

  • セキュリティ向上: データ漏洩・権限昇格リスクを削減
  • 権限最小化: 実際の使用パターンに基づいた最小権限実現
  • 運用効率化: 自動修復・通知で MTTR 短縮
  • コンプライアンス: ポリシー検証・監査ログで規制対応

IAM Access Analyzer 導入により、AWS セキュリティポスチャーの自動検証・継続改善 が実現できます。


参考文献

AWS 公式ドキュメント

  1. https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html
  2. https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html
  3. https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-findings.html

Learning Resources

  1. AWS Security Blog - IAM Access Analyzer articles
  2. AWS re:Invent sessions
  3. AWS Skill Builder courses

最終更新:2026-04-26 バージョン:v2.0