새소식

AWS

SSM(Session Manager) Plugin 을 사용하여 Local PC 에서 AWS Private 자원에 접근하기

  • -

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 설치여부를 확인합니다.

session-manager-plugin

정상적으로 설치하게 되면 아래 메시지가 반환됩니다.

The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.

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 을 시작합니다.

 

aws ssm start-session --target instance-id

 

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 을 시작합니다.

aws ssm start-session \
    --target instance-id \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["mydb.example.us-east-2.rds.amazonaws.com"],"portNumber":["3306"], "localPortNumber":["3306"]}'

 

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...

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.