まえがき

cloudpackサポートの木村(富)です。

お客様からの問い合わせにて以下のようなご連絡がございました。
「今までIAMユーザーにMFA登録できていたが、突然MFA登録できなくなった」
上記事象はAWSのIAM関連の仕様変更に起因して発生している可能性が高く、突然表示されたためびっくりされた方も多いかと思われます。

本記事ではそのような場合の対処方法をご紹介致します。

現象

新しくIAMユーザーを追加し、初めて「MFAデバイスの割当て」を実施しようとした際などに下記のエラーが発生し、MFAデバイスの設定ができなくなる現象を確認しております。

アクセス許可が必要です
この操作を実行するために必要なアクセス許可がありません。アクセス許可を追加するように管理者に依頼してください。

※IAMユーザー:iret-media
※MFAデバイス名:iretmedia-device

上記のようなエラーが表示されましたら以下の対処方法をご確認ください。

理由

2022年11月16日にAWS Identity and Access Management(IAM)で複数の多要素認証(MFA)デバイスのサポート機能が追加されたことによります。
それまでユーザー1人に対してMFAデバイスが1つしか登録できませんでしたが、このアップデートで最大8個まで登録が可能になりました。[1]
この影響により、すでに作成していた「IAM ユーザーに MFA デバイスの自己管理を許可する」に対応するIAMポリシーの記述を変更する必要が生じました。
変更しないまま「MFAデバイスの割当て」を実施するとエラーが発生するようになっています。

ユーザーあたり最大 8 個の MFA デバイスを追加でき、これには FIDO セキュリティキー、仮想認証アプリケーションを使用したソフトウェアタイムベースドワンタイムパスワード (TOTP)、ハードウェア TOTP トークンが含まれます。複数のデバイスを設定することで、デバイスを紛失または破損した場合に、または地理的に異なるチームのアクセスを管理する場合に、柔軟性が向上します。

[1] AWS Identity and Access Management で複数の多要素認証 (MFA) デバイスのサポートを開始
https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-identity-access-management-multi-factor-authentication-devices/

そのため「MFAデバイスの名前」入力が必須となりました。

対応手順

1.MFAデバイスの設定をしているIAMユーザー、もしくはIAMグループの許可ポリシー画面に遷移してください

※IAMポリシーの変更作業になりますので管理者権限を持つIAMユーザーで作業を実施してください。

※本記事ではIAMグループ画面で説明いたします。
IAMサービス > ユーザーグループ > 対象のユーザーグループを選択 > 許可タブ > MFAデバイス設定のポリシーの左にある[+]を押下 > 編集

2.ポリシー編集画面にて、JSONタブを選択して中身に下記ポリシーがあるか確認してください

  • ポリシー編集画面

  • ポリシー
{
"Sid": "AllowUserToCreateVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/${aws:username}"
},

3.上記のポリシーがあった場合、下記に変更してください

{
"Sid": "AllowUserToCreateVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/*"
},

4.変更後、下部にある[ポリシーの確認] > [変更の保存] を押下してください

5.再度該当IAMユーザーにてMFA登録を行なってみてください、下記画面が表示されたら成功です

問題点

IAMポリシーについてはAWSドキュメントからも手順と同様の設定を実施されるのが無難かと思われます。
※デバイス名の指定がない「アスタリスク」を使用しています。[2]

"Resource": "arn:aws:iam::*:mfa/*"

[2] IAM: IAM ユーザーに MFA デバイスの自己管理を許可する
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html

「アスタリスク」指定だとセキュリティ的に問題ではないか、と思われる方は以下を参考にデバイス名を指定することができます。

"Resource": "arn:aws:iam::*:mfa/osaka"

MFAデバイス名に「osaka」を入力して[次へ]でデバイス設定画面が正常に表示されます。

しかし、MFAデバイス名に「tokyo」と入力すると許可されていないため、当然以下のようにエラー画面が表示されます。

ただ、問題はここからです。

先程MFAデバイス名「osaka」をデバイス設定画面で設定せずに[前へ]を押下した場合

再度「osaka」を登録しようとすると「既にMFAデバイスは存在する」とのエラーが表示されて登録できなくなります。
AWSアカウント内部にMFAデバイス名「osaka」が残る状態になってしまい、再登録ができずにMFA設定できなくなる沼にハマります。

チャンスが一度しか無いという恐ろしい事態になります。

ちなみにMFA設定できなくなる沼からの脱出方法ですが、AWSコンソール上のUIでは現状不可能になります。
CLI、AWS CloudShellからはMFAデバイス名「osaka」を削除できました。

aws iam delete-virtual-mfa-device --serial-number arn:aws:iam::xxxxxxxxxxxx(AWSアカウントID):mfa/osaka

※この場合アクセスキーやAWS CloudShellの操作許可があるユーザーでないと削除できません。
セキュリティ重視の方はこの点を十分に注意してご利用ください。

最後に

本件の内容は2022年11月16日より前にMFAデバイスを登録している方に特に関係がございます。
アップデート以前のMFAデバイス1台目は自動的に「IAMユーザー名」で登録される仕様になっており、2台目を登録しようとすると本件の内容が発生します。
IAMポリシーの修正が必要の際はご参照ください。

以上になります。
ご覧いただきありがとうございました。