이번에는 Session Manager 에서 제공하는 부가 기능들을 사용하는 방법에 대해 살펴보려고 합니다.
Session Manager 가 처음 소개된 이후로 현재까지 여러 가지 기능들이 추가되었는데요. 이렇게 추가된 기능들을 요약해보면 다음과 같습니다.
- Session Manager 사용 시 EC2 인스턴스에 생성되는 SSM-USER 가 Administrator 권한을 갖게 되는데 이 권한을 삭제하는 것이 가능합니다. 즉, Linux 의 경우 sudo 권한이 사라지게 되고 read only 권한만 갖도록 하는 것이 가능합니다.
- Session Manager 사용 시 SSM-USER 가 아닌 EC2 인스턴스에서 생성한 Username 을 이용하여 접속하는 것이 가능합니다.
- Session Manager 를 이용하여 접속한 이후에 사용 가능한 명령어를 제한할 수 있습니다.
- Session Manager 를 이용하여 Port Forwarding 을 사용하실 수 있습니다.
- Session Manager 를 이용하여 SSH 연결을 생성하실 수 있습니다.
간단하게 5가지를 말씀드렸는데요.
이 포스팅에서는 1번과 2번에 대한 내용을 다뤄보도록 하겠습니다.
기능 1. SSM-USER 의 Super User 권한 삭제
Session Manager 는 기본값으로 SSM-USER 를 생성하여 사용자가 Session Manager 를 이용하여 EC2 인스턴스에 접속하는 경우 사용자가 사용하도록 하고 있으며 이렇게 자동으로 생성된 SSM-USER 는 Super User 권한을 갖고 있습니다. 만일, 여러분들의 운영 환경에서 SSM-USER 가 Super User 권한을 갖는 것이 허용되지 않는다면 아래와 같은 방법으로 SSM-USER 의 Super User 권한을 제거할 수 있습니다.
SSM-USER 의 Super User 권한 제거 작업은 EC2 인스턴스가 생성된 이후에 진행될 수 있습니다. 따라서, 먼저 EC2 인스턴스를 실행한 후 아래와 같이 진행해주시면 됩니다.
옵션 1. Linux Shell 을 이용하는 경우
EC2 인스턴스가 생성된 이후 SSM-USER 의 권한 제거 작업을 Linux Shell 환경에서 수행하고 싶다면 아래와 같은 절차를 따르면 됩니다.
중요!! SSM-USER 는 EC2 인스턴스가 실행될 때 자동으로 생성되는 것이 아니라 Session Manager 를 이용해서 EC2 에 접속하는 경우에 자동으로 생성됩니다. 따라서, Session Manager 를 사용하지 않은 상태에서 EC2 에 접속하면 SSM-USER 는 생성되어 있지 않습니다.
절차 1. EC2 인스턴스에 로그인 합니다.
절차 2. sudo 를 이용하여 관리자 권한으로 전환한 후 “cd /etc/sudoers.d” 로 경로를 이동합니다.
절차 3. 아래의 명령을 입력하여 “ssm-agent-users” 의 설정을 업데이트 합니다.
echo "#User rules for ssm-user" > ssm-agent-users
설정 변경 확인
설정 변경 후 sudo 권한 확인
Super User 권한 제거 후 sudo 를 실행하면 아래와 같이 Password 입력창이 나타나게 되고 sudo 전환이 이뤄지지 않습니다.
옵션 2. Systems Manager 의 Run Command 를 이용하는 경우
Systems Manager 에서 제공하는 Run Command 기능을 사용하여 EC2 인스턴스에 접속하지 않은 상태에서도 SSM-USER 의 권한 제거가 가능합니다. SSM-USER 의 권한제거를 위해서는 아래 그림과 같이 Run Command 에서 “AWS-RunShellScript” 를 선택한 후 “Command Parameters” 의 내용에 다음의 명령을 입력하고 대상 EC2 인스턴스를 지정한 후 실행하면 Linux Shell 에서 직접 입력한 것과 동일한 결과를 얻으실 수 있습니다.
cd /etc/sudoers.d
echo "#User rules for ssm-user" > ssm-agent-users
기능 2. SSM-USER 이외의 Username 사용하기
SSU-USER 이외에 Username 을 이용하여 Session Manager 를 이용하기 위해서는 먼저 EC2 인스턴스에서 사용하고자하는 User 를 생성하여야 합니다. 저는 아래의 명령어를 이용해 “admin” 과 “user” 라는 User 를 생성하였습니다.
sudo useradd admin
sudo useradd user
그리고 admin 유저에게만 Super User 권한을 할당하기 위해 아래와 같은 작업을 진행하였습니다.
SSM-USER 이외의 Username 을 이용하여 Session Manager 를 사용하는 방법은 크게 2가지 방법이 있는데요.
옵션 1. 첫번째 방법은 Session Manager 의 Preference 옵션 중에 “Run As support enabled” 옵션을 사용하는 것입니다. 아래처럼 해당 기능을 활성화하고 사용하려는 Username 을 지정하면 지정된 Username 을 통해 Session Manager 의 Session 이 시작되게 됩니다.
결과 확인
Session Manager 를 이용한 접속후에 Username 을 확인하고 sudo 권한을 확인해보았습니다. 정상적으로 “admin” Username 을 사용하였고 Super User 권한이 있는 것을 확인하였습니다.
옵션 2. 두번째 방법은 IAM 사용자나 역할에 Tag 를 할당하여 Tag 값에 설정된 Username 을 사용하는 방법입니다.
다른 설정은 모두 그대로 두고 Session Manager 를 사용하고자 하는 IAM 사용자나 역할에 아래와 같이 Tag Name / Tag Value 를 입력합니다.
Tag Name 은 반드시 “SSMSesssoinRunAs” 이어야 하며 Tag Value 는 EC2 인스턴스에 생성하 Username 을 입력하도록 합니다.
결과 확인
아래와 같이 Tag 값이 user 인 IAM 사용자/역할로 Session Manager 를 이용한 경우 Tag 값에 설정된 Username 을 통해 EC2 인스턴스에 접속한 것을 확인하였습니다.
소개드린 Session Manager 의 5가지 기능 중에 2가지를 살펴보았는데요. 나머지 3가지 기능은 다음에 포스팅하도록 하겠습니다.
감사합니다.