はじめに
AWSのポリシーにおいて、Principal要素に”arn:aws:iam::[Account ID]:root”と指定するケースがあります。
この指定を誤解して解釈してしまうことがあるため、正しい意味と使用方法を解説します。ぜひ参考にして、誤解を防いでください。
rincipal要素のarn:aws:iam::[Account ID]:root の意味
arn:aws:iam::[Account ID]:root
の意味は 「指定されたAWSアカウント全体(IDが[Account ID]のアカウント内のすべてのIAMユーザーやロール)」に対してアクセス許可を与えることを意味します。
例)
{
"Sid": "FullAccessToAccountPrincipals",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[Account ID]:root"
},
"Action": [
"*"
],
"Resource": "*"
}
このポリシーでは、アカウント内のすべてのIAMユーザーやロールが、指定されたリソースに対してすべての操作(Action: “*”)を実行できるようになります。
アカウントのルートユーザを指定する場合は?
アカウントのルートユーザーだけに限定して許可を与えたい場合は、Condition
要素を使用して制限を加える必要があります。
例)
{
"Sid": "AllowRootUserOnly",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[Account ID]:root"
},
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalArn": "arn:aws:iam::[Account ID]:root"
}
}
}
このポリシーでは、aws:PrincipalArn
条件キーを使用して、指定されたアカウントのルートユーザーだけにアクセスを制限しています。
まとめ
Principal
要素の"arn:aws:iam::[Account ID]:root"
は、一見するとルートユーザーだけを対象にしているように見えますが、実際にはそのアカウント全体を指定しています。
この違いを正しく理解し、必要に応じて条件キーを追加することで、意図したアクセス制御を実現してください。