AWS에서 MFA 필수 IAM 계정을 생성하고 사용자에게 전달하는 단계 정보

17223 단어 IAMMFAAWS
다단계 인증(MFA)이 필수 IAM 계정을 만들고 사용자에게 전달하는 단계에 대해 알아봅니다.

MFA 필수 및 비밀번호 재설정 가능 정책 정보



공식 문서는 다음 두 가지입니다.
  • htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 어 M / ㅁ st / 우세 r 굿에서 / 쓰리 아 l_ 우세 rs-se lf - 마나게-m 후안 dc ds. HTML
  • htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 어 M / ㅁ st / 우세 r 굿이 / 레후 렌세 _ 뽀시에 s_에 mp ぇ s_ 아 ws_my-세 썸 ds-세 lf- 마나게. HTML

  • 기본적으로는 문서대로 하면 됩니다만, 이대로라면, 최초의 패스워드 리셋이 허가되지 않습니다.

    이 문서 주석에서 볼 수 있듯이 다음을 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 구성된 사용자 정책



    두 가지 정책을 만듭니다.
  • 암호 재설정을 허용 한 정책 (초기 사용자 용)
  • 암호 재설정에 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을 추가하는 것을 설정합니다.

    그런 다음 이 정책만 설정한 그룹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 プロファイル名에서 두 개의 정책과 NotYetLoginUsers 그룹을 만듭니다.
  • htps : // 기 st. 기주 b. 코 m / 코세키 / d5d0 세 8 아 f3 아 38b에서 fc0에 92 아 f02bc933b

  • IAM 계정 전달



    다음 단계에 따라 전달합니다.
  • 계정을 만들고 NotYetLoginUsers 그룹에만 속합니다
  • .
  • 메일 등으로 임시 비밀번호를 전달하고 비밀번호 재설정 및 MFA 등록 요청
  • MFA 등록을 확인한 후 NotYetLoginUsers 그룹에서 제거하고 MFARequiredForCurrentUsers 및 필요한 권한 설정

  • 2의 시점에서는 아무것도 권한이 없기 때문에, 패스워드는 메일로 보내도 좋다고 하고 있습니다.

    비밀번호 정책의 영향 정보



    암호 정책에는 사용자에게 암호 변경을 허용하는 옵션Allow users to change their own password이 있습니다.



    이 옵션은 켜져있는 것이 더 낫습니다.

    끄면,
  • 정책에서 명시 적으로 지정하지 않으면 암호를 변경할 수 없습니다
  • 사용자를 만들 때 비밀번호 재설정을 요청하면 자동으로 IAMUserChangePassword가 추가됩니다
  • .

    라는 거동이 되는 것 같습니다.



    반대로 정책을 설정하는 것만으로는 그쪽이 우선되는 것 같습니다. 모든 사용자가 위의 MFA 필수 정책을 설정하면 둘 다 기본적으로 동일하게 작동합니다.

    다만, OFF로 하면, 신규 유저 작성시에 마음대로 IAMUserChangePassword 폴리시가 설정되어 버리므로, 온으로 해 두는 것이 무난하다고 생각합니다.

    좋은 웹페이지 즐겨찾기