【AWS IAM】MFA設定の仕様が変わっていてハマった話
この記事は OPENLOGI Advent Calendar 2022 4日目の記事です。
OPENLOGIでは、サービスを提供するクラウドインフラとしてAWSを利用しています。
そのため、開発者はAWSにログインするIAMアカウントを持っているのですが
セキュリティのため、ログイン時には仮想デバイス等による二要素認証(MFA)を必須にしています。
先日、12月1日にエンジニアの新入社員が数名入ったのですが
その際、MFAの設定で意外なところでハマりました。
新入社員対応をしている情シスの方から以下のSlackメンションがきました。
いただいたエラーのスクリーンショットがこちら。
OPENLOGIのAWS環境では、一般開発者の権限で、自分自身のMFAを設定できる権限を与えています。
具体的には こちらのAWSドキュメント記事の設定を参考にしています。
上記リンク先の2022年12月4日時点のスクリーンショットはこちら[1]。
実際に設定しているポリシーの該当箇所の抜粋は以下:
{
"Sid": "AllowManageOwnVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/${aws:username}"
},
私自身のMFA設定も確認してみました。
特に問題なさそう。。。こういうARNを許可しているはずだよなぁ。。。と
あらためて先程いただいたスクリーンショットのエラーメッセージを確認していたところ、違和感に気づきました。
MFAデバイスのリソースARNをよく見ると
arn:aws:iam::【AWSアカウントID】:mfa/iPhone8
と、末尾が iPhone8 となっています。
え?なんでここにこんな文字列が入るんだろう??
ここはIAM ユーザ名が固定で入るはずなのに。。。
弊社では直近だと11月15日にも入社したエンジニアがいたので、その方の設定も確認したのですが
想定通り末尾がユーザ名になっていました。
という調査をSlackで共有していたところ
私の方でまったく想定していなかった情報を新入社員の方からいただきました。
え?任意の文字列を設定できる!?
いや、そんな仕様記憶にないんだけどな・・・と思って、設定画面のスクリーンショットをいただいたら
ほんとだ。。。こんな名前を指定するテキストボックス、以前は無かったはず。。。
自分が以前作ったマニュアルのスクリーンショットを確認すると
そうだよね、以前はこんな設定無かった。。。
いったいこれは何だ?
とりあえず、新入社員の方には、新しくできたテキストボックスには、ご自身のIAMアカウント名を入れてもらったところ、正常にMFA設定できました。
そして、この仕様変更はいったいなんだろうと思って調べていたら
この記事をみつけました。
IAMユーザーやAWSアカウントのルートユーザー に複数の MFA デバイスを割り当てる事ができるようになりました | DevelopersIO
なるほど。。。
今まで1ユーザには1つしかMFAを設定できなかったのが
複数デバイスを設定できるようになったんですね。
そのために、MFA設定時にテキストボックスが追加されている、と。
で、どうやらこの仕様変更が入ったのが、2022年11月16日の模様。
前回新入社員対応したのが11月15日だったので、その直後に変わったんですね。
すべての線が繋がりました。
そういうことか。。。
というわけで、とりいそぎ弊社の新入社員対応マニュアルとしては
新しくMFA設定するデバイス名は、ご自身のIAMアカウント名を入れてもらう運用にしました。
今後、MFAを複数設定したい、というユースケースがでてきたら
先程掲載したポリシーを見直さないとですね。
まだこのMFA複数設定できるようになって日が浅いからなのかもしれないですが
記事中で言及した、ユーザ自身にMFAデバイスの自己管理を許可するAWSドキュメントは、このMFA複数設定できることが考慮されてないですね。
ドキュメントの更新が待たれるところです。
ということで、AWS IAM、MFAの機能追加・設定画面の仕様変更でハマった、というお話でした。
-
英語版のリンクとスクリーンショットも貼っておきます。
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html
↩︎
Discussion