반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Archives
Today
Total
관리 메뉴

가끔 보자, 하늘.

SSM 으로 Private subnet의 EC2 연결하기 본문

개발 이야기/인프라 구축 및 운영

SSM 으로 Private subnet의 EC2 연결하기

가온아 2022. 4. 6. 12:00
  1. SSM 사용자 권한 생성
  2. EC2 IAM Role에 사용할 Role 생성 및 방화벽 설정
  3. SSM Agent 설치
  4. VPC EndPoint 설정
  5. 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 호스트를 둘 필요가 없어졌네요. 문제없이 잘 접속되셨기를 ... :)

반응형