IAM User에 EIC를 통해 접속할 수 있는 권한 부여해 보기

IAM User에 EIC를 통해 접속할 수 있는 권한을 부여해 보는 방법을 정리해 봤습니다.
2023.11.23

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 IAM User에 EIC를 통해 접속할 수 있는 권한을 부여해 보는 방법을 정리해 봤습니다.

사전 준비

먼저 IAM User를 생성할 필요가 있습니다.

IAM User를 생성하고 Management Console에 접속하는 방법은 아래 블로그를 참고해 주세요.

EIC를 통해 접속하기 위해서는 EC2 Instance Connect Endpoint를 생성해야 합니다.

EC2 Instance Connect Endpoint를 생성하는 방법에 대해서는 아래 블로그를 참고해 주세요.

IAM User에 권한 할당

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:리전:계정ID:instance-connect-endpoint/엔드포인트ID",
            "Condition": {
                "NumericEquals": {
                    "ec2-instance-connect:remotePort": "22"
                },
                "NumericLessThanEquals": {
                    "ec2-instance-connect:maxTunnelDuration": "3600"
                }
            }
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*"
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

다음과 같은 형태로 정책을 만들 수 있는데, 여기서 ec2-instance-connect:remotePort를 이용해서 접속할 수 있는 포트 를 제한할 수 있으며, ec2-instance-connect:maxTunnelDuration를 이용하여 최대 이용 시간을 제한할 수 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2InstanceConnect",
            "Action": "ec2-instance-connect:OpenTunnel",
            "Effect": "Allow",
            "Resource": "arn:aws:ec2:리전:계정ID:instance-connect-endpoint/엔드포인트ID",
        },
        {
            "Sid": "SSHPublicKey",
            "Effect": "Allow",
            "Action": "ec2-instance-connect:SendSSHPublicKey",
            "Resource": "*"
        },
        {
            "Sid": "Describe",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceConnectEndpoints"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

제한을 두고 싶지 않다면, 상기와 같이 ec2-instance-connect:remotePort, ec2-instance-connect:maxTunnelDuration를 삭제한 상태로 정책을 생성합니다.

접속 확인

생성한 IAM User로 접속합니다.

EC2 Instance Connect를 통해 접속을 시도합니다.

할당받은 권한을 통해 EC2 Instance Connect로 EC2 인스턴스에 접속할 수 있는 것을 확인할 수 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !