コンテンツにスキップ

委任管理者の設定

検証日: 2026-03-30 / リージョン: ap-northeast-1

概要

IAM Access Analyzer を Organizations 環境で運用するために、Audit アカウントを委任管理者として登録する。

本ブログの他の記事では、設定変更と動作確認を主眼に AWS CLI で検証を行っている。委任管理者の登録も同様に AWS CLI で行う。

  1. Organizations でサービスアクセスを有効化 — 委任管理者を登録するための前提条件
  2. 管理アカウントにサービスリンクロールを作成 — ORGANIZATION タイプの Analyzer を委任管理者から作成するための前提条件
  3. Audit アカウントを委任管理者に登録 — 管理アカウントを直接操作せず、セキュリティの窓口を一元化する

検証環境

検証環境の構成図

本記事のコマンドは Master アカウントで実行する。

検証の流れ

    flowchart LR
    A[1. 事前確認] --> B[2. サービスアクセス<br>有効化]
    B --> C[3. SLR 作成<br>管理アカウント]
    C --> D[4. 委任管理者<br>登録]
  

結果

  • Organizations でサービスアクセスを有効化し、Audit アカウントを委任管理者に登録できた。
  • サービスアクセスの有効化(enable-aws-service-access)を行わずに委任管理者を登録しようとすると ConstraintViolationException が発生することを確認した。
  • 管理アカウントにサービスリンクロール(AWSServiceRoleForAccessAnalyzer)が存在しない状態で ORGANIZATION タイプの Analyzer を作成しようとすると ConflictException が発生することを確認した。この前提条件は公式ドキュメントに明記されていない(2026 年 3 月時点)。

1. 事前確認

IAM Access Analyzer の委任管理者が未登録であることを確認する。

aws organizations list-delegated-administrators \
  --service-principal access-analyzer.amazonaws.com \
  --profile Master
{
    "DelegatedAdministrators": []
}

2. サービスアクセスの有効化

委任管理者を登録する前に、Organizations で IAM Access Analyzer のサービスアクセスを有効化する必要がある。これを行わずに委任管理者を登録しようとすると、以下のエラーが発生する。

ConstraintViolationException: You must enable service access before you delegate an administrator for this service. Call the AWS API EnableAWSServiceAccess first.

aws organizations enable-aws-service-access \
  --service-principal access-analyzer.amazonaws.com \
  --profile Master
(出力なし)

有効化されたことを確認する。

aws organizations list-aws-service-access-for-organization \
  --query "EnabledServicePrincipals[?ServicePrincipal=='access-analyzer.amazonaws.com']" \
  --profile Master
[
    {
        "ServicePrincipal": "access-analyzer.amazonaws.com",
        "DateEnabled": "<有効化日時>"
    }
]

3. 管理アカウントへのサービスリンクロール作成

委任管理者から ORGANIZATION タイプの Analyzer を作成するには、管理アカウントに IAM Access Analyzer のサービスリンクロール(SLR)が存在する必要がある。SLR(AWSServiceRoleForAccessAnalyzer)は、IAM Access Analyzer が各アカウントのリソースポリシーを読み取り専用で分析するために使用するロールである。

公式ドキュメントによると、コンソールから ORGANIZATION タイプの Analyzer を作成した場合は「組織内の各アカウントに SLR が作成される」と記載されている。しかし、CLI や Terraform で委任管理者から作成する場合、管理アカウント側の SLR は自動作成されない。SLR がない状態で Analyzer を作成しようとすると、以下のエラーが発生する。

ConflictException: Access Analyzer Service Linked Role is not in the organizational management account

管理アカウントのコンソールで IAM Access Analyzer を開いたことがあれば SLR は自動作成されるが、CLI や Terraform のみで構築する場合は手動で作成する必要がある。

この前提条件は 公式ドキュメントに明記されていない(2026 年 3 月時点)。
aws iam create-service-linked-role \
  --aws-service-name access-analyzer.amazonaws.com \
  --profile Master
{
    "Role": {
        "Path": "/aws-service-role/access-analyzer.amazonaws.com/",
        "RoleName": "AWSServiceRoleForAccessAnalyzer",
        "Arn": "arn:aws:iam::<Master アカウント ID>:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer",
        "CreateDate": "<作成日時>",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": [
                        "sts:AssumeRole"
                    ],
                    "Effect": "Allow",
                    "Principal": {
                        "Service": [
                            "access-analyzer.amazonaws.com"
                        ]
                    }
                }
            ]
        }
    }
}

4. 委任管理者の登録

Audit アカウントを IAM Access Analyzer の委任管理者に登録する。

aws organizations register-delegated-administrator \
  --account-id <Audit アカウント ID> \
  --service-principal access-analyzer.amazonaws.com \
  --profile Master
(出力なし)

登録を確認する。

aws organizations list-delegated-administrators \
  --service-principal access-analyzer.amazonaws.com \
  --query 'DelegatedAdministrators[].{Id:Id,Name:Name}' \
  --profile Master
[
    {
        "Id": "<Audit アカウント ID>",
        "Name": "Audit"
    }
]

Amazonアソシエイトリンク