これは何

MFAの許可を与えたIAMユーザを新規発行する時に意外なところで引っかかってしまったのでメモを残します。

やりたいこと

・IAMユーザの新規発行
・発行したIAMユーザにMFAデバイスの割り当て

前提

・MFAを許可するためのポリシーを作成する
公式のドキュメントを参考にIAMポリシーを作成します

・以下ポリシーをアタッチしたIAMユーザを作成する
 ・PowerUserAccess
 ・IAMUserChangePassword(初回ログイン時のパスワード変更を有効化したため)
 ・nagano-test-policy(最初に作成したMFA用のポリシー)


IAMユーザ作成後に表示されるURLにアクセスし、自動生成されたパスワードを入力

初期パスワード変更画面になるので実施する

そうすると次のようなエラー文が表示されました
You may not be authorized to perform this action, or the new password does not comply with the account password policy set by your administrator.
実行権限がないかパスワードポリシーに準拠していないと警告が出てしまいました

対策方法

最初にコンソールログインを実施してからMFA許可用のポリシーをアタッチすることで問題なくコンソールログインできました

手順

・IAMユーザ作成
・初回ログイン(初期パスワード変更)
・MFA用IAMポリシー作成、付与
・ログイン確認

IAMユーザ作成

MFA用のポリシーを付与していない状態でIAMユーザを作成する

初回ログイン(初期パスワード変更)

今回はIAMユーザを作成したタイミングでログイン確認を実施します
また、初回ログイン時にパスワードの変更を有効化しているのでパスワードも変更します

今回は問題なくパスワードを変更することができました

また、変更後のパスワードでログイン確認を実施しても問題なくログインすることができました

MFA用IAMポリシー作成、付与

このままでは実装したかったMFAデバイスの割り当て作業が実施できないのでMFA用ポリシーを付与します(最初に作成したものと同じ)

ログイン確認

今度はIAMポリシーを付与した状態でログイン確認を実施します
ポリシーを付与した状態でもコンソールログインが実施できました
また、MFAデバイスの割り当ても問題なくできました

はじめにできなかった原因について

MFA用のポリシーに落とし穴がありました
ユーザがMFAを使って認証されていない場合は、指定しているアクション以外は禁止するというポリシーが含まれていました
指定しているアクションにパスワードの変更が含まれていなかったため、エラーが発生していたようです
そのため、以下のようにIAMポリシーを書き加えても対応できました。

最後に

IAM作成時には初回ログイン時パスワード変更のために権限が付与されているので,何が問題かすぐにはわからなかったですが1つずつ切り分ける中でエラーの原因を解明できました
同じエラーが出た際の参考になれば幸いです