🔑 AWS SSM을 활용하여 Private Subnet EC2 접속하기

서론

기존에는 Bastion Server를 활용하여 Private Subnet에 있는 EC2에 접근했었지만 AWS Session Manager 를 통해서 접근하는 방법을 작성해보고자 한다.

 

Session Manager가 갖는 장점

운영 효율화

Bastion 서버에 대한 운영 관리가 없어지며, 정기적인 패치 및 소프트웨어 업데이트 시스템 유지에 대한 운영 비용 줄일 수 있음

비용 절감

Bastion 서버 사용시 EC2 비용에 대한 부담을 줄일 수 있음

보안 강화

발생하는 세션 로그 모두 S3에 적재가능

 

 

 

 

실습

1. 먼저 해야할 것

  • VPC, Private subnet 생성하기

 

 

2. SSM 연결을 위한 EC2 생성

  • 키페어 생성은 X
  • 보안그룹에 인바운드 그룹 → VPC 네트워크 대역 넣기

 

 

3. 보안그룹 생성

  • VPC Endpoint에서 사용할 Security group을 생성합니다.
  • System Manager는 TCP 443 port를 사용함으로 VPC 대역에서 들어오는 룰을 작성합니다.

 

4. IAM Role 생성

  • EC2 Instance가 SSM을 사용하기 위해서는 SSM을 위한 EC2 권한이 필요
  • AmazonEC2RoleforSSM 롤을 체크 ✅
  • 이름은 ssm-ec2-role 이라고 짓고 역할 생성하면 끝! 🔚

 

 

4. EC2 Role 바인딩

  • EC2 에 3번에서 만든 Role을 연결해주자

 

 

 

5. DNS host names 활성화

  • SSM을 위한 Endpoint가 생성되기 위해서는 먼저 Private DNS Name에 대한 활성화

 

 

 

 

6. SSM을 위한 EndPoint 생성

Private Subnet 의 EC2에 SSM을 통해 접속하기 위해서 VPC에 대한 SSM Endpoint가 필요하다!
  • VPC → 엔드포인트 생성으로 들어가기
  • Name tag에 minho-ssm-enpoint-ssm이라고 입력합니다. 
    (이후 minho-ssm-enpoint-ssmmessages, minho-ssm-enpoint-ec2messages를 하나씩 더 만들어야 합니다. 총 3개)
  • 서비스 범주 → AWS 서비스 ✅
  • Services 란에 ssm을 입력
    • Service Name에 com.amazonaws.{선택한 리전: e.g. ap-northeast-2}.ssm 이란 이름을 찾아 선택
    • (두번째 endpoint를 생성할때는 ssmmessages, 세번째는 ec2messages로 검색

  • VPC 및 서브넷 설정 + 보안그룹 (위에서 만든)  설정해주자
  • 그리고 정책 → 전체 액새스 → 생성

 

  • 이런식으로 총 3개를 만들어야 합니다.
    • minho-ssm-enpoint-ssm ✅ 
    • minho-ssm-enpoint-ssmmessages ✅ 
    • minho-ssm-enpoint-ec2messages ✅

7. 세션타임 늘리기

  • Session Manager 검색 후 → 기본 설정 → 시간 늘려주기

 

8. PC에서 접속해보기

  • 먼저 PC의 consol에서 aws configure 명령어를 통해 Access Key ID와 Secret Access Key 
    그리고 Default Region을 설정한 후 다음의 명령어를 통해 원격에서 접속 할 수 있습니다.
Access Key IdSecret Access Key는 AWS Console -> IAM → [사용자] -> Security Credential 에서 확인 가능

 

9. 접속 방법

  • 로컬 cmd 에서 진행
# aws configure 를 통해 aws 접속 정보 입력
aws configure

aws ssm start-session --target [인스턴스id]