委任管理者の設定
概要
IAM Access Analyzer を Organizations 環境で運用するために、Audit アカウントを委任管理者として登録する。
本ブログの他の記事では、設定変更と動作確認を主眼に AWS CLI で検証を行っている。委任管理者の登録も同様に AWS CLI で行う。
- Organizations でサービスアクセスを有効化 — 委任管理者を登録するための前提条件
- 管理アカウントにサービスリンクロールを作成 — ORGANIZATION タイプの Analyzer を委任管理者から作成するための前提条件
- 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 のみで構築する場合は手動で作成する必要がある。
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"
}
]