[AWS] Private Subnet에 있는 인스턴스 접속 방법 (feat. AWS SSM)

2024. 11. 29. 23:08· Cloud/AWS
목차
  1. Bastion Host  vs AWS SSM 📌
  2. SSM 구성 방법 📌
  3. VPC Endpoint
  4. 참조

Bastion Host  vs AWS SSM 📌

카카오테크 부트캠프에서 프로젝트를 진행하던 중,

Private Subnet에 있는 Nginx 인스턴스에 접근해서 설정해줘야하는 문제가 발생했다.

 

 

위: Bastion Host / 아래: AWS SSM

 

보통 이런 경우, Bastion Host 방식을 사용하곤 하는데

간편한 대신 public에 불필요한 인스턴스가 하나 필요하고 보안 이슈가 있다는 단점이 있다.

따라서, AWS SSM 방식으로 진행하였다.

 

 

SSM 구성 방법 📌

  1. IAM Role 생성
    1. 정책: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
  2. EC2 인스턴스에 역할 할당
  3. VPC Endpoint 생성(옵션)
  4. 인스턴스 - 연결 버튼을 통해 EC2 Console에 접속

 

Terraform 코드

# IAM Role for SSM
resource "aws_iam_role" "ssm_role" {
  name               = "dododocs-ssm-role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Principal = {
          Service = "ec2.amazonaws.com"
        }
        Action = "sts:AssumeRole"
      },
    ]
  })
}

resource "aws_iam_policy_attachment" "ssm_policy_attachment" {
  name       = "ssm-policy-attachment"
  roles      = [aws_iam_role.ssm_role.name]
  policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}

resource "aws_iam_instance_profile" "ssm_instance_profile" {
  name = "dododocs-ssm-instance-profile"
  role = aws_iam_role.ssm_role.name
}

resource "aws_instance" "nginx_instance" {
  ami                    = "ami-0de20b1c8590e09c5"
  instance_type          = "t2.micro"
  subnet_id              = aws_subnet.private_a.id
  key_name               = "dododocs-key"
  vpc_security_group_ids = [aws_security_group.nginx_sg.id]
  associate_public_ip_address = false
  iam_instance_profile   = aws_iam_instance_profile.ssm_instance_profile.name

  depends_on = [aws_security_group.nginx_sg]

  tags = {
    Name = "dododocs-nginx-instance"
  }
}

 

 

VPC Endpoint

  • AWS 서비스와 인터넷을 경유하지 않고 안전하게 통신하기 위해 VPC내에서 생성되는 네트워크 구성 요소
  • VPC 내부의 리소스가 인터넷 게이트웨이, NAT 게이트웨이, 또는 퍼블릭 IP 없이도 AWS 서비스에 접근할 수 있도록 설정

 

 

참조

https://sharplee7.tistory.com/157

https://medium.com/@nagarjun_nagesh/terraform-private-ec2-instance-with-ssm-access-fa7f074965e3

 

 

저작자표시 비영리 (새창열림)

'Cloud > AWS' 카테고리의 다른 글

[AWS/EKS] 다른 Namespace의 LB 사용하는 방법  (0) 2024.12.02
[AWS] EKS 구성법  (0) 2024.11.19
  1. Bastion Host  vs AWS SSM 📌
  2. SSM 구성 방법 📌
  3. VPC Endpoint
  4. 참조
'Cloud/AWS' 카테고리의 다른 글
  • [AWS/EKS] 다른 Namespace의 LB 사용하는 방법
  • [AWS] EKS 구성법
혬수
혬수
혬수
수리수리 마수리
혬수
전체
오늘
어제

블로그 메뉴

  • 🏡 Home
  • 🏷️ Tag
  • Github
  • 분류 전체보기 (48)
    • Language (5)
      • JavaScript (5)
      • TypeScript (0)
    • Framework (16)
      • React (1)
      • React Native (15)
    • Testing (2)
      • Jest (0)
      • Postman (1)
    • DevOps (7)
    • Cloud (8)
      • Kubernetes (5)
      • AWS (3)
    • KakaoTech_Bootcamp (4)
      • Weekly Scrum (3)
      • 회고 (1)
    • Etc (5)
      • Git (1)
      • MacOS (4)

인기 글

hELLO · Designed By 정상우.v4.2.2
혬수
[AWS] Private Subnet에 있는 인스턴스 접속 방법 (feat. AWS SSM)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.