서비스 운영환경에 대하여 AWS 관리자에 대한 권한은 보수적으로 접근하는 것이 좋습니다.

여러가지 접근 제어 중 사용자에게 MFA(Multi Factor Authentication) 사용을 강제하는 방법에 대해 설명하겠습니다.

 

Amazon IAM Force_MFA JSON Sample 문서를 참고하여 Force_MFA Role을 생성합니다.

저는 사용자 그룹(관리자)의 Force_MFA 권한을 추가하였습니다.

 

아래의 예시는 관리자가 그룹에 소속된 유저는 MFA 등록 없이는 AWS 서비스를 이용할 수 없게 됩니다.

User: arn:aws:iam::000000000000:user/adminDemo is not authorized to perform: logs:DescribeQueryDefinitions on resource: arn:aws:logs:ap-northeast-2:000000000000:log-group::log-stream: with an explicit deny in an identity-based policy

 

서비스를 운영 중에 Role을 추가하신 경우 사용자에게 꼭 가이드가 필요합니다.

인프라팀에서 Force_MFA 적용 후 가이드를 주지 않아 당황한 적이 있습니다.

 

대표적인 앱으로는 Microsoft Authenticator, Google Authenticator 등 이 있으며

그 외 앱 호환성을 체크하기 위해서는 가상 MFA 애플리케이션 링크를 참고해주세요.


추가적으로 한가지 주의사항이 있습니다.

신규 사용자 생성 시 첫 로그인 때 비밀번호를 필수적으로 바꾸도록 Require password reset 옵션을 설정한 경우

MFA 설정 전에 '비밀번호 변경'에 대한 권한이 없기 때문에 해당 사용자는 비밀번호 변경을 할 수 없습니다.

Either user is not authorized to perform iam:ChangePassword or entered password does not comply with account password policy set by administrator

 

따라서 JSON  코드 중 MFA 예외구문에 비밀번호 변경할 수 있는 구문이 있는지 확인해야 합니다.

DenyAllExceptListedIfNoMFA의 NoAction에 "iam:ChangePassword", "iam:GetAccountPasswordPolicy" 추가

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "iam:ChangePassword",
                "iam:GetAccountPasswordPolicy",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

 

 

읽어주셔서 감사합니다.

 

레퍼런스
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기