質問・問題
ユーザー自身のパスワードを変更できるよう「iam:ChangePassword」の権限は付与していますが、新規IAMユーザーが初回ログイン時に、初期パスワード変更しようとすると以下エラーが表示され、パスワードが変更できません。変更時パスワードはパスワードポリシーにも準拠しています。
ユーザーに iam:ChangePassword を実行する権限がないか、
入力されたパスワードが管理者によって設定されたアカウントパスワードポリシーに準拠していません
また、IAM ユーザーに MFA デバイスの自己管理を許可したいため、以下ドキュメントに記載のポリシーを割り当てています。
IAM: IAM ユーザーに MFA デバイスの自己管理を許可する
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html
回答・解決方法
AWSドキュメントに記載の以下のポリシーは、
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:ListMFADevices",
"iam:ListUsers",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
- Condition: ユーザーが MFA を使って認証されていない場合
- NotAction: 指定されているアクション以外は
- Effect: Deny(禁止する)
という制御を行うポリシーが含まれており、初回ログイン時はMFAが未設定のため「iam:ChangePassword」の権限が許可されない状態となっています。
以下のように「NotAction」に「iam:ChangePassword」を追加することで、本事象を解決することが可能です。
"NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ListUsers", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "iam:ChangePassword" ],
【参考記事】
IAM: IAM ユーザーに MFA デバイスの自己管理を許可する
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html
MFA 条件を指定した IAM ポリシー
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html