以前、AWSでMFAを自身で管理できるIAMポリシーについての記事を投稿しました。
その後、2022年11月にAWSでIAMユーザとルートユーザーに複数のMFAを割り当てるアップデートが発表されました。
AWS Identity and Access Management で複数の多要素認証 (MFA) デバイスのサポートを開始
このアップデートに伴い、MFAを自身で管理するIAMポリシーについても追加で考慮する事項が発生しているので紹介します。
ドキュメント
MFAを自己管理するIAMポリシーについては、上記にドキュメントがあります。
英語版については、2022年12月に更新されてしばらくの間、日本語版が古い版の翻訳の状態となっていましたが。
2023年2月現在は、英語版と日本語版のIAMポリシーの記述は同一のものとなっています。
以前のポリシーだと何が問題になるのか
複数のMFAデバイスを割り当てられるアップデートが来たことで、今まではユーザー名固定で作成されていたMFAデバイス名が、任意入力に変更となりました。
セキュリティ認証情報からMFAを登録する場合は、下記のデバイス名を入力するステップが追加されています。
MFAデバイス名が変更になると、IAMポリシーで定義しているリソースのARNが変わります。
以前のドキュメントに記載されていたポリシーでは、MFAデバイス名がユーザー名で作成される事を前提として、リソース制限を"arn:aws:iam::*:mfa/${aws:username}"
といった形でユーザー名指定で記述していたため。
このリソース制限を入れていた場合は、複数のデバイスをMFA登録する事ができず。
また、登録時もユーザー名を入れて登録しないとエラーとなります。
下記はhogeというIAMユーザーがfoobarというデバイス名でMFAデバイスを登録しようとしてエラーになった図。
User: arn:aws:iam::xxxxxxxxxxxx:user/hoge is not authorized to perform: iam:CreateVirtualMFADevice on resource: arn:aws:iam::xxxxxxxxxxxx:mfa/foobar because no identity-based policy allows the iam:CreateVirtualMFADevice action
ドキュメントはどう変わったのか
Periodic update - 12/30/22-05:08pm PST doc_source/reference_policies_examples_iam_mfa-selfmanage.md
上記のタイミングで、下記2点の変更がはいっています。
-
iam:CreateVirtualMFADevice
のリソース設定がarn:aws:iam::*:mfa/${aws:username}
から"arn:aws:iam::*:mfa/*"
に変更。 -
iam:DeleteVirtualMFADevice
が削除。
これは、任意のデバイス名を登録できるようにするため、リソース名の制限を撤廃しつつ。
MFAデバイスの削除について。以前は ユーザー名
=デバイス名
といった仕様があったので、自分と同名のデバイス名は自分が登録したものとして削除できるようにしていたが。
仕様変更にともない、任意のデバイス名が登録できるようになったため、MFAデバイスの削除権限については自己管理のポリシーからは削除された形になります。
(MFAデバイスを削除する必要が出た場合は、自身ではできなくて別途管理者が削除する対応が必要)
対応方針について
- IAMポリシーは変更せずに、MFAデバイスを登録する時はユーザー名で登録する運用にする。(MFAの複数登録はできない)
- ドキュメントにあるようにIAMポリシーを変更して、MFAデバイスの削除は自身では削除できないようにする。(MFA登録の複数登録はできる)
既存を変更するか、ドキュメントの変更に追随すう場合は上記の対応になるかと思いますが。
他にも、リソース許可をarn:aws:iam::*:mfa/${aws:username}*
としてデバイス名のprefixにユーザ名をいれる運用にすることで、複数MFAを登録しつつ、デバイスの削除も可能にする方法もあります。
ユーザー管理の部分に絡む事象となるため、既存権限を変更する場合は十分に検証してから変更して下さい。
総評
今回はAWSのアップデートに伴い、既存IAMポリシーが影響をうけるパターンになります。
MFAが複数登録できるようになると発表された当時。新しい機能追加がきたのか としか思い至りませんでしたが、よくよく考えると既存に影響ありなパターンでした。