본문 바로가기

[배포]

[AWS] 🔐 보안 그룹 설정

보안 그룹이란?

 

보안 그룹은 AWS EC2 인스턴스의 가상 방화벽 역할을 한다.

주로 인바운드(Inbound)아웃바운드(Outbound) 규칙을 통해 트래픽을 제어한다.

 

🌐 인바운드(Inbound)

  • 외부 → 내 서버로 들어오는 데이터
  • 외부에서 내 서버(인스턴스)로 들어오는 트래픽을 제어
  • 예: 특정 IP만 22번 포트(SSH)로 접속할 수 있게 허용
  • 내 컴퓨터에서 EC2로 SSH 접속 (22번 포트)

🚨 현재 문제 상황

  • IP가 바뀌면, 기존에 허용된 IP(예: 203.0.113.25)로는 더 이상 접속이 불가능해짐
  • → 인바운드 규칙에 현재 IP를 추가해야 함

🌐 아웃바운드(Outbound)

  • 내 서버 → 외부로 나가는 데이터
  • 내 서버에서 외부로 나가는 트래픽을 제어
  • 기본적으로 모든 트래픽을 허용(모든 IP로, 모든 포트 가능)하지만 필요 시 제한 가능
  • 예: EC2 서버에서 외부 API 요청, 소프트웨어 설치 등

☁️ 애플리케이션 배포 시 보안 그룹 설정 

 

✅ 인바운드(Inbound) 규칙

목적 포트 프로토콜 소스
웹 애플리케이션 접속 (HTTP) 80 TCP 0.0.0.0/0 또는 특정 IP
웹 애플리케이션 접속 (HTTPS) 443 TCP 0.0.0.0/0 또는 특정 IP
SSH 접속 (서버 관리) 22 TCP 내 IP만 허용 (보안 중요!)

 

  • 80번 포트: 웹사이트 접속(http://)
  • 443번 포트: 보안 연결 접속(https://)
  • 22번 포트: SSH 접속 (서버 배포/관리용이므로 반드시 제한)

✅ 아웃바운드(Outbound) 규칙

 

보통 애플리케이션에서는 기본적으로 "모두 허용" (0.0.0.0/0) 되어 있다.

  1. 외부 API 호출
  2. 외부 DB 연결
  3. 외부로 이미지 업로드 등

을 해야 하므로 아웃바운드는 일반적으로 제한하지 않는다.


🔐 RDB 접근 방식에 따른 보안 그룹 설정

📍 1. 애플리케이션 서버(EC2)에서만 접근하는 경우

(보통 실서비스에선 DB는 외부에서 직접 접근하지 않고, 오직 EC2 내부 애플리케이션에서만 접근하도록 설정한다.)

 

🔐 보안 그룹 설정:

  • DB 인스턴스의 인바운드 규칙에, EC2의 보안 그룹을 소스로 지정
  • 즉, "EC2에서 오는 요청만 허용"
  • 포트는 MySQL이면 3306, PostgreSQL이면 5432 등
[DB 보안 그룹 설정 예시]
- 포트: 3306
- 프로토콜: TCP
- 소스: EC2 인스턴스의 보안 그룹

 

📍 2. 개발 중이라서 로컬 PC에서 DB에 직접 접속하고 싶은 경우

(MySQL Workbench, DBeaver 같은 도구로 직접 접속하려면 임시로 내 IP를 DB 보안 그룹 인바운드에 등록해야 한다.)

 

🔐 보안 그룹 설정:

  • 포트: 3306
  • 소스: 내 IP/32 (예: 123.45.67.89/32)
  • 절대 0.0.0.0/0 하지 말 것 ❌ (보안상 매우 위험)