TerraformでIAMユーザーにパスワード変更権限を付ける(IAMUserChangePassword)

AWS, Terraform01 December 2020

Terraformで管理しているユーザーに初回ログイン時のパスワード変更権限を付ける時。 AWSで予め用意しているポリシーに「IAMUserChangePassword」があります。

これをTerraformから使用する場合の方法として、以下の2通りの方法があるのでそのメモです。

  • 「IAMUserChangePassword」のARNを直接指定しアタッチする。
  • 作成するポリシーのアクションに、「iam:ChangePassword」と「iam:GetAccountPasswordPolicy」を追加する。

「IAMUserChangePassword」のARNを直接指定しアタッチする。

こちらは簡単なパターン。

アタッチしたいユーザーやグループに直接ARNを指定するだけです

ポリシーに「iam:ChangePassword」と「iam:GetAccountPasswordPolicy」を追加する。

こちらの使いどころとしては、グループにアタッチするポリシーを自作していて、

そのグループに対する権限周りは1つにまとめたい。とかって時(だと思っている。)

要は、「自作したポリシー」と「IAMChangePassword」の2つのアタッチをしたくない時

こんな感じで、ポリシーの内容に追加してあげます。 どうしてこうなるかというと、「IAMUserChangePassword」のポリシー内容の実態が上記だからです。

1つ注意点として、 iam:ChangePasswordのresourcesにuserのARNを指定するのですが以下のように$$もしくは&を使用する必要があります。

arn:aws:iam::*:user/$${aws:username}
arn:aws:iam::*:user/&{aws:username}

理由としては、terraformにより$が展開されてしまうのですが、 最終的なポリシーのJSON上では「arn:aws:iam::*:user/$${aws:username}」となる必要があるためです。

なぜ&でもOKなのかあまりわかってません。(githubのissueに書いてありました)

tags: AWS, Terraform