[AWS] Systems Manager의 세션 관리자로 분실한 EC2 키페어 간편 복구하기

안녕하세요, 누리클라우드입니다. Windows 및 Linux 인스턴스에 쉘 접근을 제공하는 AWS Systems Manager 세션 관리자가 2018/9/11일 출시되었습니다. 세션 관리자를 사용하면 키페어가 없어도, 인바운드 포트나 아이피가 열려 있지 않아도 인스턴스에 쉘 접근할 수 있습니다. 그리고, 공인아이피가 할당되어 있지 않아 베스천 호스트를 경유하여 접근해야 했던 인스턴스도 경유서버 없이 쉘 접근이 가능합니다. 인스턴스에 대해 외부에서의 관리적 접근을 허용하지 않고 오직 IAM 정책만으로 접근제어를 할 수 있고 Cloud Trail로 모든 엑세스에 대한 감사를 할 수 있습니다.

여기서는 세션 관리자의 기본사용법을 알아보고, 기존 인스턴스에 세션 관리자를 활성화하는 방법과 세션관리자가 활성화된 인스턴스에서 키페어를 분실했을 때 복구하는 더욱 간편한 방법을 알아보겠습니다.

세션 관리자 설정

1) SSM 에이전트

AWS Systems Manager 세션 관리자를 사용하기 위해서는 먼저 SSM에이전트가 인스턴스에 설치되어 있어야 합니다. SSM 에이전트는 2017/9월 이후 발표된 Amazon Linux AMI에는 기본적으로 설치되어 있습니다. 다른 AMI에는아래 방법으로 SSM 에이전트를 수동으로 설치해야 합니다.

현재 인스턴스에 에이전트가 설치되어 있는지 확인합니다.

Amazon Linux
sudo status amazon-ssm-agent

Amazon Linux 2
sudo systemctl status amazon-ssm-agent

Ubuntu
sudo snap list amazon-ssm-agent

에이전트가 설치되어 있지 않으면 다음 명령으로 설치합니다.

Linux
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

Ubuntu
sudo snap install amazon-ssm-agent –classic

기타 버전의 에이전트 수동 설치: https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-manual-agent-install.html#agent-install-al

2) IAM 역할 생성 및 적용

관리할 인스턴스의 SSM 에이전트가 AWS서비스에 접근할 수 있도록 적절한 IAM 역할을 생성하여 EC2에 부여해 주어야 합니다.
AWS 콘솔에서 IAM>역할생성에서 유형의 개체를 "AWS 서비스"로 선택하고, 이 역할을 사용할 서비스로 두번째 "EC2"를 선택하면 사용 사례 선택을 할 수 있고, 여기서 "EC2 Role for Simple Systems Manager"를 선택합니다.
결국, 위 설명은 "AmazonEC2RoleforSSM" 정책을 생성하려는 Role에 부여하는 과정입니다. 마지막으로 역할이름은 AmazonEC2RoleforSSM-role 정도로 붙여줍니다. 역할설명은 "Allows EC2 instances to call AWS services like CloudWatch and SSM on your behalf." 정도로 기입합니다.

AWS 콘솔에서 이제 관리할 EC2를 선택 후 작업>인스턴스설정>IAM 역할 연결/바꾸기를 선택하여 앞에서 만든 Role을 적용해줍니다.

이제 Systems Manager>세션 관리자에서 세션시작을 클릭하면 관리 대상 EC2가 세션내역 목록에 보일 것입니다. 아직 보이지 않는다면 EC2에 SSH 로그인 후 SSM 에이전트를 재시작해 줍니다.

Linux
sudo restart amazon-ssm-agent

Ubuntu
sudo systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent.service

3) 세션관리자 시작


SSM 에이전트 버전이 2.3.68 이하인 경우 세션 관리자를 아직 지원하지 않으므로 위와 같이 업데이트가 필요합니다.


인스턴스 선택 후 세션시작을 누르면 웹브라우저에서 root 권한이 있는 ssm-user로 쉘 접속이 되는 것을 확인할 수 있습니다.

키페어 간편 복구

EC2인스턴스에 SSH접속을 할 때 프라이빗키가 있어야 합니다. 간혹 관리 실수로 프라이빗 키를 분실한 경우 임시 EC2에 분실한 EC2의 EBS Root 볼륨을 마운트하여 authorized_keys파일에서, 분실한 프라이빗키의 퍼블릭키를 새로운 키로 교체해 주어야 하는 번거로운 작업을 필요로 합니다. 그런데 Amazon Systems Manager의 세션관리자가 미리 구성되어 있다면 키를 복구하는 것은 매우 쉬운 일입니다. (사실, 세션 관리자로 인해 쉘 접속을 위해 더 이상 프라이빗 키가 필요하지 않습니다!)

복구 방법은, 새로운 키페어를 준비한 뒤 세션 관리자로 쉘 접속하여 아래와 같이 키파일을 열어 새로 준비한 키페어의 공개키로 교체해줍니다.

sudo vi ~ec2-user/.ssh/authorized_keys

맺음말

지금까지 Amazon Systems Manager의 기능 중 최근에 발표한 세션 관리자의 기본 구성과 활용에 대해서 알아보았습니다. Amazon Systems Manager는 이 외에도 여러 기능들을 갖추고 있으니 인스턴스 관리 자동화에 관심 있는 분들은 활용해 보시면 많은 도움이 될 것 같습니다.