개발
home
🎡

[AWS] MFA를 필수로 설정하는 IAM

Created
2022/09/13
Tags
AWS
IAM
MFA
2022-09-13 @이영훈
AWS에서 보안을 위해서 MFA(Multi-Factor Authentication)을 설정을 필수로 하고픈 필요가 생겼습니다.
이 때 다음의 두가지를 만족하는 IAM이 필요합니다.
IAM 사용자가 MFA 인증을 하지 않은 경우에는 AWS 서비스를 이용할 수 없도록 제한하고
각 IAM 사용자가 자신이 직접 MFA를 등록할 수 있도록 권한을 부여합니다
조직의 모든 구성원(IAM 사용자)가 MFA 를 활성화하는 것을 강제하기 위해서는 아래와 같은 절차를 진행하여야 합니다.
1.
계정 내의 IAM 사용자가 MFA 인증을 하지 않은 경우에는 AWS 서비스를 이용할 수 없도록 권한 제한
2.
각 IAM 사용자가 자신이 직접 MFA 를 등록할 수 있도록 권한 부여
3.
각 사용자에게 IAM 사용자로 로그인 후 MFA 등록 방법을 안내하고 MFA 를 등록하지 않은 상태에서는 AWS 서비스 사용 권한이 없음을 공지합니다.
4.
MFA 를 등록한 사용자는 자신이 등록한 MFA 를 이용하여 AWS 관리 콘솔 (Management Console)에 로그인 후 부여받은 권한을 이용하여 AWS 서비스를 이용합니다.
여기에서 1, 2 단계는 IAM 정책을 통해 강제할 수 있습니다

MFA를 필수로 설정하는 IAM 정책

AllowViewAccountInfo 은 유저가 virtual MFA 장치를 볼 수 있는 권한을 부여합니다.
AllowManageOwnVirtualMFADevice 은 virtual MFA 장치를 등록하고 삭제할 수 있는 권한을 부여합니다.
AllowManageOwnUserMFA 은 virtual, U2F, 하드웨어 MFA 장치를 볼 수 있고, 관리(활성화, 비활성화, resync) 할 수 있는 권한을 부여합니다.
DenyAllExceptListedIfNoMFA 은 유저가 MFA를 설정하지 않은 경우, MFA 설정을 위한 액션을 제외한 AWS의 모든 권한을 제한합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": "iam:ListVirtualMFADevices", "Resource": "*" }, { "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: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" ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } } ] }
JSON
복사

Ref

 3. IAM 사용자에 대한 MFA 적용