🔍

IAM Access Analyzer

外部からの意図しないアクセスを自動検出するAWSセキュリティサービス

🛡️ あなたのAWSリソースを守るセキュリティ監査員

🎯 たとえ話で理解しよう

🏢
現実世界のたとえ

会社のセキュリティ監査員

大きな会社には「誰がどの部屋に入れるか」をチェックする セキュリティ監査員 がいます。

  • 🚪 会議室、金庫室、サーバールームなど各部屋のアクセス権限をチェック
  • 🔑 「この鍵を持っている人は本当に入る必要があるの?」と確認
  • ⚠️ 外部の人がアクセスできる設定になっていたらすぐに報告
  • 📋 問題を発見したらレポートを作成して管理者に通知
☁️
AWSでの対応

IAM Access Analyzer

IAM Access Analyzerは、AWSリソースへの 外部アクセスを自動検出 するサービスです。

  • 🪣 S3バケット、IAMロール、KMSキーなど各リソースのアクセス権限を分析
  • 🔍 「このリソースは外部アカウントからアクセス可能?」と自動チェック
  • 🚨 意図しない外部アクセスを発見したらFinding(検出結果)として報告
  • 📊 Security Hubと連携してセキュリティ全体を可視化

⚙️ Access Analyzerの仕組み

📦
STEP 1
リソースのスキャン
🔬
STEP 2
ポリシーの分析
🎯
STEP 3
外部アクセスの検出
📋
STEP 4
Finding生成
🔔
STEP 5
通知・対応

🏠 信頼境界(Trust Zone)の概念

✅ 信頼ゾーン内(内部)
👤 自分のAWSアカウント
🏢 同じOrganization内のアカウント
👥 IAMユーザー・ロール
🛡️ Access Analyzer が監視
⚠️ 信頼ゾーン外(外部)
🌐 パブリックアクセス(インターネット)
🏭 他社のAWSアカウント
未知の外部エンティティ

📦 分析対象のAWSリソース

🪣
S3バケット
バケットポリシー、ACLによる外部アクセスを検出
👔
IAMロール
信頼ポリシーによるクロスアカウントアクセスを検出
🔐
KMSキー
キーポリシーによる外部からの暗号化操作を検出
λ
Lambda関数
リソースベースポリシーによる外部呼び出しを検出
📨
SQSキュー
キューポリシーによる外部からのメッセージ操作を検出
🔔
SNSトピック
トピックポリシーによる外部からの発行・購読を検出
📁
EFSファイルシステム
ファイルシステムポリシーによる外部アクセスを検出
🔑
Secrets Manager
シークレットポリシーによる外部アクセスを検出

🔬 2種類のアナライザータイプ

基本
🏠

外部アクセスアナライザー

信頼ゾーン(分析範囲)
🏢 AWSアカウント または AWS Organization

信頼ゾーン 外部 からのアクセスを検出します。

  • 🌐 パブリックS3バケットの検出
  • 🏭 外部アカウントからアクセス可能なIAMロールの検出
  • 🔓 意図しない外部共有の発見
詳細
🔎

未使用アクセスアナライザー

分析対象
📊 IAMユーザー、ロールの使用状況

付与されているが 使われていない 権限を検出します。

  • 👻 90日以上使用されていないIAMロールの検出
  • 🔑 未使用のアクセスキーの検出
  • 📉 過剰な権限(最小権限違反)の特定

🚨 検出される問題のタイプ

🌍

パブリックアクセス

緊急

リソースがインターネット上の 誰でも アクセス可能な状態。 S3バケットが全世界に公開されている場合など。

🏭

クロスアカウントアクセス

警告

信頼ゾーン外の 特定のAWSアカウント からアクセス可能。 パートナー企業への共有が意図的か確認が必要。

🎭

フェデレーテッドアクセス

警告

外部のIDプロバイダー(SAML、OIDC)経由でアクセス可能。 SSO設定が適切か確認が必要。

☁️

AWSサービスアクセス

情報

AWSサービス(CloudTrail、Config等)がリソースにアクセス可能。 通常は正常な設定だが確認推奨。

🛠️ Access Analyzerの設定方法

1

コンソールから有効化

IAMコンソール → Access Analyzer → 「アナライザーを作成」をクリック。 信頼ゾーンを選択して作成。

2

自動スキャン開始

作成後、対象リソースの自動スキャンが開始。 新しいリソース作成時も自動で分析。

3

Findingの確認

検出された問題はFindingとして一覧表示。 各Findingの詳細を確認して対応を決定。

4

アーカイブまたは修正

意図的なアクセスは「アーカイブ」で除外。 問題がある場合はポリシーを修正。

📝 AWS CLI でアナライザーを作成
# 外部アクセスアナライザーの作成(アカウントレベル)
aws accessanalyzer create-analyzer \
    --analyzer-name "my-account-analyzer" \
    --type ACCOUNT

# Organization全体のアナライザーを作成
aws accessanalyzer create-analyzer \
    --analyzer-name "my-org-analyzer" \
    --type ORGANIZATION

# 未使用アクセスアナライザーの作成
aws accessanalyzer create-analyzer \
    --analyzer-name "unused-access-analyzer" \
    --type ACCOUNT_UNUSED_ACCESS \
    --configuration '{"unusedAccess": {"unusedAccessAge": 90}}'

# Findingの一覧を取得
aws accessanalyzer list-findings \
    --analyzer-arn "arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/my-account-analyzer"
📝 CloudFormation テンプレート
AWSTemplateFormatVersion: '2010-09-09'
Description: 'IAM Access Analyzer Setup'

Resources:
  # 外部アクセスアナライザー
  ExternalAccessAnalyzer:
    Type: AWS::AccessAnalyzer::Analyzer
    Properties:
      AnalyzerName: external-access-analyzer
      Type: ACCOUNT
      Tags:
        - Key: Environment
          Value: Production

  # アーカイブルール(特定のパターンを除外)
  TrustedAccountArchiveRule:
    Type: AWS::AccessAnalyzer::ArchiveRule
    Properties:
      AnalyzerName: !Ref ExternalAccessAnalyzer
      RuleName: trusted-partner-account
      Filter:
        - Criteria: principal.AWS
          Contains:
            - "arn:aws:iam::111122223333:root"

Outputs:
  AnalyzerArn:
    Description: Access Analyzer ARN
    Value: !GetAtt ExternalAccessAnalyzer.Arn

ベストプラクティス

🏢

Organization全体で有効化

全アカウントを一元管理するため、Organization レベルのアナライザーを作成しましょう。

🔔

EventBridgeで通知設定

新しいFindingが検出されたら、Slack/メールに自動通知する仕組みを構築。

📋

アーカイブルールの活用

信頼できるパートナーアカウントへのアクセスは、アーカイブルールで自動除外。

🔄

定期的なレビュー

月次でFindingをレビューし、新しい外部アクセスが正当か確認する運用を確立。

🛡️

Security Hubと連携

Security HubにFindingを集約し、他のセキュリティ問題と一元管理。

📊

未使用アクセスも分析

外部アクセスだけでなく、未使用の権限も定期的にクリーンアップ。

💰 料金体系

外部アクセス分析は無料!

外部アクセスアナライザーは 追加料金なし で利用可能

外部アクセスアナライザー
✅ 無料
未使用アクセスアナライザー
💵 有料(IAMロール/ユーザーあたり月額)
ポリシー検証API
💵 APIコールあたり課金
ポリシー生成
💵 生成リクエストあたり課金

よくある質問

Access AnalyzerとConfig Rulesの違いは? +

Access Analyzer は、ポリシーを詳細に分析して「誰がアクセスできるか」を特定します。 一方、 Config Rules は設定の変更を監視し、ルール違反を検出します。 Access Analyzerはポリシー分析に特化しており、より深いアクセス権限の把握が可能です。 両方を組み合わせて使うのがベストプラクティスです。

Findingが検出されたらどう対応すべき? +

1️⃣ まず、そのアクセスが 意図的かどうか を確認します。
2️⃣ 意図的なアクセスなら「 アーカイブ 」して除外します。
3️⃣ 意図しないアクセスなら、リソースのポリシーを修正して外部アクセスを制限します。
4️⃣ 修正後、Findingは自動的に「解決済み」になります。

全リージョンで有効化する必要がある? +

はい、Access Analyzerは リージョナルサービス です。 各リージョンで個別にアナライザーを作成する必要があります。 ただし、S3バケットとIAMロールは グローバル なので、1つのリージョンで分析すればOKです。 CloudFormation StackSetsを使って全リージョンに一括デプロイするのがおすすめです。

ポリシー生成機能とは? +

CloudTrailログを分析して、実際に使用されたアクションに基づいて 最小権限のIAMポリシー を自動生成する機能です。 「このロールに本当に必要な権限だけ」を特定でき、 セキュリティのベストプラクティスである最小権限の原則を簡単に実現できます。

GuardDutyとの違いは? +

Access Analyzer は「誰がアクセス 可能 か」を分析します(予防的)。
GuardDuty は「不審なアクティビティが 発生した か」を検出します(検知的)。
Access Analyzerで外部アクセスを事前にブロックし、 GuardDutyで実際の攻撃を検知する、という組み合わせが理想的です。

📌 まとめ:IAM Access Analyzer

🔍 AWSリソースへの外部アクセスを自動で検出・分析するサービス
🛡️ S3、IAMロール、KMS、Lambda等の主要リソースをカバー
💰 外部アクセス分析は無料で利用可能
🏢 Organization全体での一元管理が可能
📊 未使用アクセス分析で最小権限の実現をサポート
🔗 Security Hub連携でセキュリティ体制を強化

Created by SSuzuki1063

AWS SAP Learning Resources