📘
arn:aws:iam::123456789012:rootがアカウント全体を指す話
先にまとめ
IAMポリシーの中のプリンシパルでrootで書くけどルートアカウントだけじゃない、という話がたまに出てきます(どこで、とは言わないが)。理解が曖昧だったのでドキュメントを確認しました。
- IAMポリシーのリソースベースポリシーでは、
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
はアカウント全体を指す-
"Principal": { "AWS": "123456789012" }
と同じ
-
- リソースポリシー以外ではルートアカウントを指す
- 余談: AWSドキュメントの記述が変わったと思ったらアーカイブを見るとよい
ドキュメント
リソースベースポリシーでのPrincipalはアカウント全体
AWS アカウント を指定するときは、アカウント ARN (aarn:aws:iam::account-ID:root、または "AWS": プレフィックスの後に ID を付けた短縮形を使用できます。
以下2つではどちらもアカウント全体を対象にしています。(=rootだけどルートだけじゃなくて全体)
"Principal": { "AWS": "arn:aws:iam::123456789012:root" }
"Principal": { "AWS": "123456789012" }
rootユーザだけにポリシー適用する
- AWS アカウント ルートユーザー — リクエストコンテキストには、条件キー aws:PrincipalArn に
arn:aws:iam::123456789012:root
が含まれる - ルートユーザーARNは
arn:aws:iam::123456789012:root
- ルートユーザーARN を aws:PrincipalArn 条件キーの値として指定すると、アクセス許可が AWS アカウント のルートユーザーのみに制限される
- リソースベースポリシーのプリンシパル要素でルートユーザーARN を指定して、AWS アカウントに権限を委任することとは異なる
ルートアカウントだけに設定したいときはConditionを使えばよいです。
"Condition": {
"StringEquals": {
"aws:PrincipalArn": "arn:aws:iam::123456789012:root"
}
}
追記
aws:PrincipalType : “Account”
も使えると教えてもらいました。
余談 ドキュメントの変更を確認する
過去(2020年ごろ)のAWS documentからコピペしたはずの自分のメモを見ているとこのようになっていました。
the account itself => アカウントそのもの
The AWS account - the account itself:
arn:aws:iam::123456789012:root
上記を覚えていたのですが、改めてドキュメントを見ると違うようです・・・?
The AWS account displays the following:
となっていますね。(確かにこちらのほうが文章として自然なんですが)。the account itselfではなかったのか?と思って調べました。
ドキュメントのアーカイブを調べる
アーカイブを探してみてみると、確かに過去にはメモの通りでした。更新されたようですね。
アーカイブを見たい人はこちら(読み込みに数十秒くらいかかるかも)
Discussion