1. AWS Session Manager 소개

AWS Systems Manager 서비스 카테고리 중 하나인 Session Manager는 (온프레미스 인스턴스를 포함한) EC2 인스턴스에 액세스할 수 있는 기능을 제공한다.

EC2에 Session Manager 관련 role이 부여되어 있고, 사용자 또한 해당 policy를 보유하고 있다면 즉시 콘솔 또는 CLI를 통해 EC2에 대한 직접적인 접속이 가능하다.

단, Session Manager를 사용하기 위해 ssm agent가 사전에 설치되어 있어야 한다. (Amazon Linux 및 일부 Ubuntu/Windows AMI에는 기본적으로 설치되어 있다.)

※ 추가로, 인스턴스가 running인 상태에서 role을 부여했다면 인스턴스를 재기동하거나 ssm agent를 재시작해야 Session Manager가 제대로 표시되는 현상이 있다.


2. 사전 설정

Session Manager를 위한 IAM Role을 생성해야 한다.

최소 권한 정책으로서 AWS에서 권장하는 기본 정책인 AmazonSSMManagedInstanceCore를 사용하도록 한다.

(기존에 사용되던 AmazonEC2RoleforSSM는 Deprecated로 전환되었다.)

만약 다른 사용자의 활동 기록 및 추적을 남기고자 한다면 해당 정책은 권한이 충분하지 않으므로 별도의 정책 추가가 필요하다.


3. 특징

bastion 서버를 두는 대신 Session Manager를 통해 private subnet에 존재하는 ec2에 대한 직접적인 접속(ssh)이 가능하다.

별도의 Security Group을 통한 inbound 개방 및 ssh-key를 필요로 하지 않으므로, Session Manager만을 사용한 접속을 강제할 수 있다.

이에 따라 CloudTrail, S3, CloudWatch Logs, CloudWatch Event 등을 통해 로그를 남겨 EC2에 대한 활동 기록을 추적할 수 있다. 


4. 문제해결

Windows OS의 경우, Session Manager를 통한 접속을 위한 사용자 계정인 ssm-user이 패스워드 없이 생성되므로 만약 사용자 생성 시 패스워드 설정이 강제되어 있으면 Session Manager를 통한 접속이 불가능한 현상이 발생한다. 위와 같은 현상이 나타날 경우에는 직접 ssm-user 계정을 임의의 패스워드로 생성하는 과정을 거쳐야 한다.