「エンティティは既に存在しています」と表示されMFAデバイスを割り当てできない時の対応方法

2021.07.26

こんにちは、岩城です。

皆さん、IAMユーザーにMFAを設定しているでしょうか。

先日、設定しようとしたときに以下のように「エンティティは既に存在しています」と表示されました。

詳細はこちらをクリックして遷移するドキュメントに以下のように原因が記載されています。

これは、誰かが以前に IAM コンソールでユーザーに仮想 MFA デバイスの割り当てを開始し、プロセスをキャンセルした場合に発生する可能性があります。これにより、IAM のユーザーの MFA デバイスが作成されますが、アクティブ化されることはありません。新しいデバイスをユーザーに関連付ける前に、既存の MFA デバイスを削除する必要があります。

基本的にはドキュメントのとおりに進めれば問題なくMFAデバイスを割り当てられるようになりますが、折角なので本エントリでは、CloudShellを使って対応してみたいと思います。

前提

  • 利用するIAMユーザーもしくはIAMロールに以下の権限を持つIAMポリシーが割り当てられていること
    • CloudShellを起動できる権限
    • IAMユーザーに対しMFAデバイスを割り当てできる権限

今回は便宜的にAdministrator権限を持つIAMユーザーで試しています。

やってみた

CloudShellを起動します。

list-virtual-mfa-devicesでMFAデバイスの割り当て状況を確認すると、正常に割り当てられてたrootアカウントに比べて、testユーザーの情報量が少ないことが分かります。

SerialNumberだけ登録されています。この状態だとマネジメントコンソール上では、MFAデバイスが割り当てられていないように見えますが、エンティティが既に存在しているため、MFAデバイスの割り当てが失敗します。

$ aws iam list-virtual-mfa-devices
{
    "VirtualMFADevices": [
        {
            "SerialNumber": "arn:aws:iam::123456789123:mfa/test"
        },
        {
            "SerialNumber": "arn:aws:iam::123456789123:mfa/root-account-mfa-device"",
            "User": {
                "UserId": "123456789123",
                "Arn": "arn:aws:iam::123456789123:root",
                "CreateDate": "2018-10-12T06:31:05Z",
                "PasswordLastUsed": "2020-08-05T09:10:24Z"
            },
            "EnableDate": "2018-10-29T02:12:04Z"
        }
    ]
}

削除したいtestユーザーのMFAデバイスのARNを引数にdelete-virtual-mfa-deviceを実行します。

$ aws iam delete-virtual-mfa-device --serial-number "arn:aws:iam::123456789123:mfa/test"

再度list-virtual-mfa-devicesを実行すると、当該MFAデバイスが削除されていることが分かります。

$ aws iam list-virtual-mfa-devices
{
    "VirtualMFADevices": [
        {
            "SerialNumber": "arn:aws:iam::123456789123:mfa/root-account-mfa-device"",
            "User": {
                "UserId": "123456789123",
                "Arn": "arn:aws:iam::123456789123:root",
                "CreateDate": "2018-10-12T06:31:05Z",
                "PasswordLastUsed": "2020-08-05T09:10:24Z"
            },
            "EnableDate": "2018-10-29T02:12:04Z"
        }
    ]
}

以上を対応するとMFAデバイスを割り当てられるようになります。

おわりに

MFAデバイス割り当て中にキャンセルすると、不要な情報が残ってしまい「エンティティは既に存在しています」状態になってしまうようです。

この状態になるとマネジメントコンソールからの操作では削除することができないので、AWS CLIを使用してデバイス情報を削除する必要があります。

普段利用する端末でAWS CLIがセットアップされていれば、わざわざCloudShellを利用する必要はありません。

本エントリがどなたかのお役に立てれば幸いです。