새소식

AWS/Network

[AWS] Session Manager Endpoint 생성하기 (feat. System Manager)

AWS Endpoint 시리즈 1탄.
Session Manager Endpoint 생성하기

 

 

Session Manager 엔드포인트 필요 조건

결론적으로 Session Manager 엔드포인트를 사용하기 위한 조건은 아래 3가지다.

  1. ssm, ssmmessages 엔드포인트 2개 ( Option 1개 | ec2messages -> System Manager 서비스 사용 시 )
  2. EC2 에 SSM 권한이 부여된 IAM Role 부여
  3. EC2 와 엔드포인트 보안그룹 간 443(https) 통신 허용

 

 

1. VPC > 엔드포인트(Endpoint) 생성

 

서비스에서 ssm, ssmmessages, ec2messages 3개를 '각각' 생성

 

2. 엔드포인트를 생성할 VPC, 서브넷, 보안그룹 지정
  • 여기서 선택하는 서브넷은 인터페이스 엔드포인트의 ENI 가 생성되는 서브넷
  • 즉, 엔드포인트마다 서브넷 Private IP 1개 씩 필요

 

 

엔드포인트 별 최소 필요 포트
  • 모두 443 통신 필요
  • 3개의 엔드포인트 보안그룹을 따로 생성할 필요는 없으니, 같이 묶어 사용하자!

 

 

이후 글 내용은 모두 엔드포인트에 대한 설명이다.



1. Session Manager


Session ManagerAWS System Manager 서비스의 한 부분으로,

AWS Managed Console 에서 EC2 서버로 직접 접속할 수 있게 해주는 서비스다.

 

해당 서비스에 대한 자세한 설명은 이번 포스팅에서는 다루지 않으려고 한다.

 

세션매니저는 Bastion Host 가 없는 경우나, 테스트 환경, 터널링 할 수 없는 특수한 상황에 주로 사용하고 있다.

 

 

1.1. SSM Agent(생략 가능)

AWS System ManagerSession Manager 외에도 AWS 서버 운영을 위한 다양한 기능을 보유하고 있다.
이러한 기능을 위해 AWS 는 SSM Agent 가 설치된 EC2 서버 AMI 를 제공하고 있으며,
서버가 실행될 때 에이전트도 같이 동작하게 된다.

 

SSM Agent 는 System Manager 에 5분마다 https 트래픽을 전송하여 해당 서버가 SSM 에서 사용될 수 있음을 알린다.
최초 전송 성공 후 SSM 에서는 해당 인스턴스가 등록되어 SSM 서비스에 사용될 수 있다.

 

 

AWS SSM 에서는 Agent 로부터 마지막 트래픽 전달 후 15분 (연속 3번) 동안 트래픽이 없을 경우 Connection Lost 로 간주한다.

 

하지만 반드시 헬스체크가 성공해야 SSM 서비스를 적용시킬 수 있는 것은 아니다.


Connection Lost 상태가 되어도 여전히 SSM 서비스를 사용할 수 있긴 하지만,
그렇다고 그냥 놔두진 말고 Connection Lost 상태가 왜 일어났는 지는 확인해보자 !

 

 

  • 서버 내부 에이전트 확인 방법
amazon-ssm-agent -version

sudo systemctl status amazon-ssm-agent

 

하지만 실제로 Session Manager 에서 인스턴스를 실행시키기 위해서는 EC2 에 SSM 과 관련한 IAM Role 을 부여해야 한다.

 

우선 IAM 에서 'AmazonSSMManagedInstanceCore' 에 대한 정책을 찾아 EC2 에 부여하자.

curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/{Role-Name}

 

잘 부여가 되었다면 위 명령어를 입력했을 때 아래와 같이 임시 자격증명 내용이 나온다.
이 부분은 EC2 가 IAM Role 의 권한을 어떻게 가져오는 지에 관한 부분이라 직접 테스트해보지 않아도 된다.

 

간단하게 SSM Agent 에 대해 알아보았다.



2. System Manager 엔드포인트 (feat. Session Manager)


공식문서를 확인해보면 Session Manager 를 사용하기 위해 다음 3가지의 엔드포인트를 생성하라고 나와있다.
  1. com.amazonaws.ap-northeast-2.ssm
  2. com.amazonaws.ap-northeast-2.ssmmessages
  3. com.amazonaws.ap-northeast-2.ec2messages

 

모두 AWS System Manager 와 관련된 엔드포인트이긴 하나, 무슨 기능을 하는 것일까??

 

 

이외에도 ssm-contacts, ssm-incidents 가 있으나,
이들은 System Manager 의 Incident Manager 서비스를 위한 엔드포인트이다.
여기서는 다루지 않겠다.

 

 

2.1. ssm

SSM Agent 의 HealthCheck(TCP 443) 에 사용되는 엔드포인트

 

앞서 SSM Agent5분 주기로 AWS SSM 에 헬스체크 트래픽을 전송한다고 하였다.

이 때, SSM의 Public url을 사용하여 Health Check 하는 것을 Private url 로 사용할 수 있도록 전환시키는 것이 ssm endpoint 다.

 

즉, SSM 'HealthCheck' 만을 위한 엔드포인트다.
  • Https (tcp 443) 통신



2.2. ssmmessages

Session Manager 서비스를 위한 엔드포인트

 

AWS SSM 내에서 Session Manager 는 별도의 엔드포인트를 사용하고 있다.
아무래도 다른 SSM 서비스에 비해 서버 내부로 직접 접속할 수 있는 서비스라서 그런 것 같다.

 

  • Https (tcp 443) 통신



2.3. ec2messages

SSM Agent 출력 API 를 위한 엔드포인트

 

System Manager 는 Agent 기반 서비스다.
내가 System Manager 에서 Document 등을 실행 했을 때, 진행 과정, 결과, 에러 등을 콘솔에서 확인할 수 있다.
이 때 필요한 API 엔드포인트가 ec2messages 엔드포인트다.

 

Session Manager 만 사용한다고 했을 때는 ec2messages 엔드포인트는 생성할 필요가 없다.

 

하지만 System Manager 로 다른 자동화 기능 등을 수행한다고 했을 때는 ec2messages 엔드포인트가 반드시 필하다.

 

 

 

  • Https (tcp 443) 통신

 


이렇게 Session Manager 사용을 위한 엔드포인트를 정리해봤다.
하다보니 System Manager 엔드포인트에 대한 글이 된 것 같다...

 

사실 ssm 을 엔드포인트까지 써가면서 쓸일이 그렇게 많지는 않다.
실무에서는 외부 트래픽이 완전 차단된 환경에 있는 인스턴스에 베스천 접속이 막힌 상황에서 트러블슈팅용으로 한 번 사용했었다.
해당 엔드포인트는 계속 사용 목적이라기보다는 일회성 생성일 경우가 크다고 본다.

 

Contents

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