AWS 콘솔 유저 항상 MFA 를 사용하게 하는 권한 정책

HYEONG HWAN, MUN/ 5월 30, 2024/ 미분류/ 0 comments

https://blog.lael.be/post/12091

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

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*