EC2(정확히는 ENI: 네트워크 인터페이스)에 붙는 상태저장(Stateful) 가상 방화벽
EC2 안팎으로 트래픽이 허용되는 방식을 제어
보안그룹(Security Group)은 허용 규칙만 포함
보안 그룹 규칙은 IP 또는 다른 보안 그룹을 참조하여 정의할 수 있음

인바운드 트래픽(외부에서 EC2 인스턴스로 들어가는 것이 허용되는지)
아웃바운드 트래픽(EC2 인스턴스에서 외부로 나가는 것이 허용되는지) 알려주는 것
보안 그룹이 규제하는 요소

1) Type (타입)
콘솔에서 고르는 사전 템플릿 / 선택 시 아래 Protocol/Port가 자동 채워지게 됨
예시)
SSH → TCP / 22
HTTP → TCP / 80
HTTPS → TCP / 443
Custom TCP/UDP → 직접 포트 입력
All TCP / All UDP / All ICMP → 해당 프로토콜 전 포트/코드 허용
팁💡 템플릿은 편의일 뿐이며 실무에선 Custom TCP/UDP로 필요한 포트만 여는 게 안전함
2) Protocol (프로토콜)
트래픽의 전송 프로토콜
자주 쓰는 값
팁💡: ALB 헬스체크나 NLB/UDP 등 서비스가 실제 쓰는 프로토콜과 일치해야 함.
3) Port range (포트 범위)
허용할 포트(또는 범위).
예시)
22: SSH
80–81: 80과 81 둘 다
3000: 앱 포트 하나
0–65535: 모든 포트(지양)
SG는 Stateful이라서, 인바운드로 443만 열어도 응답 트래픽은 자동 허용됨
→ “응답 포트”를 따로 열 필요 없음.
4) Source (소스) / (아웃바운드에선 Destination)
누구에게서 오는 트래픽을 허용할지를 지정.
지정 방법
CIDR: 203.0.113.10/32(단일 IP), 10.0.0.0/16(대역), 0.0.0.0/0(모든 IPv4), ::/0(모든 IPv6)
Security Group 참조: “ALB-SG → APP-SG”, “APP-SG → DB-SG”처럼 SG를 소스로 지정
(IP가 바뀌어도 안전, 마이크로세그멘테이션에 최적)
Prefix List: VPC 엔드포인트/온프레 IP 목록 등 재사용 가능한 CIDR 묶음
여러 인스턴스에 연결할 수 있다
특정 지역과 VPC 조합에만 제한된다(정확히 한 리전의 한 VPC에만 속하고 그 범위에서만 쓸 수 있다=> 다른 지역으로 전환하는 경우 새 보안 그룹을 생성해야 함)
기본적으로 모든 인바운드 트래픽은 차단되고 모든 아웃바운드 트래픽은 승인됨
IP 주소없이도 다른 인스턴스끼리 통신 가능

아까 EC2를 생성하면서 보안그룹을 생성했었는데 launch-wizard 1이 바로 그 친구다

보안그룹을 클릭하면 상세 정보를 볼 수 있다
