일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 설정
- ssh
- sample
- Linux
- build
- Kibana
- elasticsearch
- AWS
- JS
- Windows
- mariadb
- Python
- Ai
- API
- ChatGPT
- unity
- 구글
- MySQL
- Git
- JavaScript
- s3
- 유니티
- 영어
- logstash
- nodejs
- 엘라스틱서치
- MSSQL
- docker
- error
- Today
- Total
가끔 보자, 하늘.
SSM 으로 Private subnet의 EC2 연결하기 본문
- SSM 사용자 권한 생성
- EC2 IAM Role에 사용할 Role 생성 및 방화벽 설정
- SSM Agent 설치
- VPC EndPoint 설정
- GOSSM으로 연결하기
[ SSM 사용자 권한 생성 ]
aws ssm 명령 대신 gossm을 사용합니다. gossm은 ssm으로 접속 가능한 ec2 instances를 콘솔창에 출력/선택해서 사용해 줄 수 있는 오픈소스 툴입니다. 이를 위해 ssm을 사용할 계정에 아래와 같이 인라인 정책을 추가하여 사용하게 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DescribeRegions",
"ec2:DescribeInstances",
"ssm:TerminateSession",
"ssm:StartSession",
"ssm:DescribeSessions",
"ssm:DescribeInstanceInformation",
"ssm:DescribeInstanceProperties",
"ssm:GetConnectionStatus"
],
"Resource": "*"
}
]
}
ssm 사용을 위한 최소한의 권한만 추가했습니다. 이 글에서는 위 정책을 "ssm_user"라는 계정에 삽입했다고 가정하겠습니다. aws configure에 ssm을 위한 계정의 access_key_id와 secret_access_key를 등록합니다. 윈도우에서는 c:\Users\[your_account_name]\.aws 폴더에 credentials 파일이 위치해 있습니다.
credentials 파일을 열어 계정 정보를 추가해도 되고 aws configure set로 profile을 등록해도 됩니다. 여기서는 ssm이라는 이름으로 추가 프로파일을 등록했다고 가정하겠습니다.
[ EC2 IAM Role에 사용할 Role 생성 및 방화벽 설정 ]
IAM의 역할로 가서 "역할 만들기"를 눌러 사용할 역할을 설정합니다. 역할의 이름은 "ssmRole4EC2"로 명명하고 "AmazonEC2RoleForSSM" 권한을 추가합니다.
이미 실행중인 EC2에서는 "EC2 Instance 선택-> 보안 -> IAM 역할 수정"을 통해 추가 혹은 변경할 수 있습니다. 단, 설정 후 인스턴스를 재부팅해야만 ssm으로 접속할 수 있습니다.
인스턴스를 새롭게 생성할 경우 "인스턴스 세부 정보 구성"에서 설정하면 됩니다.
ssm 사용을 위해서는 방화벽에 https(443) port가 오픈되어 있어야 하며, source에는 해당 VPC의 CIRD를 선택합니다.
[ SSM Agent 설치 ]
최신 AMI로 인스턴스를 생성했다면 대부분 이미 설치되어 있습니다. 별도 OS를 설치한 경우 Linux 계열, Windows 계열 수동 설치 메뉴얼을 참고하세요.
[ VPC Endpoint 생성 ]
만약 접속하고자 하는 EC2 Instance가 public subnet에 위치해 있다면 이 과정을 건너띄면 됩니다.
private subnet의 인스턴스들에 ssm으로 접속하려면 "VPC 엔드포인트 -> 엔드포인트 생성"으로 세 가지 서비스에 대한 endpoint를 추가해야 합니다.
- com.amazoneaws.[지역].ssm
- com.amazoneaws.[지역].ssmmessages
- com.amazoneaws.[지역].ec2messages
서비스를 선택 후 ssm으로 접근할 VPC와 private subnet을 선택, 보안 그룹 선택 시 443 포트 설정이 되어있는 방화벽을 선택,생성하면 됩니다.
[ GOSSM으로 연결하기 ]
이제 모든 설정이 완료되었습니다. gossm을 다운받아 aws profile 중 ssm으로 명명했던 profile로 접속해서 테스트하면 됩니다.
> gossm -p ssm start
이제 불필요한 bastion 호스트를 둘 필요가 없어졌네요. 문제없이 잘 접속되셨기를 ... :)
'개발 이야기 > 인프라 구축 및 운영' 카테고리의 다른 글
CDK로 AWS 인프라 구축하기 - #1 CDK 둘러보기 (0) | 2022.06.07 |
---|---|
AWS로 서비스 구축하기 #02 - Fargate task를 Private subnet 으로 전환하기 (0) | 2022.04.07 |
systemd 에 서비스 등록 Tip (0) | 2022.03.25 |
AWS로 서비스 구축하기 #01 - Jenkins + AWS ECS 로 CD 구축하기 (0) | 2022.03.24 |
AWS AssumeRole 설정 안될 때.. (0) | 2022.03.17 |