この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ウィスキー、シガー、パイプをこよなく愛する大栗です。 皆さんは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をセキュアに使って行きましょう!