AWS | SSM agent 활성화 하여 session manager 로 EC2 접속하기

1. Accessing EC2

AWS 에서 EC2 console / terminal 접속시에는 key pair 를 이용해서 접근하거나, proxy 와 같은 Bastion Host 를 통해서 접근하게끔 하는 방법이 있습니다.

다만, 기본적으로 key pair 를 통해, 접근이 이루어 지므로 보안 관점에서는 노출될 수 있는 경로가 생기는 것과 같습니다. 추가하여, Bastion Host 를 가져가는 것 자체가 EC2 instance 를 하나 더 사용하게 되는 것이라 관리 포인트가 더 느는 결과가 됩니다.

이런 key pair / Bastion Host 없이도 AWS console 에서 직접 접근할 수 있는 방법이 있습니다.
AWS Console 창에서 "Connect to instance" 를 통해, web browser 에서 바로 접근이 가능합니다.



2. Role - Session Manager

Web Access 를 할 수 있게 하려면, Session Manager 역할을 사용하여 접근할 수 있습니다.

다만, 단순히 EC2 > Instances > Instance ID > Connect to instance 할 경우, Session Manager 선택을 해도, 오른쪽 밑에 있는 Connect 버튼이 활성화 되지 않습니다. 이는 아직 Session Manager 를 통해 접속할 환경이 되어 있지 않다는 것을 알 수 있습니다.


이를 위해서는 "AmazonEC2RoleforSSM" 이, 해당 EC2 instance 의 IAM Role 에 지정이 되어 있어야 합니다.




3. AmazonEC2RoleforSSM

처음에는 AmazonEC2RoleforSSM 이 정의되어 있지 않으므로, 이참에 만들어 놓습니다. Modify IAM role 을 선택 이후, Create new IAM role 을 선택합니다.

EC2 > Instances > 해당 instance > Modify IAM role > Create new IAM role


아예 Role 하나를 만들기 시작 합니다.

IAM > Roles > Create role


Select trusted entity 에서, 이미 AWS 에서 만들어져 있는 role 을 선택하도록 AWS service 를 선택합니다.

IAM > Roles > Create role > Select trusted entity > AWS service


Service or use case 에서는 EC2 를 선택해 줍니다.


Add permissions 에서, ssm 으로 검색되는 "AmazonEC2RoleforSSM" 을 선택합니다.


새로 정의한 이번 Role 에 대해 이름을 정해서 넣어 줍니다. 저의 경우는 "Access_Role_without_Credentials" 로 했습니다.


EC2 Console 접근용 Role 을 하나 만들었습니다.




4. Assign a New Role

이제 EC2 Instance 에서 Modify IAM role 하면, 새롭게 생성한 Role 이 보입니다. 선택해 줍니다.


이제, 해당 EC2 Instance 에 SSM Role 이 붙게 되었습니다.


다만, 이렇게 한다고 해서 바로 적용되는 것이 아닙니다. 아무리 해도 접근이 안됩니다.


그 이유는 제대로 활성화가 안되기 때문입니다.


이를 위해서는, 아쉽지만 Reboot instance 를 해줘야 합니다. 리부팅 과정이 싫다면, 애초에 EC2 생성시에 IAM Role 을 추가해 줘야 합니다. 그렇기 위해서는 미리 위에서 설명한 Role 생성이 되어 있어야 하며, 해당 Role 을 EC2 Instance 생성시에 추가해 줘야 합니다.


리부팅 이후에는 정상적으로 Session Manager 가 활성화 되고, Web Browser 인 AWS Console 상에서 접근이 가능하게 됩니다.




5. After SSM login

처음에는 Session Manager 역할로 로그인 한 것이므로, 작업을 위해 일반 유저로 전환이 필요합니다.
아래에서는 root user 로 전환한 뒤, EC2 의 기본 유저인 ec2-user 로 전환하는 과정을 표시 했습니다.

sudo su -
sudo su ec2-user


systmectl 로 확인해 보면, 에러 없이 정상적으로 ssm-agent 서비스가 올라와 있는 것을 알 수 있습니다.


이로써, key pair 없이, 또한 Bastion Host 없이, AWS Console 에서 Web Browser 를 이용하여 EC2 instance 에 terminal 접속이 가능해 졌습니다. 보안 관점으로도, 그리고 추가 관리 (key pair 및 Bastion Host) 가 필요 없는 좋은 방법이니, 많은 사람들이 이 방법을 이용했으면 좋겠습니다.


FIN

댓글