AWS 콘솔 유저 항상 MFA 를 사용하게 하는 권한 정책
ISMS 보안 설정 팁.
콘솔 유저에 대해서, 아래의 권한을, 정책으로 만들든, inline 으로 설정하든 생성해서 attach하면 된다.
{
"Version": "2012-10-17",
"Statement": [
{
"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:GetMFADevice",
"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:ResyncMFADevice",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
2024년 기준으로 위의 정책을 모든 콘솔 계정에 적용하기를 권장함.
그리고 콘솔 사용자는 AccessKey 를 사용하지 말 것. AccessKey 는 서비스 별로 별도로 만들어야 추적이 용이하다.
정책 설명
콘솔 사용자에게는 이 정책을 제외한 어떠한 IAM 권한도 주지 말 것. (예외 : IAMUserChangePassword 정책은 할당해도 됨)
AWS 는 로그인 할 때 MFA 를 사용한 로그인 여부를 세션 값에 기록한다. (sessionContext - mfaAuthenticated)
Deny-NotAction 정책에 따라서, MFA 로그인이 아니면 모든 활동이 제한된다.

로그인 후에 저 메뉴를 통해서 MFA 를 만들어야 한다.

MFA 이름은 반드시 본인의 아이디로 설정할 것.
콘솔에서 MFA 디바이스를 만들면 CreateVirtualMFADevice 한 후에 EnableMFADevice 가 동작한다.
콘솔에서 MFA 디바이스를 제거하면 DeactivateMFADevice 한 후에 DeleteVirtualMFADevice 가 동작한다.
MFA 를 생성한 후에, MFA를 사용한 로그인을 해 주어야 올바른 사용을 할 수 있다.
주의 사항
기존의, 사용자 이름으로 mfa 를 만들지 않은 사용자의 경우 DeleteVirtualMFADevice 를 실행할 수 없다. (DeactivateMFADevice 는 실행되기 때문에 올바르게 계정에서 해제되긴 함)
인프라 관리자가 사용하지 않고, 삭제되지 않는 MFA 디바이스들을 gabage collecting 해주어야 한다.
명령어
aws iam list-virtual-mfa-devices