上級 35分 Lesson 18

Access Analyzer・Trusted Advisor・Audit Manager

IAM Access Analyzerの外部/未使用アクセス分析、Trusted Advisorセキュリティチェック、Audit Manager監査を徹底解説

AWS Access Analyzer Trusted Advisor Audit Manager SCS-C03 Security

Access Analyzer・Trusted Advisor・Audit Manager

本章ではIAMアクセス分析・信頼されたアドバイザー・監査マネージャーの3つのセキュリティサービスを徹底解説します。これらはセキュリティポスチャーの可視化と継続的な改善を実現する重要なツールです。

Access Analyzer Zone of Trust 概念図

Loading diagram...

Access Analyzer ポリシー自動生成フロー

Loading diagram...


1. IAM Access Analyzer 深掘り

1.1 概要と基本機能

IAM Access Analyzerは、AWSリソースへのアクセスパーミッションを包括的に分析し、セキュリティリスクを検出するサービスです。

IAM Access Analyzer の役割
├─ 外部アクセス検出 (Zone of Trust外からのアクセスを可視化)
├─ 未使用アクセス分析 (CloudTrailベースの使用状況追跡)
├─ ポリシー自動生成 (CloudTrailから最小権限ポリシーを学習)
├─ ポリシー検証 (文法チェック・セキュリティ警告)
└─ カスタムポリシーチェック (新規ポリシーの安全性確認)

1.2 Zone of Trust 概念

Zone of Trust はAccess Analyzerの中核概念です。

Zone of Trust の定義:

  • デフォルト: 自AWSアカウント
  • 組織モード: 組織全体のアカウント群

Zone外(外部)からのアクセス:

  • 他のAWSアカウント ✗
  • 外部のプリンシパル(ルートユーザー)✗
  • Federated ユーザー ✗

例: S3バケットのクロスアカウントアクセス

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::EXTERNAL-ACCOUNT-ID:root"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

このバケットポリシーはZone of Trust外のアカウントにアクセスを許可しているため、Findingが生成されます。

1.3 外部アクセス分析(External Access)

Finding の種類と重要度

Finding種別説明対象リソース
Publicインターネット全体にアクセス許可S3, KMS, Lambda等
Cross-AccountZone外のAWSアカウントにアクセス許可IAM Role, S3, SQS等
AWS ServiceAWSサービスプリンシパルへのアクセス許可KMS, S3, Lambda等
Federatedフェデレーション IDPへのアクセス許可IAM Role (AssumeRole)

対応リソースタイプ

Access Analyzerが分析可能なリソース:

  • S3 Bucket(バケットポリシー)
  • IAM Role(信頼ポリシー・インラインポリシー)
  • KMS Key(キーポリシー)
  • Lambda Function(リソースベースドポリシー)
  • SQS Queue(キューポリシー)
  • SNS Topic(トピックポリシー)
  • Secrets Manager Secret(リソースベースドポリシー)
  • EC2 Image(公開AMI)
  • RDS DB Cluster(パブリックアクセシビリティ)
  • EBS Volume(パブリック共有)

制限事項:

  • VPC関連 (SG, NACLは分析不可)
  • CloudFront(分析対象外)
  • API Gateway(分析対象外)

検出例:S3 Public Access

# Access Analyzerでパブリックアクセスを検出
aws accessanalyzer list-findings \
  --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:111122223333:analyzer/MyAnalyzer \
  --filter '[
    {
      "property": "resourceType",
      "contains": ["S3"]
    },
    {
      "property": "status",
      "eq": ["ACTIVE"]
    }
  ]'

# 結果例
{
  "findings": [
    {
      "id": "finding-xxx",
      "resourceType": "AWS::S3::Bucket",
      "resourceName": "my-public-bucket",
      "findingType": "ExternalAccess",
      "status": "ACTIVE",
      "principal": {
        "AWS": "*"
      },
      "action": ["s3:GetObject"],
      "condition": {},
      "createdAt": "2026-04-27T10:00:00Z",
      "analyzerArn": "..."
    }
  ]
}

1.4 未使用アクセス分析(Unused Access)

CloudTrailの過去90日間のログをベースに、使用されていないアクセスを検出します。

追跡対象

未使用アクセス検出の対象:
  1. 未使用IAMロール
     - 過去90日間にAssumeされていないロール
     - 信頼ポリシーで許可されているが使用なし

  2. 未使用権限(Unused Permissions)
     - ロールに付与されているが実行されていない権限
     - CloudTrailで実行ログが見当たらない

  3. 未使用アクセスキー
     - 過去90日間にAPI呼び出しがないキー
     - IAMユーザーの認証情報ローテーションの目安

  4. 未使用セッション(ConsoleLogin)
     - マネジメントコンソール未ログイン期間

API 例

# Unused IAM Rolesを検出
aws accessanalyzer list-findings \
  --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:111122223333:analyzer/MyAnalyzer \
  --filter '[
    {
      "property": "findingType",
      "eq": ["UnusedIamRole"]
    }
  ]'

# 結果フォーマット
{
  "findings": [
    {
      "id": "finding-yyy",
      "resourceType": "AWS::IAM::Role",
      "resourceName": "old-lambda-execution-role",
      "findingType": "UnusedIamRole",
      "status": "ACTIVE",
      "lastAccessedTime": "2026-01-15T08:30:00Z",
      "analyzedAt": "2026-04-27T10:00:00Z"
    }
  ]
}

1.5 ポリシー生成(Policy Generation)

CloudTrailログから学習し、実際に使用されたアクション群から最小権限ポリシーを自動生成します。

プロセス

  1. CloudTrailログ分析

    • 指定期間内の全APIコール記録
    • ユーザー/ロール単位での実行アクション抽出
  2. アクション集約

    • 重複排除
    • リソースタイプの特定
    • 条件の抽出(IP制限など)
  3. ポリシー生成

    • JSON形式で出力
    • Deny文は含まず
    • コメント行で分析対象期間を表示

実装例

# ロールを指定してポリシー生成開始
aws accessanalyzer validate-policy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
      }
    ]
  }' \
  --policy-type IDENTITY_POLICY

# 結果:セキュリティワーニングが返される
{
  "findings": [
    {
      "findingType": "ERROR",
      "issueCode": "MISSING_REQUIRED_ATTRIBUTE",
      "message": "Principal is required"
    },
    {
      "findingType": "SECURITY_WARNING",
      "issueCode": "RESOURCE_WILDCARD_WITH_ADMINISTRATIVE_ACTION",
      "message": "Allow with Resource: * grants excessive permissions"
    }
  ]
}

1.6 ポリシー検証(Policy Validation)

新しいポリシーをデプロイする前に、セキュリティ問題や文法エラーを検出します。

チェック内容

ポリシー検証の項目:

  文法チェック (ERROR):
    - 必須フィールドの欠落
    - JSONのシンタックスエラー
    - 無効なアクション/リソースARN

  セキュリティ警告 (SECURITY_WARNING):
    - ワイルドカード (*) の過度な使用
    - 管理アクション(IAM, STS等)へのワイルドカード許可
    - 未使用条件キー
    - "Principal: *" の使用

  情報 (INFORMATION):
    - deprecated アクションの使用
    - 推奨事項

CLI例

# カスタムポリシーをチェック
aws accessanalyzer validate-policy \
  --policy-document file://my-policy.json \
  --policy-type IDENTITY_POLICY

# 出力
{
  "findings": [
    {
      "findingType": "SECURITY_WARNING",
      "issueCode": "RESOURCE_WILDCARD_WITH_ADMINISTRATIVE_ACTION",
      "message": "iam:CreateRole with Resource: * is overly permissive",
      "locations": [
        {
          "path": ["/Statement/0/Action"],
          "span": {"start": 100, "end": 120}
        }
      ]
    }
  ],
  "result": "MANUAL_REVIEW_REQUIRED"
}

1.7 カスタムポリシーチェック(Custom Policy Check)

新しいポリシーをアタッチしたときに、期待しない権限が付与されないかを検証します。

# ロールに新ポリシーを追加しようとしている
# 期待: S3読み取りのみ
# 検証: EC2への権限がないか確認

aws accessanalyzer validate-policy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": ["s3:GetObject", "s3:ListBucket"],
        "Resource": ["arn:aws:s3:::mybucket/*"]
      }
    ]
  }' \
  --policy-type IDENTITY_POLICY \
  --validate-policy-resource-type IAM_ROLE

1.8 アーカイブルール(Archive Rules)

Findingを自動的にアーカイブ(非表示化)するルールを設定できます。これにより、既知・許容可能なアクセスパターンをノイズから除外できます。

# 特定のクロスアカウントアクセスをアーカイブ
aws accessanalyzer create-archive-rule \
  --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:111122223333:analyzer/MyAnalyzer \
  --rule-name AllowPartnerCrossAccount \
  --filter '[
    {
      "property": "findingType",
      "eq": ["CrossAccountAccess"]
    },
    {
      "property": "principal.AWS",
      "eq": ["arn:aws:iam::222233334444:root"]
    }
  ]'

# リストアップ
aws accessanalyzer list-archive-rules \
  --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:111122223333:analyzer/MyAnalyzer

# アーカイブルール削除
aws accessanalyzer delete-archive-rule \
  --analyzer-arn arn:aws:access-analyzer:ap-northeast-1:111122223333:analyzer/MyAnalyzer \
  --rule-name AllowPartnerCrossAccount

1.9 組織での委任管理者(Organization Delegated Admin)

Organizations環境では、管理アカウントから委任管理者を指定し、一元的にアクセス分析を行えます。

# 管理アカウントから委任管理者を登録
aws organizations register-delegated-administrator \
  --account-id 111122223333 \
  --service-principal access-analyzer.amazonaws.com

# 委任管理者側でアナライザー作成(複数アカウント対象)
aws accessanalyzer create-analyzer \
  --analyzer-name OrgAnalyzer \
  --type ORGANIZATION \
  --tags "Environment=Prod,Team=Security"

# 結果: 組織全体のリソースアクセス分析が可能

1.10 制約・できないこと

Access Analyzer の制約:

  リアルタイム性:
    - CloudTrailの取り込みに遅延(数時間)
    - Findingの更新頻度は最大1日1回
    - 即座の脅威検出には不向き

  対応リソース制限:
    - VPC Security Group 未対応
    - Network ACL 未対応
    - CloudFront Distribution 未対応
    - API Gateway 一部未対応
    - Route 53 未対応

  分析範囲:
    - リソースベースドポリシーのみ
    - IAM ユーザーのアクセスキー順位は簡易
    - アクション実行の成功/失敗は区別しない

  修復:
    - Findingの自動修復なし
    - 管理者が手動対応の必要

2. AWS Trusted Advisor 深掘り

2.1 概要と役割

Trusted Advisorはセキュリティ、コスト最適化、パフォーマンス、耐障害性、サービスのクォータを総合的にチェックするサービスです。本章ではセキュリティカテゴリを中心に解説します。

Trusted Advisor のカテゴリ構成
├─ セキュリティ (Security) ← SCS-C03出題範囲
├─ 費用最適化 (Cost Optimization)
├─ パフォーマンス (Performance)
├─ 耐障害性 (Fault Tolerance)
└─ サービスクォータ (Service Limits)

2.2 セキュリティチェック項目

2.2.1 Core Checks(すべてのプランで利用可)

Core Security Checks:

  1. MFA on AWS Account Root User
     チェック: ルートユーザーにMFAが有効か
     重要度: ★★★★★
     修復方法: IAM > セキュリティ認証情報 > MFA有効化

  2. Security Groups - Specific Ports Unrestricted
     チェック: SGのインバウンドルールが危険なポートを開いているか
     対象ポート: 
       - 3306 (MySQL)
       - 5432 (PostgreSQL)
       - 1433 (SQL Server)
       - 3389 (RDP)
       - 22 (SSH)
     重要度: ★★★★

  3. IAM Access Key Rotation
     チェック: アクセスキーが90日以上未ローテーション
     重要度: ★★★★
     ベストプラクティス: 90日ごとにローテーション

  4. CloudTrail Logging
     チェック: CloudTrailが有効か
     重要度: ★★★★★
     必須: 監査証跡の確保

  5. AWS Lambda Security
     チェック: Lambda関数が未使用か、死コード混在か
     重要度: ★★★

2.2.2 Full Checks(Business/Enterprise Support限定)

Full Security Checks (Business/Enterprise Support必須):

  6. IAM Policy Check
     - 過度にPermissiveなポリシー検出
     - ワイルドカード(*) 過度使用
     - 廃止予定のアクション

  7. Security Groups - Specific Ports Unrestricted (詳細版)
     - 全リージョン対象
     - カスタムポート対応

  8. Exposed Access Keys
     - Public Repositories での漏洩検出
     - GitHub/GitLabスキャン連携

  9. ElastiCache Security
     - キャッシュセキュリティグループの確認

  10. EBS Encryption
      - 暗号化されていないボリュームの検出

  11. RDS Encryption
      - DB インスタンスの暗号化確認

  12. S3 Bucket Permissions
      - パブリックアクセスバケット検出
      - Block Public Access 設定確認

2.3 API/CLI アクセス

Trusted Advisorチェック結果をプログラム的に取得できます。

# Trusted Advisorチェックのリスト取得
aws support describe-trusted-advisor-checks \
  --region us-east-1

# 結果例
{
  "checks": [
    {
      "id": "u1f5Bf20",
      "name": "MFA on AWS Account Root User",
      "description": "Checks whether your root account is using MFA",
      "category": "security",
      "metadata": ["Account ID"],
      "source": "AWS Trusted Advisor"
    },
    {
      "id": "xF52q7q0",
      "name": "Security Groups - Specific Ports Unrestricted",
      "description": "Checks for security groups allowing unrestricted access to port 22 (SSH)...",
      "category": "security",
      "metadata": ["Region", "Group ID", "Port", "Protocol"],
      "source": "AWS Trusted Advisor"
    }
  ]
}

# 特定チェックの結果取得
aws support describe-trusted-advisor-check-result \
  --check-id u1f5Bf20 \
  --language en \
  --region us-east-1

# 結果例
{
  "checkResult": {
    "checkId": "u1f5Bf20",
    "timestamp": "2026-04-27T10:00:00Z",
    "status": "ok",
    "resourcesSummary": {
      "resourcesProcessed": 1,
      "resourcesFlagged": 0,
      "resourcesSuppressed": 0,
      "resourcesException": 0
    },
    "categorySpecificSummary": {
      "costOptimizing": {}
    },
    "flaggedResources": []
  }
}

2.4 EventBridge との連携

Trusted Advisorの結果変化をEventBridgeで検知し、自動アクションをトリガーできます。

# EventBridge ルール例
# Trusted Advisor チェック完了時に Lambda実行

Name: TrustedAdvisorCheckCompleted
EventBusName: default
EventPattern:
  source:
    - aws.support
  detail-type:
    - Trusted Advisor Check Item Refresh Completed
  detail:
    status:
      - WARN
      - ERROR
    checkName:
      - MFA on AWS Account Root User

Targets:
  - Arn: arn:aws:lambda:ap-northeast-1:111122223333:function:SecurityAlertHandler
    RoleArn: arn:aws:iam::111122223333:role/EventBridgeInvokeRole
// Lambda 処理例
exports.handler = async (event) => {
  const detail = event.detail;
  
  // 検査ID別に処理を分岐
  const checkId = detail.checkId;
  const status = detail.status;
  
  if (checkId === 'u1f5Bf20' && status === 'WARN') {
    // Root MFA 警告
    await sendSlackNotification(
      `[Critical] Root account MFA is not enabled!`
    );
  }
  
  return {
    statusCode: 200,
    body: 'Alert sent'
  };
};

2.5 Trusted Advisor の制約・できないこと

Trusted Advisor の制約:

  機能制限:
    - 自動修復機能なし(手動対応のみ)
    - Core Checks: リージョン限定(一部のみ)
    - Full Checks: Business/Enterprise Support必須
    - チェック実行頻度: 最大1日1回(手動実行可)

  カバレッジ制限:
    - 非AWS サービス対象外
    - アプリケーションレベルの脅威検知不可
    - リアルタイム性低い(数時間の遅延)

  API 制限:
    - AWS Support API 必須
    - Trusted Advisor API は非公開
    - describe-trusted-advisor-check-result のみ可能

3. AWS Audit Manager 深掘り

3.1 概要と価値提案

Audit Managerは監査業務を自動化し、継続的なコンプライアンス評価を実現するサービスです。

Audit Manager の役割
├─ フレームワーク管理(CIS, PCI DSS, GDPR等の標準化)
├─ 証拠自動収集(Config Rules, CloudTrail, Security Hub)
├─ 評価実施(手動/自動による監査実施)
└─ レポート生成(監査結果を法的文書に変換)

3.2 対応フレームワーク

Audit Managerはあらかじめ検証済みのフレームワークテンプレートを提供します。

AWS 提供フレームワーク(プリセット)

AWS Provided Frameworks:

  CIS AWS Foundations Benchmark
    - 対象: General Security
    - コントロール数: 43
    - 難易度: ★★★
    - 用途: AWS環境の最小セキュリティ基準

  PCI DSS v3.2.1
    - 対象: Payment Card Industry
    - コントロール数: 98
    - 難易度: ★★★★★
    - 用途: クレジットカード決済環境

  GDPR
    - 対象: Data Protection (EU)
    - コントロール数: 84
    - 難易度: ★★★★★
    - 用途: EU顧客データ保護

  SOC 2
    - 対象: Service Organization Control
    - コントロール数: 70以上
    - 難易度: ★★★★
    - 用途: SaaS/サービス提供者

  HIPAA
    - 対象: Healthcare
    - コントロール数: 55
    - 難易度: ★★★★★
    - 用途: 医療従事者・医療保険

  FedRAMP Moderate
    - 対象: US Government
    - コントロール数: 110+
    - 難易度: ★★★★★
    - 用途: 連邦政府契約企業

3.3 評価の自動化(Automated Evidence Collection)

Audit Managerは複数のAWSサービスから自動的にエビデンス(証拠)を収集します。

エビデンス取得元

Auto-collected Evidence Sources:

  1. AWS Config Rules
     - コンプライアンスルール評価結果
     - リソース設定変更履歴
     - コンプライアンス状態 (COMPLIANT/NON_COMPLIANT)

  2. CloudTrail
     - API呼び出し履歴
     - 操作ユーザー・タイムスタンプ
     - アクション結果(成功/失敗)

  3. AWS Security Hub
     - セキュリティ調査結果(findings)
     - コンプライアンスステータス

  4. CloudWatch Logs
     - ログイベント
     - エラーログ

  5. Manual Evidence
     - スクリーンショット
     - ドキュメント
     - 外部監査結果

  6. AWS Systems Manager
     - パッチコンプライアンス状態

CloudTrail エビデンス例

{
  "eventVersion": "1.08",
  "eventTime": "2026-04-27T10:30:45Z",
  "eventSource": "iam.amazonaws.com",
  "eventName": "CreateAccessKey",
  "userAgent": "aws-cli/2.13.0",
  "sourceIPAddress": "203.0.113.45",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAI23HXD2W7EXAMPLE",
    "arn": "arn:aws:iam::111122223333:user/audit-user",
    "accountId": "111122223333",
    "userName": "audit-user"
  },
  "requestParameters": {
    "userName": "app-user"
  },
  "responseElements": {
    "accessKey": {
      "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
      "createDate": "2026-04-27T10:30:45Z"
    }
  }
}

3.4 カスタムフレームワーク

プリセットだけでなく、業界・組織固有のフレームワークをカスタム定義できます。

# カスタムフレームワーク作成
aws auditmanager create-assessment-framework \
  --name "MyCompanySecurityStandard" \
  --framework-type Custom \
  --control-sources "[\"AWS_CONTROL_LIBRARY\"]" \
  --control-sets '[
    {
      "name": "Access Control",
      "controls": [
        {
          "arn": "arn:aws:auditmanager:ap-northeast-1::control/aws/iam-policy-no-statements-with-admin-access"
        },
        {
          "arn": "arn:aws:auditmanager:ap-northeast-1::control/aws/mfa-enabled-for-iam-console-access"
        }
      ]
    }
  ]'

# フレームワーク一覧
aws auditmanager list-assessment-frameworks \
  --framework-type Custom

# フレームワーク詳細取得
aws auditmanager get-assessment-framework \
  --framework-id abc-123-def

3.5 評価レポート生成

Audit Managerは評価結果から法的に有効な監査レポートを自動生成します。

# 評価作成
aws auditmanager create-assessment \
  --name "Q2-2026-PCI-DSS-Audit" \
  --assessment-framework-id pci-dss-v3-2-1 \
  --scope '{
    "awsAccounts": [
      {
        "id": "111122223333",
        "emailAddress": "security@company.com"
      }
    ],
    "awsServices": [
      {
        "serviceName": "Amazon S3",
        "serviceCategory": "STORAGE"
      },
      {
        "serviceName": "AWS Lambda",
        "serviceCategory": "COMPUTE"
      }
    ]
  }'

# 評価実行
aws auditmanager start-assessment \
  --assessment-id abc-123

# レポート生成
aws auditmanager generate-assessment-report \
  --assessment-id abc-123 \
  --description "Final Q2 Audit Report" \
  --report-type COMPLETE

# 結果
{
  "assessmentReport": {
    "id": "report-xyz",
    "assessmentId": "abc-123",
    "status": "COMPLETE",
    "creationTime": "2026-04-27T15:00:00Z",
    "name": "Final Q2 Audit Report",
    "downloadUrl": "https://..."
  }
}

3.6 制約・できないこと

Audit Manager の制約:

  機能限界:
    - 自動修復機能なし(評価のみ)
    - エビデンス収集の遅延(最大24時間)
    - Manual Evidence追加は手作業必須
    - リアルタイム監査評価不可

  対応リージョン:
    - 米国 (us-east-1), 欧州限定
    - 日本リージョン未対応(2026年4月時点)

  運用負荷:
    - カスタムコントロール定義は手作業
    - フレームワーク構築に専門知識必須
    - 継続的な評価運用に人的リソース必要

  設定制限:
    - 1 AWS アカウント = 最大 10 評価
    - 評価スコープ: 1 アカウント = 1 評価

4. 3サービスの連携パターン

4.1 統合アーキテクチャ

セキュリティ監査パイプライン Slack/SNS Alert

[定期監査(月次/四半期)] Config Rules + CloudTrail + Security Hub → Audit Manager ↓ 自動エビデンス収集 ↓ 評価レポート生成 ↓ 経営層報告


### 4.2 実装例:統合セキュリティダッシュボード

```javascript
// Lambda: Unified Security Dashboard
// Access Analyzer + Trusted Advisor + Audit Manager の結果を統合

const AWS = require('aws-sdk');
const analyzer = new AWS.AccessAnalyzer();
const support = new AWS.Support({ region: 'us-east-1' });
const auditMgr = new AWS.AuditManager();

exports.handler = async (event) => {
  const results = {};

  // 1. Access Analyzer Findings 取得
  const analyzerArn = process.env.ANALYZER_ARN;
  const findings = await analyzer.listFindings({
    analyzerArn: analyzerArn,
    filter: [
      {
        property: 'status',
        eq: ['ACTIVE']
      }
    ]
  }).promise();
  
  results.externalAccess = findings.findings.filter(f => 
    f.findingType === 'ExternalAccess'
  ).length;
  
  results.unusedAccess = findings.findings.filter(f =>
    f.findingType.startsWith('Unused')
  ).length;

  // 2. Trusted Advisor Core Checks 取得
  const trustedChecks = await support.describeTrustedAdvisorCheckResult({
    checkId: 'u1f5Bf20',  // MFA Check
    language: 'en'
  }).promise();
  
  results.rootMfaEnabled = 
    trustedChecks.checkResult.resourcesSummary.resourcesFlagged === 0;

  // 3. Audit Manager 評価進捗 取得
  const assessments = await auditMgr.listAssessments({}).promise();
  
  results.activeAssessments = assessments.assessmentMetadata.filter(a =>
    a.status === 'IN_PROGRESS'
  ).length;

  // ダッシュボード用JSON返却
  return {
    statusCode: 200,
    body: JSON.stringify({
      timestamp: new Date().toISOString(),
      summary: results
    })
  };
};

4.3 修復フロー(Remediation Workflow)

発見 → 分類 → 修復 → 検証 のサイクル

Step 1: Access Analyzer が S3パブリックバケット検出
         Finding ID: finding-xxx
         Resource: my-bucket
         Type: ExternalAccess (Public)

Step 2: 組織で分類
         分類: High Risk
         所有者: Data Team
         期限: 3営業日以内

Step 3: 修復実施
         # バケットポリシー削除 or Deny公開アクセス追加
         aws s3api put-bucket-policy \
           --bucket my-bucket \
           --policy file://block-public.json

Step 4: 検証
         再度 Access Analyzer スキャン
         Finding ステータス → ARCHIVED(修復確認)

Step 5: Audit Manager で証拠記録
         修復日時、実施者、変更内容をレコード

5. 試験で狙われるポイント

5.1 Access Analyzer (出題頻度: 高)

★★★★★ 最頻出
- Zone of Trust の定義と外部アクセス検出
- CloudTrail ベースの未使用アクセス分析
- ポリシー生成の動作(何ができるか、何ができないか)
- 対応リソースタイプ(S3, IAM Role, KMS, Lambda等)
- Organization モード vs Single Account

★★★★ よく出題
- Finding種別(Public, Cross-Account, AWS Service, Federated)
- ポリシー検証とセキュリティ警告の例
- アーカイブルール(既知リスクの除外)
- 制約: VPC/CloudFront 非対応

★★★ 出題可能性あり
- API コマンド(list-findings, create-analyzer等)
- CloudTrail 遅延とリアルタイム性の限界
- カスタムポリシーチェック使用例

出題パターン

Q1: S3バケットにクロスアカウントアクセスを許可するバケットポリシー
    を配置した。Access Analyzerはどの Finding を生成するか?
    → A) ExternalAccess - CrossAccountAccess

Q2: IAM ロールに付与された権限のうち、過去90日間使用されていない
    ものはどのように検出されるか?
    → A) UnusedPermissions Finding を生成

Q3: CloudTrailログからポリシーを生成する場合、生成されたポリシーに
    含まれるのは?
    → A) 過去X日間で実行されたアクションのみ
    → B) Deny は含まない
    → C) リソースワイルドカード(*)も推奨では含まれる

5.2 Trusted Advisor (出題頻度: 中)

★★★★ よく出題
- セキュリティカテゴリの全チェック項目
- Core Checks vs Full Checks(サポートプラン依存)
- MFA, IAM Key Rotation, SG ポート開放の検出

★★★ 出題可能性あり
- API アクセス(Support APIが必須)
- EventBridge との連携
- チェック実行頻度(1日1回)

★★ 低確度
- 費用最適化・パフォーマンス領域(SCS-C03外)

出題パターン

Q1: Trusted Advisor の Full Checks を実行するのに必須な
    サポートプランはどれ?
    → A) Business or Enterprise Support

Q2: IAM アクセスキーが90日間未ローテーションの場合、
    どの Trusted Advisor チェックで警告されるか?
    → A) IAM Access Key Rotation Check

Q3: EventBridge で Trusted Advisor チェック完了を検知し、
    Lambda を自動実行するには何が必要か?
    → A) EventPattern で source=aws.support を指定
    → B) detail-type=Trusted Advisor Check Item Refresh Completed

5.3 Audit Manager (出題頻度: 中~低)

★★★ 出題可能性あり
- 対応フレームワーク(CIS, PCI DSS, GDPR, SOC 2等)
- 自動エビデンス収集元(Config, CloudTrail, Security Hub)
- レポート生成フロー

★★ 低確度
- カスタムフレームワーク設定
- 評価実行の詳細手順

出題パターン

Q1: Audit Manager で PCI DSS コンプライアンス評価を行う場合、
    エビデンスが自動取得される主要ソースは?
    → A) AWS Config Rules
    → B) CloudTrail API logs
    → C) Security Hub findings
    → D) すべて正解

Q2: Audit Manager のフレームワークが日本リージョンで
    フルサポートされているか?
    → A) 未対応(2026年4月時点)

Q3: Audit Manager は自動修復を実行するか?
    → A) No(評価のみ、修復は手動)

5.4 統合シナリオ問題(実務的)

★★★★★ 最頻出パターン
組織はセキュリティポスチャーを継続的に改善したい。
以下の要件を満たす構成をすべて選べ:

A) CloudTrail で全API呼び出しを記録
B) Access Analyzer で外部アクセスを検出
C) Trusted Advisor で Core Checks を毎日実行
D) Audit Manager で月次 PCI DSS 評価を実施
E) EventBridge で Trusted Advisor アラートを Slack 送信

答え: A, B, C, D, E すべて

6. ベストプラクティス・推奨設定

6.1 Access Analyzer 運用

推奨設定:

  1. アナライザー作成時
     - Organization モード推奨(複数アカウント対象)
     - タグ: Environment=Prod, Team=Security

  2. Finding 管理
     - ステータス: Active (未修復) と Archived (既知) を分離
     - 定期的に Active Finding を集計(週次)

  3. アーカイブルール
     - 社内信頼できるアカウント ID をルール化
     - パートナー企業のクロスアクセスも例外登録

  4. ポリシー検証の活用
     - 新規ポリシー deploy 前に全て検証
     - CI/CD パイプラインに validation step を組み込み

:
    aws accessanalyzer validate-policy \
      --policy-document file://new-policy.json \
      --policy-type IDENTITY_POLICY > validation.json
    
    if grep -q 'SECURITY_WARNING' validation.json; then
      echo "Policy has warnings - review required"
      exit 1
    fi

6.2 Trusted Advisor 運用

推奨設定:

  1. Core Checks(日常)
     - 最重要: MFA on Root User
     - 次点: IAM Access Key Rotation, CloudTrail Logging

  2. EventBridge 統合
     - Core Checks が WARNING/ERROR 状態に変わったら即座にアラート
     - Slack/PagerDuty 連携で即応体制構築

  3. Full Checks(組織規模)
     - Business Support 契約企業は必須
     - EBS/RDS 暗号化、IAM Policy Check を月次実行

  4. 修復追跡
     - Trusted Advisor 結果を JIRA/Backlog に自動チケット化
     - SLA: Critical は24時間以内に修復

6.3 Audit Manager 運用

推奨設定:

  1. フレームワーク選定
     - 業界標準から最小限のセット選択
     - PCI DSS → 決済を扱う企業
     - SOC 2 → SaaS提供企業
     - GDPR → EU顧客データ取得企業

  2. 評価スケジュール
     - 月次: GDPR/PCI DSS チェックポイント
     - 四半期: 全体監査
     - 年次: 外部監査対応ドキュメント生成

  3. エビデンス管理
     - Manual Evidence は Security チームで厳格管理
     - バージョン管理・署名の実装
     - 2年間の保持期間設定

  4. レポート配布
     - 月次 → Security Team
     - 四半期 → 経営層へのサマリー
     - 年次 → 監査法人への正式報告

7. よくある質問(FAQ)

Q1: Access Analyzer と Security Hub の違いは?

Access Analyzer:
  - ✓ リソースベースドポリシーの分析専門
  - ✓ 外部アクセス可視化
  - ✓ ポリシー検証・自動生成
  - ✗ マルウェア検知は不可

Security Hub:
  - ✓ 複数サービス統合(GuardDuty, Macie, Inspector等)
  - ✓ マルウェア検知・異常検知
  - ✓ コンプライアンススコア
  - ✗ ポリシー生成は不可

→ 使い分け: Access Analyzer で IAM 権限管理
           Security Hub で統合セキュリティ監視

Q2: Trusted Advisor チェック結果が古い場合は?

Trusted Advisor チェック実行頻度:
  - Core Checks: 無料で実行可
  - Full Checks: 自動実行は1日1回
  - 手動リフレッシュ: AWS Console から "Refresh" ボタン
                   → 最新結果を数分で取得

推奨:
  - クリティカルチェックは手動リフレッシュ習慣付け
  - 開発環境では手動実行で即座に確認

Q3: Audit Manager で修復レコードを残すには?

Audit Manager は評価・レポートまでが責務。
修復実施履歴は以下で記録:

  1. CloudTrail
     - API 呼び出し履歴で自動記録

  2. AWS Config
     - リソース設定変更履歴

  3. Manual Evidence (推奨)
     - Audit Manager の評価画面に
       修復日時・実施者・承認者を手動記録
     - スクリーンショット添付で証拠化

例:
  修復: S3 バケットポリシーから Public アクセス削除
  実施日: 2026-04-27 14:30 UTC
  実施者: security-team@company.com
  CloudTrail Log ID: xxxxx(リンク)
  スクリーンショット: (添付)

8. まとめ表

サービス主要機能対象出題頻度難易度
Access Analyzer外部アクセス検出・未使用権限分析・ポリシー生成IAM/リソース権限★★★★★
Trusted Advisorセキュリティチェック・ベストプラクティス検査総合セキュリティ★★★★
Audit Managerコンプライアンス評価・監査レポート生成監査・証拠管理★★★

関連リソース