Вопрос или проблема
Моя политика паролей настроена так, чтобы позволять пользователям изменять свои пароли, но когда я создаю нового пользователя с опцией “должен изменить пароль”, пользователю сообщают, что ему требуется разрешение “iam:ChangePassword”.
Они получают похожее сообщение, когда пытаются изменить его с помощью CLI.
Есть идеи, как диагностировать и исправить это?
У меня была такая же проблема. Новые пользователи получали следующее сообщение об ошибке:
Пользователь либо не авторизован выполнять iam:ChangePassword, либо введенный
пароль не соответствует политике паролей учетной записи, установленной
администратором
Это несмотря на установленную опцию “Разрешить пользователям изменять свои собственные пароли”. Явное добавление разрешения iam:ChangePassword
также не помогло.
В моем случае проблемой оказалось то, что у нас была политика принудительной аутентификации MFA, но когда пользователь только что вошел в систему впервые, у него, очевидно, еще нет настроенной MFA.
Удаление политики MFA решило проблему для меня.
У меня была такая же проблема, я выяснил, что можно исключить действия из обязательной MFA:
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
Это сгенерированная политика, в которой нет changepassword в списке исключений.
Политика запрещает любой доступ без mfa, кроме действий из списка NotAction.
Вам нужно добавить “iam:ChangePassword” в этот список
Вы не включили политики, которые установили, но из сообщения об ошибке ясно, что у пользователя нет разрешений ChangePassword
.
Ссылка ниже дает все детали, но в общем случае вам нужно убедиться, что есть привязанная к пользователям политика, которая соответствует следующей:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:GetAccountPasswordPolicy",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iam:ChangePassword",
"Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
}
]
}
Ссылка
В моем случае у нас была назначена MFA, но это не было проблемой на самом деле. Пароль, который я пытался использовать, не соответствовал требованиям безопасности, указанным в IAM для нашей политики паролей. Когда я пытался изменить его через AWS Console, я получил гораздо более четкое сообщение об ошибке "Пароль не соответствует политике паролей учетной записи: он должен содержать не менее 10 символов"
.
Я не совсем уверен, почему это было так, поскольку выполнение echo 'mynewpassword' | wc -c
показывало 10 символов, но когда я изменил его на более длинный пароль, изменение прошло успешно. Сообщение из CLI определенно не указывало, что проблема была в политике паролей, так как ошибка давала впечатление, что это была проблема с разрешениями IAM.
Я также столкнулся с этим после изменений в опыте входа пользователя. В моем случае это было из-за добавления пути к новому пользователю (который использовался в политике, которую я реализовал).
Однако стандартная политика AWS IAMUserChangePassword не учитывает это.
например.
"arn:aws:iam::*:user/${aws:username}"
Если вы добавили путь к пользователю IAM, это будет действительный arn:
"arn:aws:iam::account-id:user/mypath/myuser
На данный момент мы просто решили добавлять путь после того, как пользователь вошел в систему, или не проверять изменение пароля при входе.
В моем случае проблема была с форматом пароля:
-
Окно от AWS для изменения пароля, когда он почти истек, не показывает допустимый формат (верхний и нижний регистры, обязательно наличие хотя бы одной цифры и/или специального символа….)
-
Если пользователь вводит недопустимый формат, вместо предупреждения об этом, отображается ошибка разрешений, что вводит в заблуждение относительно истинной причины сбоя.
.
Ответ или решение
Причина проблемы заключается в том, что пользователи не могут изменить свои пароли в AWS IAM, даже если политика паролей настроена для разрешения таких изменений. Основной вопрос здесь состоит в необходимости наличия соответствующих разрешений и, возможно, других условий, таких как использование многофакторной аутентификации (MFA).
Теория
AWS IAM (Identity and Access Management) управляет доступом к ресурсам AWS и действиями с ними. Для изменения пароля пользователя необходимо разрешение iam:ChangePassword
. Это можно настроить через политики IAM, которые определяют, какие действия пользователи могут выполнять. Кроме того, требуется учитывать политику паролей, которая может устанавливать определенные требования к длине и сложности паролей.
Примеры
-
Разрешения IAM: Одним из распространенных решений является добавление следующей политики, чтобы разрешить пользователям изменять свои пароли:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:GetAccountPasswordPolicy", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:ChangePassword", "Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}" } ] }
-
Проблемы с MFA: В некоторых случаях политика требует использования MFA, что может создавать сложность при первой попытке входа пользователя без настроенного устройства MFA. Например, можно добавить
iam:ChangePassword
в список исключений в политике, которая запрещает действия без MFA:{ "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "iam:ChangePassword" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } }
-
Политика паролей: Также необходимо проверить, соответствуют ли новые пароли требованиям политики паролей. Например, минимальная длина и наличие специальных символов.
Применение
Чтобы исправить описанную проблему, рекомендуется предпринять следующие шаги:
-
Проверьте и обновите политики IAM, чтобы удостовериться, что разрешение
iam:ChangePassword
включено для соответствующих пользователей в вашем AWS аккаунте. -
Рассмотрите необходимость настройки MFA. Если ваша организация использует MFA, убедитесь, что пользователи могут выполнить начальный вход без него. Временно отключите политику, требующую MFA, или добавьте действия в исключения.
-
Убедитесь, что выбранные пароли пользователями соответствуют политике паролей вашей организации. Эту политику можно изменить в разделе IAM Management Console.
Следование этим шагам поможет вам устранить проблему и улучшить опыт пользователей при изменении паролей в AWS IAM.