보안 그룹이란?
보안 그룹은 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) 되어 있다.
- 외부 API 호출
- 외부 DB 연결
- 외부로 이미지 업로드 등
을 해야 하므로 아웃바운드는 일반적으로 제한하지 않는다.
🔐 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 하지 말 것 ❌ (보안상 매우 위험)
'[배포]' 카테고리의 다른 글
[배포] 🚀 GitHub Actions + EC2 + S3 + Secrets Manager + CodeDeploy를 통한 무중단 배포 자동화 (0) | 2025.04.07 |
---|---|
[AWS] EC2에 MySQL 설치 및 접속 (0) | 2025.04.05 |
[GitHub Actions] GitHub Actions 명령어 (0) | 2025.03.14 |
[배포] 배포 방식 (0) | 2025.02.04 |
[DevOps] GitHub Actions (0) | 2025.01.18 |