🕰️ 작성일 : 2025.06.09

Q : Amazon EC2에 SSM으로 접속하는 경우 이중 인증을 통해 접속하는 환경을 구성 할 수 있을까요?

A : IAM User에 대해 MFA 인증을 활성화하고, 해당 IAM User가 MFA 인증을 통해 로그인 한 세션이 아닐 경우, "ssm:StartSession" 을 차단시키는 방식으로 구성 할 수 있습니다.


EC2 SSM 접속에 대한 MFA 인증 구성하기

  1. IAM User에 대하여 MFA 인증을 활성화 했습니다. 해당 예제에서는 Google Authenticator을 MFA Device로 활용했습니다.

image.png

  1. IAM User에 아래의 Policy를 추가합니다. 아래의 Policy는 IAM User가 MFA을 통해 로그인 하지 않을 시, 대부분의 AWS 서비스에 대한 접근을 차단하는 정책입니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:ListVirtualMFADevices",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListAccountAliases",
                "iam:ListUsers",
                "iam:ListSSHPublicKeys",
                "iam:ListAccessKeys",
                "iam:ListServiceSpecificCredentials",
                "iam:ListMFADevices",
                "iam:GetAccountSummary",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false",
                    "aws:ViaAWSService": "false"
                }
            }
        }
    ]
}
  1. IAM User에 아래의 Policy를 추가합니다. 아래의 Policy는 IAM User가 MFA을 통해 로그인 했을때만 ***"*ssm:StartSession*"***에 대한 연결을 허용합니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSessionManagerWithMFA",
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ssm:ap-northeast-2:*:document/SSM-SessionManagerRunShell",
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ],
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}
  1. 최종 IAM User에는 아래와 같이 2개의 IAM Policy가 할당되어 있습니다.

image.png


테스트하기

  1. MFA 인증 없이 SSM 연결 시도하기

    1. 아래와 같이 MFA 인증이 없을 경우 AccessDeniedException가 발생합니다.

    image.png

  2. MFA 인증 후 SSM 연결 시도하기

aws sts get-session-token --serial-number arn:aws:iam::#########:mfa/mydevice --token-code ###### --profile user_ssm

export AccessKeyId=
export SecretAccessKey=
export SessionToken=