こんにちは、与儀です。
EC2ReadOnlyAccess権限を付与したIAMユーザを作成して、社内の開発者に使ってもらう場合を想定します。IAMユーザを作成する際の設定で、「次回のサインインで新しいパスワードを作成するようにユーザーに求める」にチェックを入れることで、ユーザがログインしたときにパスワードを変更してもらうことが可能になります。
ですが、この初回ログイン時のパスワード変更が「iam:ChangePassword の実行権がありません。」というエラーでパスワード変更ができず、ログインもできなくなってしまうことがあります。
原因はエラー内容にある通りで、このIAMユーザ自身がパスワードを変更する権限を持っていないためです。この場合、下記のドキュメントにもあるように、パスワード変更権限のポリシーを追加する必要があります。
IAM ユーザーが自分のパスワードを変更できるようにする
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy"
],
"Resource": "*"
}
}
ではまずIAMユーザの作成からしてみます。
「Identity & Access Management」を選択します。
IAMのダッシュボードを開いたら、「ユーザー」を選択します。
ユーザー名を入力して、「ユーザ―ごとにアクセスキーを生成」のチェックを外します。
フィルタの窓で「EC2」と打ち込んで対象を絞り込みます。「AmazonEC2ReadOnlyAccess」を選択します。
「カスタムパスワードの割り当て」で任意のパスワードを入力後、「次回のサインインで新しいパスワードを作成するようにユーザーに求める」にチェックを入れます。
これにより、ユーザは初回サインイン時にパスワード変更を求められます。
IAMユーザーとしてログインするには、ダッシュボードの、「IAMユーザーのサインインリンク」のURLを用います。このURLはデフォルトでは、「https://<アカウント番号>.signin.aws.amazon.com/console」となっていますが、ここではカスタマイズで任意の名前を付けています。
「アカウント名、ユーザー名、パスワード」を入力して、「サインイン」を押します。
ここでパスワード変更を求められるので、古いパスワードと新しいパスワードを入力して、「パスワード変更の確認」を押します。
すると、「iam:ChangePasswordの実行権がありません。」とエラーになります。現在このIAMユーザーには、「AmazonEC2ReadOnlyAccess」の権限しか付与されていないためそうなります。これを回避するため権限を追加します。
先ほどと同じように、ポリシーの画面にて「インラインポリシー」の「ここをクリックしてください。」をクリックします。
ポリシー名を任意の名前にして、ポリシードキュメントに、先ほど記載したポリシーを入力して「ポリシーの適用」を押します。
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy"
],
"Resource": "*"
}
}