클라우드 보안 실무 가이드/AWS 보안 실무 가이드

[클라우드 보안 실무 #12] AWS 보안 그룹 실전 예시 총정리 – 실수 없이 구성하는 인바운드·아웃바운드 전략

cloudindovi 2025. 5. 14. 16:44
728x90
반응형

AWS 보안 그룹을 구성할 때 가장 많은 질문은 다음과 같습니다:
"포트는 뭘 열어야 하지?", "DB 접근은 어떻게 제한하지?", "내부 서비스 간 통신은 어떻게 연결하지?"
이번 글에서는 실제 현업에서 자주 사용되는 보안 그룹 구성 예시를 상황별로 정리하고,
IaC 도구를 활용한 관리 방법까지 포함해 설명합니다.


🧱 예시 1 – 웹서버 (EC2 + ALB)

기본적인 웹 애플리케이션 구성입니다. 웹 트래픽은 ALB에서 수신 후 EC2로 전달됩니다.


# ALB 보안 그룹
인바운드: TCP 80, 443 → 0.0.0.0/0
아웃바운드: TCP 80, 443 → EC2 보안 그룹

# EC2 보안 그룹
인바운드: TCP 80, 443 → ALB 보안 그룹
아웃바운드: ALL → 0.0.0.0/0 (필요에 따라 제한)

🔍 포인트: EC2의 80/443 포트를 ALB 보안 그룹에서만 허용하는 구조로,
외부 직접 접근을 차단하며 ALB를 통해서만 트래픽 유입을 허용합니다.


🧱 예시 2 – DB 서버 (RDS/MySQL)

DB는 반드시 접근을 최소화해야 하며, 웹서버 또는 백엔드 서버만 허용 대상입니다.


# RDS 보안 그룹
인바운드: TCP 3306 → EC2 보안 그룹
아웃바운드: TCP 443 → AWS 서비스 (업데이트 등)

🔍 포인트: 보안 그룹 ID 간 참조를 활용하여 IP 범위가 아니라 "논리적 연결"로 제어


💡 자주 발생하는 실수 Top 3

  1. 서버 간 통신을 위해 0.0.0.0/0을 열어놓고 방치
  2. SSH (22번 포트) 글로벌 오픈
  3. “모든 포트를 허용” 설정 후 깜빡하고 저장

☑ 실무에서는 반드시 정기적인 보안 그룹 점검이 필요합니다.
👉 [#7] AWS WAF 실무 운영 전략 총정리 글도 참고해보세요.


🛠 Terraform 예시 – 보안 그룹 IaC 관리

코드 기반으로 보안 그룹을 정의하고 버전 관리까지 가능하게 합니다.


resource "aws_security_group" "web" {
  name   = "web-sg"
  vpc_id = var.vpc_id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "web"
  }
}

✅ 변경 이력 추적, 코드 리뷰, 멀티환경 구성에 유리합니다.


📌 관련 실무 가이드


이 글은 [클라우드 보안 실무] 시리즈 중 하나입니다.
👉 전체 시리즈 목차 보기


도움이 되셨다면 댓글이나 구독 부탁드립니다! 🙏

728x90
반응형