MFA 인증없이 IAM 사용자가 최초 로그인시 비밀번호를 변경 할 수 없는 경우 해결해 보자!

2023.05.26

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 MFA 인증을 하지않고 IAM 사용자가 최초 로그인시 비밀번호 변경이 되지않는 문제를 해결하는 방법에 대해 알아보겠습니다.

무엇이 문제?

위의 이미지와 같이 최초 로그인시 MFA인증을 하지 않고 비밀번호를 변경 하려고 하거나 비밀번호 정책을 위반했을시 아래와 같이 에러 메세지가 표시됩니다.

사용자에게 iam:ChangePassword를 수행할 수 있는 권한이 없거나 입력한 비밀번호가 관리자가 설정한 계정 암호 정책을 준수하지 않습니다.

MFA 인증이란?

비밀번호 정책이란?

해결 방법

DenyAllExceptListedIfNoMFA 문에 추가 하기

해결 방법으로는 IAM 사용자의 권한에「iam:ChangePassword」을 추가하는 방법이 있습니다.

새로만든 IAM 사용자의 콘솔 화면 아래의「권한」탭을 클릭 합니다.
표시된 화면의 우측상단의「권한 추가」버튼을 클릭하고「인라인 정책 생성」버튼을 클릭합니다.

표시된 화면에서「JSON」탭을 클릭하고 아래의 코드를 복사하여 붙여넣습니다.
복사 붙여넣기가 완료되면「정책 검토」를 클릭 합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowViewAccountInfo",
            "Effect": "Allow",
            "Action": "iam:ListVirtualMFADevices",
            "Resource": "*"
        },
        {
            "Sid": "AllowManageOwnVirtualMFADevice",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::*:mfa/*"
        },
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "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"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

다음 화면에서「정책 이름」을 입력하고「정책 생성」버튼을 클릭하여 완료 합니다.

위의 정책을 추가 하여도 변경이 되지 않으신다면 아래의 내용도 확인해 주세요.

암호 정책 설정하기

모든 사용자 암호 변경 허용

IAM콘솔 화면의 왼쪽 메뉴에서「계정 설정」을 클릭합니다.
표시된 화면에서「암호 정책」박스 안의「편집」버튼을 클릭 합니다.

위의 이미지와 같이「사용자 자신의 암호 변경 허용」이 체크가 되어있어야 비밀번호를 변경할 수 있습니다.

특정 사용자만 암호 변경 허용

아래의 정책을 작성을 한 후 비밀번호를 변경할 IAM 사용자나 그룹에 할당하면 해당 사용자만 비밀번호를 변경할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:GetAccountPasswordPolicy",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:ChangePassword",
      "Resource": "arn:aws:iam::account-id:user/${aws:username}"
    }
  ]
}

위의 설정을 하신 후 최초 로그인 후 MFA인증 없이도 비밀번호 변경이 가능하게 됩니다.

보안상 문제가 없을까요?

해당 권한을 가진 IAM 사용자는 자기 자신의 비밀번호만 변경할 수 있으므로 걱정하지 않으셔도 됩니다.

참고 자료

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !