IAMアクションでiam:DeactivateMFADevice
の権限をもっていて、iam:DeleteVirtualMFADevice
の権限を持っていないユーザーが、マネジメントコンソールからMFAの削除を実行したら少し面倒な状態になるので、どういった状態になるか紹介します。
参考ドキュメント
実際にためしてみる
今回qiitaというIAMユーザーに対して、MFAデバイス名もqiitaというMFAを割当ています。
またこのqiitaユーザーにはMFAの登録解除(iam:DeactivateMFADevice
)の権限はもっているが、MFAデバイスの登録削除(iam:DeleteVirtualMFADevice
)権限をもたないポリシーを作成しアタッチしました。
この条件のユーザーで自分の認証情報の画面からMFAの削除を実行します。
削除を選択
エラーが発生しました。
User: arn:aws:iam::xxxxxxxxxxxx:user/qiita is not authorized to perform: iam:DeleteVirtualMFADevice on resource: arn:aws:iam::xxxxxxxxxxxx:mfa/qiita because no identity-based policy allows the iam:DeleteVirtualMFADevice action. 仮想 MFA デバイスは非アクティブ化されていますが、削除されていません。CLI または API を使用してデバイスを削除するよう管理者に依頼してください。
画像を確認してもらうとわかりますが、自分の認証情報からMFAの登録は消えており一件しただけだと正常に消えているようにみえます。
ただし、エラーメッセージを読む、CLI または APIで削除するように管理者に依頼となっています。
この状態で同名のMFAデバイスを登録しようとどうなるか
先ほどはqiitaというデバイス名だったので、同名で作成しています。
エラーが発生しました。
先ほど削除したはずですが、MFA device already exists.
が発生します。
これはどういう状態化というと、
ユーザーからMFAデバイスの登録は外れていますが、MFAデバイス自体は削除できておらず残っている状態となっています。
前述したエラーメッセージは管理者にデバイスの削除を依頼とメッセージにでていましたが、この状態になるとマネジメントコンソールからMFAデバイスの削除は現状無理なようです。
管理者でaws-cliからMFAデバイスを削除する
re:PostのナレッジにMFAのdeactiveとdeleteについて記事があるのでこちらを参考にして削除していきます。
まずはqiitaとは違い、MFAの参照と削除も行える管理者権限でログインしてCloudShellからMFAデバイスの登録を確認していきます。
aws iam list-virtual-mfa-devices
今回登録したMFAデバイスqiitaのデバイスがまだ残っている事が確認できます。
マネジメントコンソール上では出てきませんが、このように裏では残っている状態となっています。
こちらを下記のaws-cliコマンドから削除していきます。
# 先ほど参照してmfaのシリアルナンバーをパラメータとして実行
aws iam delete-virtual-mfa-device --serial-number arn:aws:iam::xxxxxxxxxxxx:mfa/qiita
# 削除できたか再度一覧を取得し確認
aws iam list-virtual-mfa-devices
総評
MFA周りの権限ポリシーをいじっていたら、このような状態が発生したので忘備録としてメモ
MFAデバイスはユーザーから無効化するdeactiveといった状態と、MFAデバイス自身を削除するdeleteといった状態の2種類がある事を認識していないと、最初すこし混乱する気がします。