EC2 인스턴스에서 ssm-user 를 보고 운영체제의 기본 계정으로 오해하는 경우가 있다. 이 계정은 SSM Agent 가 Session Manager 세션을 처리하려고 만드는 계정이다. 에이전트가 설치돼 있고 세션이 처음 열릴 때 생성된다.
기본 계정은 AMI 마다 다르다.
| AMI | 기본 계정 |
|---|---|
| Amazon Linux 2 · 2023 | ec2-user |
| RHEL · CentOS · Rocky | ec2-user(RHEL 계열 일부는 cloud-user) |
| Ubuntu | ubuntu |
| Debian | admin |
| SUSE | ec2-user |
| Windows | Administrator |
리눅스에서 ssm-user 는 sudoers.d 에 항목이 추가되어 비밀번호 없이 sudo 를 쓴다. 즉 세션 매니저로 접속할 수 있는 IAM 주체는 사실상 루트 권한을 갖는다. 접근 통제는 OS 계정이 아니라 IAM 정책과 세션 설정으로 해야 한다.
cat /etc/sudoers.d/ssm-agent-users
id ssm-user
세션 매니저로 붙으려면 세 가지가 필요하다.
인스턴스에 SSM Agent 가 설치돼 동작해야 한다.
systemctl status amazon-ssm-agent
인스턴스 프로파일에 AmazonSSMManagedInstanceCore 권한이 있어야 한다.
인스턴스가 SSM 엔드포인트에 닿아야 한다. 인터넷 게이트웨이나 NAT 가 없다면 ssm · ssmmessages · ec2messages 용 VPC 엔드포인트를 만든다.
관리 대상으로 잡혔는지 확인한다.
aws ssm describe-instance-information --query "InstanceInformationList[].{Id:InstanceId,Ping:PingStatus,Agent:AgentVersion}" --output table
aws ssm start-session --target i-0123456789abcdef0
sudo 권한을 주고 싶지 않다면 /etc/sudoers.d/ssm-agent-users 를 수정한다. 다만 에이전트 업데이트 시 되돌아갈 수 있으므로 Session Manager 기본 설정(Session Preferences)에서 실행 계정을 지정하는 방식을 함께 쓴다.
세션 기록이 필요하면 Session Preferences 에서 S3 또는 CloudWatch Logs 로 로그를 남기도록 켠다. 감사 목적이라면 KMS 암호화도 함께 설정한다.
기존 사용자 계정으로 붙이고 싶다면 run as 설정에 계정 이름을 지정한다. 지정한 계정이 없으면 세션이 열리지 않는다.