IAM 사용자 비밀번호 변경 시 발생하는 iam:ChangePassword 권한 문제 해결
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 IAM 사용자 비밀번호 변경 시 발생하는 iam:ChangePassword 권한 문제를 해결하는 방법을 정리해 봤습니다.
문제 발생
사용자에게 iam:ChangePassword를 수행할 수 있는 권한이 없거나 입력한 비밀번호가 관리자가 설정한 계정 암호 정책을 준수하지 않습니다.
IAM 사용자를 생성하고 첫 로그인 시 비밀번호를 변경해 보면 상기와 같은 암호 정책을 준수하지 않았다는 에러 메시지가 표시됩니다.
문제 해결
1차적인 해결 방법으로는 IAM 사용자를 생성할 때「사용자는 다음 로그인 시 새 암호를 생성해야 합니다」항목에 체크를 해제하고 비밀번호 변경 없이 접속하도록 설정하는 것입니다.
하지만, 비밀번호 변경을 원하거나 이미 생성한 IAM 사용자로 로그인을 하고 싶다면 해당 사용자에게 할당한 정책을 변경할 필요가 있습니다.
정책을 변경하기에 앞서 이러한 문제는 왜 발생하는 걸까요?
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
현재 IAM 사용자에게 할당한 정책을 살펴보면, MFA가 설정되지 않은 상태에서는 모든 작업을 거부하지만 NotAction을 이용하여 특정 작업은 거부하지 않고 허용하도록 설정하고 있습니다. 해당 예외 작업에서 비밀번호를 변경할 수 있는 권한이 없기 때문에 에러 메시지가 출력되는 것입니다.
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
비밀번호를 변경할 수 있게 예외 작업에 iam:ChangePassword를 추가합니다.
IAM 사용자에게 자신의 비밀번호를 변경할 수 있도록 설정하는 방법에 대해서는 아래 AWS 공식 문서에서도 안내하고 있습니다.
다시 IAM 사용자로 돌아와 비밀번호를 변경해 봅시다.
비밀번호를 변경하면, 성공적으로 IAM 사용자로 로그인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.