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를 사용하여 인스턴스에 연결
- VPC 콘솔 > 엔드포인트 > 엔드포인트 생성
- 서비스에서 ssm.region.amazonaws.com를 선택
- 엔드포인트를 생성할 VPC / 서브넷을 선택. DNS 이름 활성화를 선택
- 위에서 생성한 보안 그룹을 선택하고, 정책은 [전체 액세스]로 선택
- 나머지 서비스인 ssmmessages.region.amazonaws.com, ec2messages.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 접속
- AWS EC2 콘솔 > 인스턴스 선택 > 연결
- Session Manager 탭에서 [연결] 선택
- 다음과 같은 화면이 나타나면 접속이 완료된 것이다.
혹시 연결이 안된다면 보안그룹을 살펴본다.
EC2 인스턴스의 보안그룹에서 인바운드 규칙을 HTTPS / 443 / 내 IP로 수정해야한다!
참고 문서
https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html
728x90