Amazon Web Services 한국 블로그

AWS Systems Manager Session Manager, EC2 인스턴스 쉘 접근을 위한 신규 기능

지금은 기업 IT 관리자에 매우 흥미로운 시기입니다. 개발자는 코드로서의 인프라를 통해 프로그래밍 가능한 인프라 관리를 제공하고 있습니다. 한편, 레거시 시스템은 여전히 수작업으로 또는 제한적인 자동화 조건에서 설정 및 유지 관리되어야 합니다. AWS 고객 중 상당수는 여전히 수시로 서버에 대한 쉘(Shell) 접근이 필요합니다. 런어웨이 프로세스를 중지하거나, 서버 로그를 검토하거나, 구성을 세부 조정하거나, 임시 패치를 설치해야 할 수도 있으며 이 모든 작업은 강력한 보안 프로필을 유지하면서 수행해야 합니다. 고객은 배스천 호스트의 실행에 수반되는 불편함과 인스턴스의 인바운드 SSH 포트 개방으로 유발되는 위험을 피하고자 합니다.

AWS에서는 이미 AWS Systems Manager Run Command를 통해 셸 수준의 액세스에 대한 필요성을 어느 정도 해결한 바 있습니다. 이 AWS 기능은 관리자에게 EC2 인스턴스에 대한 보안 액세스를 제공합니다. 이 기능을 사용하면 명령 문서를 생성하여 원하는 EC2 인스턴스 세트에 실행할 수 있으며 Linux 및d Microsoft Windows 모두가 지원됩니다. 명령은 비동기적으로 실행되며 출력은 검토를 위해 캡처됩니다.

새로운 Session Manager
이제 셸 수준 액세스에 새로운 옵션이 추가되었습니다. 새로운 Session Manager는 AWS Systems Manager의 기능을 더욱 강화해 줍니다. 고객은 이제 새로운 브라우저 기반의 인터랙티브 셸과 명령줄 인터페이스(CLI)를 사용하여 Windows 및 Linux 인스턴스를 관리할 수 있습니다. 다음과 같은 기능이 제공됩니다.

보안 액세스 – 수동으로 인스턴스에 사용자 계정, 암호 또는 SSH 키를 설정할 필요가 없으며 인바운드 포트를 개방하지 않아도 됩니다. Session Manager는 SSM 에이전트를 사용하여 인스턴스에서 시작한 암호화된 채널을 통해 인스턴스와 통신하며 배스천 호스트가 필요하지 않습니다.

액세스 제어 – IAM 정책과 사용자를 사용하여 인스턴스에 대한 액세스를 제어하며 SSH 키를 배포하지 않아도 됩니다. IAM의 날짜 조건 연산자를 사용하면 원하는 시간/유지 관리 기간으로 액세스를 제한할 수 있습니다.

감사 용이성 – 명령과 응답은 Amazon CloudWatch 및 S3 버킷에 로깅될 수 있습니다. 또한 새 세션이 시작될 때 SNS 알림을 수신할 수 있도록 설정할 수 있습니다.

상호 작용성 – 명령은 완전히 인터랙티브한 bash(Linux) 또는 PowerShell(Windows) 환경에서 동기적으로 실행됩니다.

프로그래밍 및 스크립팅 – 잠시 후 보여드릴 콘솔 액세스 외에도 명령줄(aws ssm ...) 또는 Session Manager API를 통해 세션을 초기화할 수 있습니다.

EC2 인스턴스에서 실행되는 SSM 에이전트는 Session Manager의 퍼블릭 엔드포인트에 연결할 수 있어야 합니다. 프라이빗 VPC에서 실행 중인 인스턴스(인터넷 액세스 또는 퍼블릭 IP 주소가 없음)가 Session Manager에 연결할 수 있도록 PrivateLink 연결을 설정할 수도 있습니다.

Session Manager의 작동 방식
Session Manager를 사용하여 EC2 인스턴스에 액세스하려면 인스턴스에 SSM 에이전트의 최신 버전(2.3.12 이상)이 실행 중이어야 합니다. 해당 인스턴스의 인스턴스 역할은 적절한 서비스에 대한 액세스를 허용하는 정책을 참조해야 하며 고객은 직접 역할을 생성하거나 AmazonEC2RoleForSSM을 사용할 수 있습니다. 다음은 제가 가지고 있는 EC2 인스턴스입니다(sk1sk2는 Amazon Linux를 실행하고 sk3-winsk4-win은 Microsoft Windows를 실행).

처음 명령을 실행하기 전에 AWS Systems Manager를 열고 [Preferences]을 클릭합니다. 명령을 로깅하고자 하므로 S3 버킷과 CloudWatch 로그 그룹의 이름을 입력합니다. 하나 또는 둘 모두의 값을 입력하는 경우 인스턴스 정책이 이에 대한 액세스 권한도 부여해야 합니다.

모든 준비가 끝났습니다! [Sessions]를 클릭하면 활성 세션이 없는 것을 알 수 있습니다. 시작하려면 [Start session]을 클릭합니다.

Linux 인스턴스(sk1)를 선택하고 Start session을 다시 클릭합니다.

즉시 세션이 열립니다.

Windows 인스턴스에도 똑같은 방식으로 작업을 수행할 수 있습니다.

로그 스트림은 CloudWatch에 표시됩니다.

각 스트림은 단일 세션의 콘텐츠를 포함합니다.

준비 중
항상 그래왔듯이 Session Manager에 대한 추가적인 기능 몇 가지가 준비 중입니다. 간략히 소개하자면 다음과 같습니다.

SSH 클라이언트 – 인바운트 포트를 개방하지 않고도 Session Manager 위에서 그대로 SSH 세션을 생성할 수 있게 됩니다.

온프레미스 액세스 – 고객이 Session Manager를 통해 온프레미스 인스턴스(SSM 에이전트 실행 필수)에 액세스할 수 있는 기능을 제공해 드릴 예정입니다.

지금 이용 가능
Session Manager는 별도의 요금 없이 모든 AWS 리전(서울 리전 및 AWS GovCloud 포함)에서 이용할 수 있습니다.

Jeff;