仮想MFAデバイスの設定時に発生した「エンティティは既に存在しています」の調査
背景
社内の方からAWSを利用したいのでアカウントの作成を依頼されました。
アカウントの作成後、セキュリティ強化のため、設定登録を必須としているMFAデバイスの登録を依頼。
ところが、以下のようなエラーが発生してしまいました。
参考
AWS MFA 設定で「エンティティは既に存在しています」エラーの解決方法
環境
せっかくなので、先日構築したdocker desktop for Windowsに移設(コピー)したaws-cliのコンテナで作業してみることにします。
コンテナの起動
まずはdocker desktop for Windowsからコンテナを起動します。
別ウィンドウでcliが起動します。
早速調査を開始しします。
詳細は割愛しますが、最初にaws configureを設定し、awsとの疎通を確認しておきます。
# aws configure
AWS Access Key ID [None]: xxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxx
Default region name [None]: us-west-1
Default output format [None]: json
# aws sts get-caller-identity
{
"UserId": "xxxxxxxxxx",
"Account": "xxxxxxxxxx",
"Arn": "arn:aws:iam::xxxxxxxxxx:user/xxxxxxxxxx"
}
list-virtual-mfa-devices で問題の SerialNumber を特定
こちらのコマンドを実行することで、仮想MFAデバイスのリストを取得できるようです。
実行してみたところ、エラーが発生しているIAMユーザのデバイスが登録されていることがわかりました。
# aws iam list-virtual-mfa-devices
{
"VirtualMFADevices": [
{
"SerialNumber": "arn:aws:iam::xxxxxxxxxx:mfa/xxxxxxxxxx"
},
{
"SerialNumber": "arn:aws:iam::xxxxxxxxxx:mfa/root-account-mfa-device",
"User": {
"UserName": "xxxxxxxxxx",
"UserId": "xxxxxxxxxx",
"Arn": "arn:aws:iam::xxxxxxxxxx:root",
"CreateDate": "2016-06-24T01:42:38+00:00",
"PasswordLastUsed": "2020-02-19T07:06:41+00:00"
},
"EnableDate": "2019-07-24T07:15:06+00:00"
},
:
:
:
delete-virtual-mfa-device で該当のデバイス情報を削除
listコマンドと同様にdeleteコマンドも用意されているようなので、該当のIAMユーザのデバイス情報を削除してみます。
# aws iam delete-virtual-mfa-device --serial-number "arn:aws:iam::xxxxxxxxxx:mfa/xxxxxxxxxx"
実行後は何もプロンプトにメッセージは表示されませんでしたので、再度LISTを取得し、正しく削除されていることを確認できました。
IAMユーザの利用者に連絡し、再度MFAデバイスの登録を実施してもらったところ、エラーは解消されており、無事にMFAデバイスの登録を行うことができました。
おわりに
実は当初、この方法を見つけることができず、別のIAMユーザを作成し、利用者の方に払い出し、AWS環境を利用してもらっていました。
しかし、根本的な解決にはなっていませんでしたので、今回調査と対処を実施、無事に解決に至りました。
エラーメッセージからして二重登録なのだろうとは思いましたが、調査方法や対処方法がすぐに出てこず、時間がかかってしまったのが反省点です。