AWS Systems Manager - Session Manager (W terraform)


흔히 VPC, Subnets 을 설계할 때 Public Subnet 과 Private Subnet 의 형태로 구성이 된다. Public Subnet 의 경우 Load Balancer 혹은 web internet facing 자원들을 배치하게 되고, Private Subnet 의 경우 RDS 나 back-end application 을 배치하게 된다. Private Subnet 의 경우 Public Subnet 과는 다르게 Internet 을 통해서 직접 연결을 할 수 없기 때문에 추가의 작업이 필요하다. 예를 들어, Private Subnet 에 있는 Database 작업을 위해서 접속해야한다.

1. Bastion Host - Public Subnet 에 Bastion Host 를 구성하여 Bastion Host 를 통해서 Private Subnet 의 자원에 접속하고 관리한다. Bastion Host 의 경우 별도로 관리해야할 EC2 혹은 VM 이 증가하게 되는 단점이 있다.

2. VPN - VPN 은 비교적 Bastion Host 나 Security Group 설정에 비해서 비용이 많이 든다.

각각의 장단점이 있기 때문에 상황에 맞게 사용해야 한다.

위의 방법 말고 AWS Session Manager 를 이용할 수 있다.

 AWS Session Manager 는 AWS Systems Manager 라는 서비스의 속한 기능으로 EC2 혹은 온프레미스 환경의 VM 들을 관리할 수 있는 기능이다. 

Session Manager 가 동작하는 원리는 SSM Agent 를 통해서 Session Manager 와 통신한다. 따라서 접속하려는 EC2 혹은 온프레미스 환경의 VM 에 SSM Agent 가 설치되어야 한다. 또한 EC2 에 적절한 instance profile 이 설정 되어 있어야한다. 

- AmazonSSMManagedInstanceCore

- AmazonSSMDirectoryServiceAccess

그리고 EC2 의 user data 를 사용하여 프로비저닝 시 스크립트를 실행하여 SSM Agent 를 설치하고 Agent 가 Session Manager 와 통신할 수 있도록 실행시켜준다.

아래는 terraform 을 통해서 적절한 instance profile 을 만들고 EC2 를 프로비저닝 하는 코드이다.



아래는 user data 에서 아래의 bash 스크립트를 통해서 ssm agenet 를 설치하고 실행시킨다.

적절한 instance profile 을 설정하고 SSM Agent 를 설치하고 실행시켰다면, Console 에 접속하여 System Manager 를 확인한다면 아래와 같이 인스턴스를 확인할 수 있다. 해당 인스턴스를 선택하고 세션시작을 클릭하면, 해당 인스턴스에 접속할 수 있게된다.




또한 아래와 같이 세션 기록을 확인할 수 있다.

추가적으로 KMS, CloudWatch, S3 와 연동하여 관리를 할 수 있다.


참고














댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째