AWS

인터넷 없이 EC2에 접속하는 방법(AWS Session Manager 이용)

2024. 4. 8. 13:44
728x90

원래는..

Private Subnet에 있는 EC2는 말그대로 Private하기 때문에 외부에서 접근할 수 없다.

그럴 때 사용하는게 바로 <터널링>이다.

 

터널링은 보통 Bastion host라는 Public한 서버를 만들어서 그 서버를 통해 점프!하여 Private 서버로 접속하는 방법이다.

그런데 AWS에서 Public Subnet에 있는 퍼블릭 서버에 접속하기 위해서는 인터넷이 필요하다.

 

그렇지만, 만약에.! 정말정말 폐쇄망이고 인터넷 게이트웨이조차 만들 수 없는 상황이라면?

 

Session Manager

그럴 때 사용하는 게 바로 이 세션 매니저라는 친구이다. EIC도 있으나 나는 아직 이 서비스는 사용만 해보았기 때문에 제외하고,

AWS 내에서 인터넷 없이도 EC2에 접속할 수 있게 하기 위해서는 이 서비스를 사용하는 게 가장 적당하다고 생각한다.

 

설정 방법

1. VPC Endpoint

VPC Endpoint 보안그룹

  • 해당 VPC CIDR 대역을 허용하는 보안그룹을 생성한다.
  • Session Manager는 HTTPS로 접속할 수 있기 때문에 443 포트를 허용한다.

 

VPC Endpoint 생성

생성할 VPC Endpoint는 총 3개이다.

ssm.[리전].amazonaws.com : 시스템 매니저 서비스의 엔드포인트
ssmmessages.[리전].amazonaws.com : 시스템 매니저가 SSM 에이전트에서 시스템 매니저 서비스를 호출 때 사용
ec2messages.[리전].amazonaws.com : Session Manager를 사용하여 인스턴스에 연결

 

  1. VPC 콘솔 > 엔드포인트 > 엔드포인트 생성
  2. 서비스에서 ssm.region.amazonaws.com를 선택
  3. 엔드포인트를 생성할 VPC / 서브넷을 선택. DNS 이름 활성화를 선택
  4. 위에서 생성한 보안 그룹을 선택하고, 정책은 [전체 액세스]로 선택
  5. 나머지 서비스인 ssmmessages.region.amazonaws.comec2messages.region.amazonaws.com 를 설정하기 위해 1번부터 4번까지의 과정을 반복한다.

총 3개의 엔드포인트가 생성되면 완료!

 

2. IAM

IAM 권한

  • 다음 권한을 가진 IAM Role을 생성합니다.
    • AmazonSSMManagedInstanceCore (AWS 관리형 정책)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAssociation",
                "ssm:GetDeployablePatchSnapshotForInstance",
                "ssm:GetDocument",
                "ssm:DescribeDocument",
                "ssm:GetManifest",
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:ListAssociations",
                "ssm:ListInstanceAssociations",
                "ssm:PutInventory",
                "ssm:PutComplianceItems",
                "ssm:PutConfigurePackageResult",
                "ssm:UpdateAssociationStatus",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:UpdateInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2messages:AcknowledgeMessage",
                "ec2messages:DeleteMessage",
                "ec2messages:FailMessage",
                "ec2messages:GetEndpoint",
                "ec2messages:GetMessages",
                "ec2messages:SendReply"
            ],
            "Resource": "*"
        }
    ]
}
  • 생성한 IAM Role을 EC2 인스턴스에 부착합니다.
    • EC2 인스턴스 선택 > 작업 > 보안 > IAM 역할 수정

 

3. EC2

Session Manager로 EC2 접속

  1. AWS EC2 콘솔 > 인스턴스 선택 > 연결
  2. Session Manager 탭에서 [연결] 선택
  3. 다음과 같은 화면이 나타나면 접속이 완료된 것이다.

 

 

혹시 연결이 안된다면 보안그룹을 살펴본다.
EC2 인스턴스의 보안그룹에서 인바운드 규칙을 HTTPS / 443 / 내 IP로 수정해야한다!

 

 

참고 문서

https://aws.amazon.com/ko/blogs/mt/automated-configuration-of-session-manager-without-an-internet-gateway/

 

Automated configuration of Session Manager without an internet gateway | Amazon Web Services

Session Manager is a fully managed AWS Systems Manager capability that you can use to manage your Amazon Elastic Compute Cloud (Amazon EC2) instances, on-premises instances, and virtual machines (VMs) through an interactive one-click browser-based shell or

aws.amazon.com

https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html

 

Step 2: Create VPC endpoints - AWS Systems Manager

In the Middle East (Bahrain) Region (me-south-1) only, these buckets use different naming conventions. For this AWS Region only, use the following two buckets instead: patch-baseline-snapshot-me-south-1-uduvl7q8 aws-patch-manager-me-south-1-a53fc9dce

docs.aws.amazon.com

 

728x90