はじめに

みなさんはIAMユーザーの多要素認証(MFA)を設定されておりますでしょうか?
AWSドキュメントにも記載ありますように、セキュリティを向上させるには多要素認証(MFA)を設定して AWS リソースを保護することを推奨されております。

そんなIAMユーザーの多要素認証(MFA)設定ですが思いもよらない設定時の落とし穴がありましたのでご紹介させていただきます。

結論から

IAM ユーザーに MFA デバイスの自己管理を許可するポリシーを個別アタッチしている場合に、MFAの設定がまだされていない状況ではAWSリソースにおけるMFA設定以外のいかなるアクションも拒否されてしまいます。

以下のドキュメントにもしっかりと記載されておりました。

・IAM: IAM ユーザーに MFA デバイスの自己管理を許可する
このポリシーを設定した IAM ユーザーが MFA 認証されていない場合、このポリシーは、MFA を使用した認証に必要なアクションを除いて、すべての AWS アクションへのアクセスを拒否します。AWS にサインインしているユーザーにこれらのアクセス許可を追加する場合、これらの変更を確認するには、サインアウトしてからサインインする必要がある場合があります。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html

該当ケースパターン

・あるAWSアカウントへの運用メンバー追加に伴いIAMユーザーを新規に発行する
・広く保守するメンバーを想定しアタッチするポリシーはPowerUserAccess
・コンソールログイン機能を許可するとともに初回パスワード変更を強制させる
・MFAを自身で設定してもらうためにMFA デバイスの自己管理を許可するポリシーをアタッチする

上記の条件が全て該当した時に、初回コンソールログイン時のパスワード変更アクションが拒否されてしまいます!
つまりAWSマネジメントコンソールへのログインができません!

補足

このケースはPowerUserAccessにIAM管理許可がないために、個別にMFA デバイスの自己管理ポリシーをアタッチしています。
AdministratorAccessの場合はIAM管理許可があるため、MFAの個別許可必要ないために該当しません。

対策

段階的にポリシーをアタッチしていくようにします。

手順

管理IAMユーザーで IAMユーザーを新規発行
コンソールログインを提供 を選択
次回のサインイン時に新しいパスワードを作成する必要があります を選択

新規発行したIAMユーザーでコンソールログインしパスワードを更新する

管理IAMユーザーでMFAの個別許可ポリシーを作成

管理IAMユーザーで先ほど発行したIAMユーザーにポリシーをアタッチ

新規発行したIAMユーザーでMFA設定追加

まとめ

いかがでしたでしょうか。
初回パスワード変更を強制させなかったらこの問題に該当はしませんが、利用する個人だけが認識するのがベストなのでやはりこのような手順を経る必要がありそうです。
2つのIAMユーザーでそれぞれ作業が必要なので少しめんどくさいですが、AWSアカウントを安全に運用させるためにもぜひ対応しておきましょう!