일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- bWAPP M1
- Terraform
- AWS Resolver
- ix is lock
- s3
- bWAPP install
- DXGW
- S3 Interface Endpoint
- x lock s lock
- S3 private통신
- S3 Gateway Endpoint
- 마운트
- 도커
- sessionManager
- Route53 Resolver
- 푸시게이트웨이
- push-gateway
- VGW
- DNS Resolver
- ec2
- bWAPP arm
- 리눅스
- node pod 분리
- BastianHost
- SessionManager 터널링
- Route53 Endpoint
- s3 sync
- 다이렉트 커넥트
- CrossSiteScript
- S3 PrivateLink
- Today
- Total
이것이 점프 투 공작소
Session Manager를 이용해 Private DB 접속하기 본문
일반적으로 DB는 Private Subnet 즉 인터넷 엑세스가 불가능한 서브넷에 생성합니다.
하지만 로컬에서 Private Subnet에 있는 DB에 대한 엑세스가 필요하기에
Session Manager와 Bastian Host 이용하여 DB에 접속하는 방법을 정리하려 합니다.
EC2 Session Manager 연결
1. EC2 UserData에 스크립트 추가
Bastian Host UserData에 Session Manager 설치 스크립트를 추가합니다.
#!/bin/bash
yum update -y
yun install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
yum install -y amazon-ssm-agent
echo "session required pam_limits.so" >> /etc/pam.d/su
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent
2. IAM 권한 및 역할 추가
EC2에 SSM권한이 있는 IAM 역할을 추가합니다.
아래 2가지 ssm, ssmmessages 두 정책이 SSM관련 권한입니다.
- ssm:* (EC2가 SSM서비스에 엑세스 하기위한 권한)
- ssmmessages:* (SSM에서 EC2에 요청을 전달하기 위한 권한)
대표적으로 AWS에서 관리하는 정책인 AmazonEC2RoleforSSM 정책이나 SSM에 필요한 권한이 연결된 Role을 생성해 EC2에 연결합니다.
3. Session Manager 연결 확인
위에 두 조건이 만족되면 Session Manager 연결이 가능합니다.
로컬CMD(윈도우)에서 Session Manager 접속
1. Session Manager 플러그인을 설치합니다.
Session Manager 설치 프로그램 URL (윈도우, 맥)
https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/install-plugin-windows.html
2. 터널링 명령어 실행
ssm에서 bastian host를 이용한 터널링 명령어
aws ssm start-session --target <bastian-host-id> --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"host\":[\"private subnet의 DB엔드포인트\"],\"portNumber\":[\"실제 DB포트\"],\"localPortNumber\":[\"로컬에서 사용할 포트\"]}"
여러 DB에 대한 터널링을 한번에 실행되도록 저는 bat파일을 만들어 사용했습니다.
아래 bat파일을 실행하게되면 총 3개의 세션 터미널이 열리게됩니다.
@echo off
:: start session
start cmd /c aws ssm start-session --target bastian-host-id --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"host\":[\"private subnet의 DB1엔드포인트\"],\"portNumber\":[\"3306\"],\"localPortNumber\":[\"13306\"]}"
start cmd /c aws ssm start-session --target bastian-host-id --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"host\":[\"private subnet의 DB2엔드포인트\"],\"portNumber\":[\"3306\"],\"localPortNumber\":[\"13306\"]}"
start cmd /c aws ssm start-session --target bastian-host-id --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters "{\"host\":[\"private subnet의 DB3엔드포인트\"],\"portNumber\":[\"3306\"],\"localPortNumber\":[\"13306\"]}"
pause
bat 파일 실행 후 화면
SSM 터널링을 이용해 private DB 접속하기
위와 같이 session 터널링 터미널이 열려있는 동안 로컬(인터넷망)에서 bastian host를 통과해 private DB 접속이 가능합니다.
로컬 -> bastian host -> DB로 접속이 진행되기에 host에는 루프백 주소를, 포트는 터널링 포트를 지정해줍니다.
session이 연결된 상태에서 Test Connection을 시도하면 성공합니다.
'aws' 카테고리의 다른 글
AWS 계정간 S3 데이터 옮기기 (0) | 2024.04.13 |
---|---|
AWS S3 Gateway Endpoint, Interface Endpoint를 이용하여Private하게 접속하기 (0) | 2023.11.04 |
AWS S3 Replication과 S3 Batch에 대해 알아보자 (0) | 2023.10.31 |
DNS존과 네임서버, AWS Resolver로 On-Prem DNS서버 질의하기 (0) | 2023.10.19 |
Direct Connect로 On-Prem, AWS VPC 연결하기 (private VIF) (0) | 2023.09.24 |