AWS Session Manager를 통한 RDP 연결
Windows Server도 AWS Session Manager를 통해 연결 가능함.
기본적인 내용은 아래 글 참고
AWS Session Manager를 통한 SSH 연결
사전 구성
Windows Server 2012 ~ Windows Server 2019 (Session Manager는 2012 ~ 2019 버전만 지원함)
SSM Agent 설치
아래 세 엔드포인트에 대한 443 아웃바운드 트래픽 허용
ec2messages.
region
.amazonaws.comssm.
region
.amazonaws.comssmmessages.
region
.amazonaws.com
AWS CLI 1.16.12 버전 이상 설치
먼저 Windows Server 2019 Instance를 생성한다. 그 다음 클라이언트 프로그램으로 접속해 아래 절차를 진행한다. Windows Server 2022가 있긴 하지만 아직 Session Manager를 지원하지 않는다.
SSM Agent 설치
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-install-ssm-proxy.html
Session Manager를 사용하려면 SSM Agent가 설치되어 있어야 함.
참고로 아래 버전에는 SSM Agent가 사전 설치되어 있음.
2016년 11월 이후에 게시된 Windows Server 2008-2012 R2 AMI
Windows 서버 2016, 2019 및 2022
[설치 확인]
& "C:\Program Files\Amazon\SSM\amazon-ssm-agent.exe" -version
만약 설치되어 있지 않다면 아래 절차로 설치(Power Shell)
Invoke-WebRequest `
https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/windows_amd64/AmazonSSMAgentSetup.exe `
-OutFile $env:USERPROFILE\Desktop\SSMAgent_latest.exe
Start-Process `
-FilePath $env:USERPROFILE\Desktop\SSMAgent_latest.exe `
-ArgumentList "/S"
[SSM Agent 재시작]
IAM 설정
EC2에 인스턴스 프로파일을 적용해야 함. 인스턴스 프로파일은 EC2내에서 어플리케이션이 사용할 AWS IAM이다.
AWS 관리형 정책인 AmazonSSMManagedInstanceCore을 지정해주면 되지만 최소 권한 원칙을 준수하고 싶다면 아래 문서들을 참고하면 된다.
모든 사용자가 모든 인스턴스에 Session 액세스를 하지 못하도록 제어를 할 필요가 있다.
Session 액세스 시 필요한 권한 설정은 크게 3가지로 나눌 수 있다.
Session 문서에 대한 접근 권한 (ssm:StartSession)
Instance에 대한 접근 권한(ssm:StartSession)
Session Manager를 구성하면 세션에 대한 기본 설정 (로깅, 암호화 등)이 포함되어 있는 Session 문서가 생성된다. 사용자가 Session Manager를 사용해서 접속하려면 이 Session 문서에 대한 접근 권한이 필요하다.
위 권한은 ssm:StartSession를 수행 할 수 있는 Instance와 session-document를 지정해준 것이다. 위 처럼 리소스를 하나씩 지정해줘도 되고 태그 같은 것으로 범위 지정을 해줘도 된다.
session-document-name은 위 에서 말한 Session 문서 이름을 말한다. 이 문서는 기본적으로 SSM-SessionManagerRunShell
라는 이름으로 생성되며 다른 이름을 지정해 줄 수도 있다. 참고로 이 문서는 start-session(session으로 인스턴스 접속)시 --document-name으로 지정해야 하며 지정하지 않을 경우 SSM-SessionManagerRunShell
에 접근한다.
마지막으로 Condition을 보면 ssm:SessionDocumentAccessCheck
로 true를 지정해 주었는데 true는 start-session 시 Session 문서에 대한 접근 권한을 체크 하겠다는 뜻이다. false로 지정하면 위에서 지정한 것과 같은 문서의 접근 권한을 무시한다(모든 문서에 접근 가능).
[전체 IAM 권한]
aws ssm start-session \
--target i-0aa42b75691133380
위에서 Instance-id 만 변경해서 적용하면 된다.
테스트
아래 과정을 전부 진행했는지 확인한다.
AmazonSSMManagedInstanceCore 정책이 포함되어 있는 역할을 EC2 IAM에 지정
Instance에 SSM Agent 설치 및 실행 확인
접속할 사용자에게 해당 인스턴스에 대한 start-session 권한 부여
[접속]