🛌

AWS IAMでMFAデバイスの管理を許可しようとして詰まった話

2023/01/05に公開

機能を絞ったグループ属しているユーザーがMFAデバイスの管理もできるようにしたいな〜と思って設定した話。

経緯

調べてみると公式ドキュメントで提供されていた。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html

ページに書いてあったJSONでポリシーを作ってグループにアタッチし、
いざやってみたらエラーになった。

User: arn:aws:iam::{アカウントID}:user/{ユーザー名} is not authorized to perform: iam:CreateVirtualMFADevice on resource: arn:aws:iam::{アカウントID}:mfa/{入力したMFAデバイス名称} because no identity-based policy allows the iam:CreateVirtualMFADevice action

調査

調べてみたら同じ事象に当たっている方がいて、AWS側でMFAデバイスが複数登録できるようにアップデートがあったことによる影響とのことだった。
https://blog.serverworks.co.jp/change-iam-policy-for-multiple-mfa-devices

以前はMFAデバイスが1つしか登録できなかった + 今だと設定しているMFAデバイスの名前がユーザー名で固定だったため、公式ドキュメントが提供しているポリシーで問題なかった。

しかし、アップデートによってMFAデバイスが複数登録できるようになり、MFAデバイスの名前が任意に付けられるようになったことでResourceに指定した条件に一致しなくなった。
(MFAデバイスの名前がユーザー名であれば今までのポリシーでもいける)

"Resource": [
"arn:aws:iam:::mfa/${aws:username}",
"arn:aws:iam::
:user/${aws:username}"
]

対策

MFAデバイスの認証権限(CreateVirtualMFADevice)について、MFAデバイスの名称リソースをusernameのみから任意の文字列に広げてあげる。

        {
            "Sid": "AllowIndividualUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:ListMFADevices",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice"
            ],
            "Resource": [
-               "arn:aws:iam::*:mfa/${aws:username}",
+               "arn:aws:iam::*:mfa/*",
                "arn:aws:iam::*:user/${aws:username}"
            ]
        }

Discussion