デフォルトの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ユーザのアクセス制御を行うのがより適切かと。