AWS Private Subnet 의 자원(EC2, RDS, OpenSearch DashBoard 등) 에 접근하기 위해 Public 에서 접근 가능한 Bastion Host 를 생성하여 사용 하곤 합니다. Bastion Host 에 접근하기 위해 사용되는 pem키가 외부에 노출될 경우 보안 취약점이 발생하고 Bastion Host 를 관리해야하는 운영상의 오버해드도 증가하게 됩니다.
AWS SSM plugin 을 사용하면 Bastion Host 없이도 AWS Private Subnet 자원에 접근이 가능하기 때문에 보안성 향상 및 운영 오버해드의 증가를 막을 수 있습니다.
이 글에서는 SSM Plugin 을 통한 Private EC2 에 SSH 접속 및 Private EC2 의 Port Fowarding 을 통한 내부 자원(ex.OpenSearch Dashboard) 접근에 대해 알아봅니다.
Session Manager Plugin 설치
Session Manger Plugin 설치는 아래 AWS Document 에서 본인 Local 환경에 맞게 설치합니다.
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
용 Session Manager 플러그인 설치 AWS CLI - AWS Systems Manager
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
Session Manager Plugin 설치 확인
아래 명령어로 SSM Plugin 설치여부를 확인합니다.
정상적으로 설치하게 되면 아래 메시지가 반환됩니다.
SSM Plugin 설치 확인
VPC Endpint 생성
Private Subnet 에 생성한 EC2 Instance 는 Public IP 나 DNS 이름이 없습니다.
EC2 Instance 에서 실행되는 System Manager Agent 는 VPC Endpoint 와 통신합니다.
아래 세개의 VPC Endpoint 를 생성합니다.
com.amazonaws.ap-southeast-2.ssm
com.amazonaws.ap-southeast-2.ec2messages
com.amazonaws.ap-southeast-2.ssmmessages
EC2 Instance 에 IAM role 적용
EC2 Instance 에는 System Manager Agent 가 설치 및 실행 중 이여야 합니다.
Amazon Linux 2023 에는 System Manager Agent 가 기본 설치되어 있습니다.
SSM Agent 가 사전 설치된 AMIs 정보는 아래 페이지에서 확인 가능합니다.
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/ami-preinstalled-agent.html
Amazon Machine Images(AMIs), SSM Agent 사전 설치 - AWS Systems Manager
SSM Agent가 이 목록에 없는 AWS 관리형 AMIs에 사전 설치되어 있을 수 있습니다. 이 경우 일반적으로 운영 체제(OS)에서 모든 Systems Manager 기능이 완벽하게 지원되지 않습니다. 또는 SSM Agent가 AWS Marketp
docs.aws.amazon.com
Role 생성
SSM plugin 으로 접근할 EC2 Instance 에 적용할 AmazonSSMManagedInstanceCore role 을 생성합니다.
AmazonSSMManagedInstanceCore 정책 추가
EC2 에 IAM 역할 적용
위에서 생성한 AmazonSSMManagedInstanceCore role 을 EC2 Instance 에 적용합니다.
EC2 에 AmazonSSMManagedInstanceCoreRole IAM Role 설정
Private Subnet 의 EC2 에 접속하기
아래 명령어로 Private 영역의 EC2 에 SSH Session 을 시작합니다.
instance-id 에 ssh 로 접속하고자 하는 EC2 Instance ID 를 입력합니다.
Private EC2 에 SSM 을 통해 정상적으로 접근되는지 확인합니다.
SSM Plugin 으로 Private EC2 ssh 접속 성공
Remote Host 로 PortFowarding 하여 Private 자원(OpenSearch Dashboard) 접속하기
SSM Plugin을 이용해 Private 에 위치한 OpenSearch 의 Dashboard 에 접속해봅니다.
Opensearh Dashboard Endpoint 확인
StartPortForwardingSessionToRemoteHost
아래 명령어로 Remote Host 로 Port Forwading Session 을 시작합니다.
host : OpenSearch Dashboard Endpoint
portNumber : 443
localPortNumber : 8443
Remote Host Port Forwading Session 시작
브라우저에서 Local Port 8443 으로 접속하게 되면 Private 영역의 OpenSearch Dashboard 에 정상적으로 접근됩니다.
MFA 인증 후 Session Manager Plugin 사용하기
MFA 강제적용 정책이 적용된 경우에는 위 방법으로 SSM Plugin 을 통해 Private 자원에 접근할 수 없습니다.
다음 글에서는 AWS Security Token Service(AWS STS) 를 통한 SSM Plugin 사용에 대해 알아보겠습니다.
To be continued...