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

TOP