최소 권한으로 EC2 Session Manager 역할 자동 생성하기
AWS에서 EC2 인스턴스를 운영하다 보면 SSH 키페어 없이 Session Manager로 접속하는 경우가 많습니다.
인스턴스에 IAM Role을 제대로 붙이지 않으면 SSM 접속 자체가 불가능합니다.
이럴 때 Role과 Instance Profile을 최소 권한으로 한 번에 만드는 자동화 스크립트가 편리합니다.
이번 글에서는 해당 스크립트를 활용해 전체 과정을 직접 만들어봅니다.
EC2 인스턴스는 IAM 정책을 직접 연결할 수 없습니다.
Instance Profile을 통해 Role을 붙여야만 권한이 적용됩니다.
SSM Session Manager 접속에는 AWS 관리형 정책 AmazonSSMManagedInstanceCore 하나면 충분합니다.
실습이나 대회 환경에서는 매번 콘솔에서 클릭하는 대신 스크립트로 빠르게 재현하는 것이 핵심입니다.
스크립트는 다음 작업을 한 번에 수행합니다.
Role 이름은 AWSEC2SessionManagerRole로 고정합니다.
아래 명령어를 순서대로 실행합니다.
curl -fsSL "https://gist.githubusercontent.com/h053698/cd14aedb7dac3a5ff70090e37fe347bd/raw/create-ec2-ssm-role.sh" -o create-ec2-ssm-role.sh
chmod +x create-ec2-ssm-role.sh
./create-ec2-ssm-role.sh
실행 시간
보통 10초 이내에 완료됩니다.
이미 동일 이름의 Role이 존재하면 스크립트가 오류를 출력하므로 미리 확인합니다.
Role 생성이 끝나면 인스턴스에 Instance Profile을 연결합니다.
aws ec2 associate-iam-instance-profile \
--instance-id <EC2_INSTANCE_ID> \
--iam-instance-profile Name=AWSEC2SessionManagerRole
생성 후 아래 항목을 순서대로 확인합니다.
| 순번 | 확인 항목 | 방법 |
|---|---|---|
| 1 | IAM Role 존재 여부 | IAM 콘솔 → Roles → AWSEC2SessionManagerRole 검색 |
| 2 | Instance Profile 연결 | IAM 콘솔 → Instance profiles → AWSEC2SessionManagerRole 확인 |
| 3 | SSM 접속 가능 여부 | EC2 콘솔 → 인스턴스 선택 → Actions → Connect → Session Manager |
| 실수 | 증상 | 해결 방법 |
|---|---|---|
| 정책만 만들고 Role 연결 생략 | SSM 접속 시 권한 오류 | Instance Profile에 Role 연결 |
| EC2에 키페어만 설정 | Session Manager 탭이 비활성화 | Instance Profile 연결 후 재시작 |
| 리전/계정 혼동 | 다른 계정의 Role이 연결됨 | 현재 리전과 계정으로 다시 실행 |