AWS で MFA 必須の IAM アカウントを作成し、ユーザに受け渡す手順について
多段階認証 (MFA) が必須の IAM アカウントを作成して、ユーザに受け渡す手順について。
MFA 必須でパスワードリセット可のポリシーについて
公式のドキュメントは以下の2つです。
- https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html
- https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html
基本的にはドキュメントの通りにやればいいのですが、このままだと、初回のパスワードリセットが許可されません。
このドキュメントの注記にあるとおり、以下の2つを DenyAllExceptListedIfNoMFA
に追加します。
iam:ChangePassword
iam:GetAccountPasswordPolicy
追加した JSON は以下です。(実際に設定するときは、公式のドキュメントからコピペしてください)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowViewAccountInfo",
"Effect": "Allow",
"Action": [
"iam:GetAccountPasswordPolicy",
"iam:ListVirtualMFADevices"
],
"Resource": "*"
},
{
"Sid": "AllowManageOwnPasswords",
"Effect": "Allow",
"Action": [
"iam:ChangePassword",
"iam:GetUser"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnAccessKeys",
"Effect": "Allow",
"Action": [
"iam:CreateAccessKey",
"iam:DeleteAccessKey",
"iam:ListAccessKeys",
"iam:UpdateAccessKey"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnSigningCertificates",
"Effect": "Allow",
"Action": [
"iam:DeleteSigningCertificate",
"iam:ListSigningCertificates",
"iam:UpdateSigningCertificate",
"iam:UploadSigningCertificate"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnSSHPublicKeys",
"Effect": "Allow",
"Action": [
"iam:DeleteSSHPublicKey",
"iam:GetSSHPublicKey",
"iam:ListSSHPublicKeys",
"iam:UpdateSSHPublicKey",
"iam:UploadSSHPublicKey"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnGitCredentials",
"Effect": "Allow",
"Action": [
"iam:CreateServiceSpecificCredential",
"iam:DeleteServiceSpecificCredential",
"iam:ListServiceSpecificCredentials",
"iam:ResetServiceSpecificCredential",
"iam:UpdateServiceSpecificCredential"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "AllowManageOwnVirtualMFADevice",
"Effect": "Allow",
"Action": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice"
],
"Resource": "arn:aws:iam::*:mfa/${aws:username}"
},
{
"Sid": "AllowManageOwnUserMFA",
"Effect": "Allow",
"Action": [
"iam:DeactivateMFADevice",
"iam:EnableMFADevice",
"iam:ListMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken",
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
初期ユーザ用・MFA 設定済みユーザ用ポリシー
ポリシーを2つ作ります。
- パスワードリセットを許可したポリシー (初期ユーザ用)
- パスワードリセットにMFA が必要なポリシー (既存ユーザ用)
前者のポリシー名と説明を、以下のように設定します。
説明文に URL が書けないので、後から参照できるように公式ドキュメントのタイトルを書くことにしました。
MFARequiredOnlyForTheFirstLogin
Created YYYY-MM-DD - Copied and edited the official sample JSON to enable password reset - AWS Allows MFA-Authenticated IAM Users to Manage Their Own Credentials on the My Security Credentials Page
ポリシーの JSON は、上で説明した通り、公式ドキュメントからコピペして、Action を2つ追加したものを設定します。
そして、このポリシーだけを設定したグループ NotYetLoginUsers
を作成します。
後者のポリシー名と説明は、以下のように設定します。
MFARequiredForCurrentUsers
Created YYYY-MM-DD - Copied from the official document - AWS Allows MFA-Authenticated IAM Users to Manage Their Own Credentials on the My Security Credentials Page
ポリシーの JSON は、公式ドキュメントのものをそのまま使います。
一連の操作を行うスクリプトを以下に作成しました。setup.sh プロファイル名
でポリシー 2 つと、NotYetLoginUsers
グループを作成します。
IAM アカウントの受け渡し
以下の手順で受け渡します。
- アカウントを作成し、
NotYetLoginUsers
グループにだけ所属させる - メール等で仮のパスワードを伝えて、パスワードリセットと MFA 登録を依頼する
- 本人の MFA 登録が確認できたら、
NotYetLoginUsers
グループから外し、MFARequiredForCurrentUsers
と必要な権限を設定する
2 の時点では何も権限がないので、パスワードはメールで送ってもよいことにしています。
パスワードポリシーの影響について
パスワードポリシーに、ユーザにパスワードの変更を許可する Allow users to change their own password
というオプションがあります。
このオプションは、オンにしておく方が良さそうでした。
オフの場合、
- ポリシーで明示的に指定しない限り、パスワードを変更できなくなる
- ユーザ作成時にパスワードリセットを求めると、自動的に
IAMUserChangePassword
が追加される
という挙動になるようです。
逆に、ポリシーを設定さえすれば、そちらが優先されるようです。全ユーザに、上記 MFA 必須のポリシーを設定するのであれば、どちらでも基本的には同じ動作になります。
ただし、オフにすると、新規ユーザ作成時に勝手に IAMUserChangePassword
ポリシーが設定されてしまうので、オンにしておくのが無難だと思います。
Author And Source
この問題について(AWS で MFA 必須の IAM アカウントを作成し、ユーザに受け渡す手順について), 我々は、より多くの情報をここで見つけました https://qiita.com/koseki/items/f20a1be6d90ddd703e48著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .