최소 권한의 원칙(PoLP)이란?
AWS, GCP 등 다양한 클라우드 플랫폼에서 활용되는 필수적인 보안 정책으로 무언가에 액세스 할 때 필요한 최소한의 권한만 가지도록 제한하는 보안 원칙이다.
이 원칙에 따라 불필요한 권한을 제거하여 보안 사고를 예방할 수 있다.
PoLP를 어긴 예시
- 22번 포트(SSH)로만 접근하는 Bastion Host의 인바운드 규칙에 80 포트를 열어둔다.
- 루트 관리자 IP에서만 접근할 수 있어야 하는 자원에 대해 모든 IP(0.0.0.0)에서 접근을 열어둔다.
보안 그룹이란?
AWS 클라우드에서의 네트워크 보안을 의미한다.
AWS 리소스(EC2 인스턴스)를 집이라고 생각한다면 보안그룹은 집 밖에 쳐져있는 울타리와 대문이다. 집에 접근할 때 울타리와 대문에서 접근해도 되는 요청인지 보안 요원이 검사를 하는 것과 비슷하다
EC2 인스턴스 주위에 방화벽 역할을 할 보안그룹을 만들고 보안 그룹에 규칙을 지정한다. 이 보안 규칙에는 **인바운드 트래픽(보안 그룹의 외부에서 내부로 보내는 트래픽)**에서 어떤 트래픽만 허용할 지 설정할 수 있고, **아웃바운드 트래픽(보안 그룹 내부에서 외부로 나가는 트래픽)**에서 어떤 트래픽만 허용할 지 설정할 수있다.
인바운드 규칙

보안 그룹의 외부에서 내부로 보내는 요청의 규칙을 정의한다.
유형, 프로토콜, 포트범위: 트래픽의 유형을 지정한다. (SSH, HTTP 등)
소스: 접근을 허용할 IP, 보안그룹을 지정한다.
- 보안 그룹 추가 - 해당 보안 그룹에 속한 AWS 리소스가 지정된 포트로 접속하는걸 허용한다.
- IP 주소 추가 - 해당하는 IP 주소에서만 접근할 수 있다.
- 0.0.0.0/0 - 인터넷의 모든 곳에서 접근 가능
- 127.0.0.1/32 - 로컬호스트(자기 자신)만 허용
- 10.0.0.0/8 - 사설 네트워크 Class A (내부 네트워크용)
- 172.16.0.0/12 - 사설 네트워크 Class B(내부 네트워크용)
- 192.168.0.0/16 - 사설 네트워크 Class C(가정/소규모 네트워크용)
설명: 해당 규칙에 대한 설명
리소스 별 사용되는 포트 번호
웹 서버 / 프론트엔드
HTTP/HTTPS
- 80: HTTP
- 443: HTTPS
- 8080: HTTP 대체 포트 (개발/테스트)
- 8443: HTTPS 대체 포트
React / Node.js 개발 서버
- 3000: React 기본 개발 서버
- 3001: React 추가 인스턴스
- 5173: Vite 개발 서버
- 4200: Angular CLI
Vue.js
- 8080: Vue CLI 기본 포트
백엔드 / 애플리케이션 서버
Spring Boot
- 8080: 기본 포트
- 8081, 8082: 추가 인스턴스
- 9090: Actuator (관리용)
Tomcat
- 8080: HTTP
- 8443: HTTPS
- 8009: AJP
Node.js / Express
- 3000: 일반적인 기본 포트
- 5000: 대체 포트
Django
- 8000: 개발 서버 기본 포트
Flask
- 5000: 개발 서버 기본 포트
데이터베이스
MySQL / MariaDB
- 3306: 기본 포트
PostgreSQL
- 5432: 기본 포트
MongoDB
- 27017: 기본 포트
- 27018: Shard 서버
- 27019: Config 서버
Redis
- 6379: 기본 포트
Microsoft SQL Server
- 1433: 기본 포트
Oracle Database
- 1521: 기본 리스너 포트
- 1522: 대체 포트
Cassandra
- 9042: CQL native transport
- 7000: Inter-node communication
Elasticsearch
- 9200: HTTP API
- 9300: 노드 간 통신
메시지 큐 / 이벤트 스트리밍
RabbitMQ
- 5672: AMQP
- 15672: 관리 UI
- 5671: AMQP over SSL
Apache Kafka
- 9092: 기본 포트
- 9093: SSL
- 2181: Zookeeper
ActiveMQ
- 61616: OpenWire
- 8161: 관리 콘솔
원격 접속
SSH
- 22: SSH
RDP (Windows)
- 3389: 원격 데스크톱
VNC
- 5900: 기본 포트
모니터링 / 로깅
Prometheus
- 9090: Prometheus 서버
Grafana
- 3000: 대시보드 UI
Kibana
- 5601: 웹 UI
Logstash
- 5044: Beats 입력
Jaeger (분산 추적)
- 16686: UI
- 14268: HTTP 수집기
컨테이너 / 오케스트레이션
Docker
- 2375: Docker daemon (비암호화)
- 2376: Docker daemon (TLS)
Kubernetes
- 6443: API 서버
- 10250: Kubelet API
- 30000-32767: NodePort 서비스 범위
캐시 / 세션
Memcached
- 11211: 기본 포트
Hazelcast
- 5701: 기본 포트
API Gateway / 프록시
Nginx
- 80: HTTP
- 443: HTTPS
Apache HTTP Server
- 80: HTTP
- 443: HTTPS
Kong
- 8000: Proxy (HTTP)
- 8443: Proxy (HTTPS)
'개발 지식 > aws' 카테고리의 다른 글
| AWS 인프라를 어떻게 구축할 수 있을까 (2) | 2026.01.16 |
|---|---|
| AWS ECS가 누구세요 (1) | 2025.12.05 |
| 엘라스틱 빈스톡(Elastic Beanstalk)이 뭘까 (0) | 2025.12.05 |
| AWS 서버 구축은 어떻게 해야할까 (1) | 2025.11.13 |