서비스 운영환경에 대하여 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"
}
}
}
]
}
읽어주셔서 감사합니다.
레퍼런스
최근댓글