一般のIAMユーザにMFAを設定してもらう方法
ウィスキー、シガー、パイプをこよなく愛する大栗です。 皆さんはAWSをセキュアに利用する為に、MFA(多要素認証)を使ってManagement Consoleへログインしていますよね?
でも管理者以外の一般IAMユーザを使用している方はMFAを使用していないのではないかと思います。MFAの登録にはIAMの権限が必要になるので、一般ユーザでは登録できない事がほとんどだと思います。IAM権限の設定は面倒なので、必要な権限を整理してみました。
必要な権限
以下の様なIAMポリシーを設定したグループを作成しましょう。なお"ACCOUNT-ID-WITHOUT-HYPHENS"は自分のAWSアカウントの値に置き換えて下さい。
下記ポリシーは、2015年8月時点で試したところ、上手く動かなかったようです。対応についてはIAMユーザ本人にMFAを管理してもらうためのIAMポリシーを御覧ください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListUsers" ], "Resource": [ "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/" ] }, { "Effect": "Allow", "Action": [ "iam:ListMFADevices", "iam:ListVirtualMFADevices" ], "Resource": [ "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:mfa/" ] }, { "Effect": "Allow", "Action": [ "iam:DeleteVirtualMFADevice", "iam:EnableMFADevice", "iam:CreateVirtualMFADevice", "iam:DeactivateMFADevice", "iam:ResyncMFADevice" ], "Resource": [ "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:mfa/${aws:username}" ] } ] }
このポリシーを解説します。全体にステートメントが3個あります。
1個目は"iam:ListUsers"権限を与えています。MFAの設定自体には必要無いのですが、Management Consoleから設定する場合は、自分のユーザを選択する必要があるので付与しています。 権限を付与していないとユーザの一覧画面で以下の様にエラーが出てしまいユーザを選択できません。
2個目は"iam:ListVirtualMFADevices"権限を全MFAに対して付与しています。MFAをハードウェアはソフトウェアを選択する時にエラーになる場合が有ります。 特定のユーザのMFAを参照する事ができないので、全ユーザのMFAに対して参照権限を設定しています。
3個目がMFAを登録、停止、再同期の権限を与えています。対象は自分のMFAのみに制限していますので、別のユーザの操作はできません。
まとめ
AWSアカウントの管理者はMFAを使用していると思いますが、この権限を与えれば開発者の方でもMFAを各自で登録できます。AWSをセキュアに使って行きましょう!