デフォルトのPowerUserではIAMアクセスが不可となっている為、自身のパスワード変更が可能なIAMポリシーについて調査、調査したので覚書。
PowerUserで自身のパスワード変更が可能なIAMポリシー
下記ポリシーを設定すれば、自身のパスワード変更が可能となる。「Effect:Deny」と「NotAction」の違いについては、こちらを読んできちんと理解しておく。「ACCOUNT-ID-WITHOUT-HYPHENS」は12桁のAWSアカウントIDに置き換えてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": ["iam:ChangePassword"],
"Resource": ["arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/${aws:username}"]
},
{
"Effect": "Allow",
"Action": ["iam:GetAccountPasswordPolicy"],
"Resource": ["*"]
}
]
}
PowerUserで自身のパスワードとアクセスキーを管理できるIAMポリシー
下記ポリシーを設定すれば、自身のパスワードとアクセスキーを管理できる。ただし、アクセスキーの管理をManagement Consoleから行うことを想定する場合、IAMユーザ画面から管理を行う必要がある為、IAMユーザ一覧の権限も付与する必要がある。「GetAccount*」と「ListAccount*」の許可設定をしなくても、動作することは確認したが、こちらを参考に念の為含める設定とした。また、API(CLI/SDK)からアクセスキーを管理するのであれば、「ListUsers」も不要とのこと。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:*LoginProfile",
"iam:*AccessKey*"
],
"Resource": ["arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/${aws:username}"]
},
{
"Effect": "Allow",
"Action": [
"iam:GetAccount*",
"iam:ListAccount*"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": ["iam:ListUsers"],
"Resource": ["arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/*"]
}
]
}
今回は単独のポリシーでも動作する設定としたが、全てまとめて記載するとポリシーが長くなり可読性も下がるので、必要に応じたポリシーを設定したIAMグループに複数所属させる形でIAMユーザのアクセス制御を行うのがより適切かと。