AWS Session Manager를 통한 SSH 연결
요약
SSM 서비스에 대한 권한을 가진 IAM role 을 만들고 ec2에 instance profile로 연결을 함
session-manager에 대한 설정을 함. AWS System Manager - 문서 - SSM-SessionManagerRunShell
인바운드 포트를 열고, 배스천 호스트를 유지하고, SSH 키를 관리할 필요 없이 AWS CLI 를 통해서 ec2 instance 접속 가능함.
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager.html
https://aws.amazon.com/ko/blogs/infrastructure-and-automation/toward-a-bastion-less-world/
사전 요구사항
Session Manager를 사용하여 연결을 활성화하려면 Amazon EC2 인스턴스에 SSM Agent 가 설치되어 있어야 함. (Amazon Linux, Ubuntu 의 경우는 사전 설치가 되어 있음)
시스템에 대한 액세스 권한을 부여하는 인스턴스에 AWS Identity and Access Management(IAM) 역할을 추가해야 함. AWS 관리형 정책 AmazonSSMManagedInstanceCore를 포함한 인스턴스 프로파일을 만들어서 ec2에 할당함. ssession manager만을 위해서 최소한의 권한만 설정을 하는 것은 https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/getting-started-create-iam-instance-profile.html 참고.
EC2에 AWS CLI 사전에 설치
AWS CLI를 이용하여 ec2에 로그인하려고 하는 경우 AWS CLI용 Session Manager 플러그인을 설치해야 함. https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
세션 시작하기
aws ssm start-session --target instance-id
Session manager 를 활성화하는 방법은 문서만으로 보았을 때 명확하지 않음. 웹콘손에서 빠른 설정 - Quick setup 을 통해서 설정을 하면 CloudFormation을 이용하여 SSM을 위한 IAM role, SSM-SessionManagerRunShell
세션 유형 문서 (https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/getting-started-sessiondocumentaccesscheck.html ) 등을 자동으로 생성하는 것으로 보임. Quick setup 을 통해서 SSM-SessionManagerRunShell
이 만들어지지만 terraform에서 세부적인 설정을 관리하려면 terraform에서 리소스를 관리하면 됨.
웹콘솔에서 session manager 기본 설정을 편집하면 AWS System Manager - 문서 - SSM-SessionManagerRunShell
가 업데이트 된다. session manager 의 속성을 편집하려면 SSM-SessionManagerRunShell
를 편집하면 된다. session manager 의 로그를 S3, Amazon CloudWatch Logs 로그 그룹 으로 보내기, kms 를 이용한 암호화 등의 설정을 할 수 있다.
특정 노드로만 접근을 제어하거나 태그을 이용한 접근제어 등은 다음 내용 참고