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