MFAデバイス登録時に"MFA device already exists"出た際の落とし穴

記事タイトルとURLをコピーする

こんにちは。最近京都へ旅行に行った荒井です。

平日に行ったおかげもあり、かなり人が少ない中ゆったり観光できてよかったです。

私事ですが、最近iphoneを13miniから17に機種変更しました。

それに伴いMFAデバイスを登録し直そうとした際に本記事のタイトルにもなっているエラーが発生したので、備忘録として残しておこうと思います。

結論

先に結論を書いておくと、登録しようとしたMFAデバイス名がアカウント内の他のユーザーと被っていたことが原因でした。 これから登録する方は、一般的すぎる名前は避けて、自分の名前を含めるなどユニークな名前にしておくことをおすすめします。

経緯

事の発端は、新しくMFAデバイスを登録しようとしたときのことです。

エラーメッセージを見たときは、自分の環境に既に何か登録されているのかと思い、まずはそのままエラー文で検索してみました。

AWS re:Postで似たような事象についての投稿を見つけたので、そこに書かれている解決策をひと通り試してみたのですが、状況は全く変わりませんでした。

repost.aws

しばらく原因が分からず悩んでいたのですが、MFAデバイスのARNに着目したところ「arn:aws:iam::<account-id>:mfa/<デバイス名>」という構造になっていました。

私はてっきり「arn:aws:iam::<account-id>:mfa/<ユーザ名>/<デバイス名>」のように、間にユーザ名が挟まる形式だと思い込んでいて、ユーザー間であれば同じデバイス名を使い回しても重複しないと考えていました。

ですが、ユーザ名が含まれない構造となっていたのでデバイス名はAWSアカウント全体で一意にしないといけないのではないかと予想しました。

そこで、自分が登録しようとしていたデバイス名をAWS環境内で検索してみたところ、案の定、他のユーザーが既に同じ名前でデバイスを登録していることが分かりました。

試しに、自分の名前を含めるなどして誰とも被らない一意なデバイス名に変更してみると、無事に登録できました。

ドキュメントを探してみる

あとで気になって公式のドキュメントを探してみたのですが、通常のユーザー向けドキュメントにはこの仕様についての明確な記載は見当たりませんでした。

ただ、IAMのAPIリファレンスにある「CreateVirtualMFADevice」の項目を確認すると、VirtualMFADeviceNameのパラメータ説明に「The name of the virtual MFA device, which must be unique. (仮想MFAデバイスの名前。一意である必要があります)」と書かれていました。

docs.aws.amazon.com

マネジメントコンソール画面から登録するだけだとAPIリファレンスまで隅々とは読まないので、完全に思わぬ落とし穴でした。

終わりに

少し考えてみたらすぐに気が付きそうなものですが、案外気がつくまで少し時間がかかったので記事にしてみました。

今後の機能改修でエラーが出力される際、「そのデバイス名は既に利用されています」とか出てくれればいいなと思いました。

荒井 泰二郎 (記事一覧)

2023年8月入社 最近ジムに通い始めました