서론
기존에는 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 Id와 Secret Access Key는 AWS Console -> IAM → [사용자] -> Security Credential 에서 확인 가능
9. 접속 방법
- 로컬 cmd 에서 진행
# aws configure 를 통해 aws 접속 정보 입력
aws configure
aws ssm start-session --target [인스턴스id]