새소식

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

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