본문으로 건너뛰기
aws검색
네트워크

보안 그룹, NACL, VPC 엔드포인트와 PrivateLink (VPC 안쪽 통제)

상태 저장 방화벽인 보안 그룹과 상태 비저장인 네트워크 ACL 의 차이와 규칙 설계, 게이트웨이 엔드포인트와 인터페이스 엔드포인트(PrivateLink)의 비용과 엔드포인트 정책, 내 서비스를 다른 VPC 에 PrivateLink 로 내주는 법을 정리합니다.

보안 그룹NACLVPC 엔드포인트PrivateLink엔드포인트 정책2026-10 기준, 약 7분

보안 그룹과 NACL

비교보안 그룹네트워크 ACL
붙는 곳ENI(인스턴스, 태스크, RDS, 엔드포인트 등)서브넷
상태상태 저장. 나간 요청의 응답은 자동 허용상태 비저장. 응답 트래픽도 규칙으로 열어야 함
규칙허용만 있음허용과 거부, 번호 순서대로 평가
대상 지정CIDR, 접두사 목록, 다른 보안 그룹CIDR 만
기본값새 그룹은 인바운드 없음, 아웃바운드 모두 허용기본 NACL 은 모두 허용

실무의 기본 원칙은 보안 그룹으로 세밀하게, NACL 은 거칠게(또는 기본값 그대로) 입니다. NACL 은 특정 대역을 서브넷 단위로 확실히 막아야 할 때(예: 데이터 서브넷은 앱 서브넷 대역에서만) 씁니다. NACL 을 쓸 때는 응답이 돌아오는 임시 포트(1024-65535) 를 열어야 한다는 점을 잊지 않습니다.

보안 그룹 체이닝

IP 대신 보안 그룹을 대상으로 지정하면, 오토 스케일링으로 IP 가 바뀌어도 규칙을 고칠 필요가 없습니다.

보안 그룹인바운드 규칙
sg-alb443 from 0.0.0.0/0 (CloudFront 만 받으려면 CloudFront 관리형 접두사 목록)
sg-app8080 from sg-alb
sg-db5432 from sg-app
aws ec2 authorize-security-group-ingress --group-id sg-db \
  --ip-permissions 'IpProtocol=tcp,FromPort=5432,ToPort=5432,UserIdGroupPairs=[{GroupId=sg-app,Description="app to aurora"}]'

한도

보안 그룹당 인바운드, 아웃바운드 규칙은 기본 60 개씩이고 ENI 하나에 보안 그룹은 기본 5 개까지 붙습니다. 두 값의 곱에는 상한이 있어서 하나를 올리면 다른 하나를 낮춰야 할 수 있습니다. 규칙이 넘치면 IP 를 나열하지 말고 관리형 접두사 목록으로 묶습니다. NACL 은 방향마다 기본 20 개(최대 40 개) 규칙입니다.

팁 보안 그룹은 "지금 연결된 것" 을 끊지 않을 수 있습니다. 추적 중인 연결은 규칙을 지워도 한동안 유지될 수 있으니, 사고 대응 때 즉시 끊어야 하면 NACL 의 거부 규칙을 함께 씁니다.

VPC 엔드포인트

프라이빗 서브넷의 리소스가 AWS 서비스를 부를 때, 인터넷이나 NAT 를 거치지 않고 AWS 네트워크 안에서 가는 길입니다.

종류대상동작요금
게이트웨이 엔드포인트S3, DynamoDB라우팅 테이블에 접두사 목록 경로 추가무료
인터페이스 엔드포인트 (PrivateLink)대부분의 AWS 서비스, SaaS, 다른 VPC 서비스서브넷에 ENI 생성, 사설 IP 로 접근AZ 당 시간 요금 + 처리 GB
게이트웨이 로드 밸런서 엔드포인트방화벽 어플라이언스라우팅으로 트래픽을 검사 장비로시간 + GB
리소스 엔드포인트, 서비스 네트워크 엔드포인트VPC Lattice 리소스(다른 VPC 의 DB 등)사설 접근시간 + GB

서울 리전 인터페이스 엔드포인트는 2026-10 기준 AZ 하나당 시간당 0.013 USD, 처리 GB 당 0.01 USD(월 1 PB 까지)입니다. 세 AZ 에 걸면 엔드포인트 하나에 한 달 약 28 USD 입니다. 엔드포인트를 수십 개 만들면 그것도 적지 않은 돈이라, 조직에서는 공유 서비스 VPC 에 엔드포인트를 모으고 Route 53 Resolver 와 Transit Gateway 로 다른 VPC 가 함께 쓰게 하기도 합니다.

어떤 엔드포인트부터 만드나

프라이빗 서브넷에서 컨테이너를 돌리면 보통 이 순서로 필요합니다.

  1. s3 (게이트웨이, 무료). ECR 이미지 레이어가 S3 에서 내려옵니다.
  2. ecr.api, ecr.dkr
  3. logs (CloudWatch Logs)
  4. sts, secretsmanager, ssm, kms
  5. Session Manager 를 쓰면 ssm, ssmmessages, ec2messages

프라이빗 DNS

인터페이스 엔드포인트에 프라이빗 DNS 를 켜면 secretsmanager.ap-northeast-2.amazonaws.com 같은 기본 이름이 그대로 엔드포인트의 사설 IP 로 풀립니다. 코드를 고칠 필요가 없습니다. VPC 의 enableDnsHostnames, enableDnsSupport 가 둘 다 켜져 있어야 합니다.

엔드포인트 정책

엔드포인트에도 리소스 정책을 붙여 "이 엔드포인트로는 우리 조직 버킷만" 같은 데이터 경계를 만듭니다.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": ["s3:GetObject", "s3:PutObject", "s3:ListBucket"],
    "Resource": "*",
    "Condition": { "StringEquals": { "aws:ResourceOrgID": "o-abc123example" } }
  }]
}

반대로 버킷 정책에 aws:SourceVpce 조건을 걸면 "이 엔드포인트를 거친 요청만" 받게 됩니다. 이 조건을 걸면 콘솔에서 버킷을 볼 때도 막히니 관리용 예외를 함께 둡니다.

다른 계정이나 고객 VPC 에 내 API 를 인터넷 없이 제공하려면 엔드포인트 서비스를 만듭니다.

  1. 서비스 앞에 NLB(또는 GWLB)를 둡니다.
  2. NLB 로 엔드포인트 서비스를 만들고, 허용할 주체(계정, 역할, 조직)를 등록합니다. 연결 요청을 수동 승인으로 둘 수 있습니다.
  3. 소비자는 자기 VPC 에 인터페이스 엔드포인트를 만들어 붙습니다.

양쪽 CIDR 이 겹쳐도 상관없고, 소비자 쪽에서 우리 VPC 의 다른 리소스는 전혀 보이지 않는다는 것이 피어링과 가장 큰 차이입니다. 2024-11 부터는 리전 간 PrivateLink 도 지원해서 다른 리전의 소비자도 붙을 수 있습니다(원격 리전마다 시간 요금 추가).

VPC Lattice

서비스 사이 통신이 많은 조직은 VPC Lattice 로 서비스 네트워크를 만들어, VPC 와 계정 경계를 넘는 HTTP, gRPC, TCP 연결과 인증 정책(IAM 기반)을 한 곳에서 관리할 수 있습니다. 서비스 메시를 직접 운영하지 않고 IAM 정책으로 서비스 간 권한을 거는 방식입니다.

자주 하는 실수

  • 엔드포인트 보안 그룹에 443 을 안 염: 인터페이스 엔드포인트도 ENI 라서 보안 그룹이 붙습니다. 호출하는 쪽 대역이나 보안 그룹에서 443 을 허용해야 합니다.
  • NACL 에서 임시 포트를 막음: 연결은 시작되는데 응답이 안 돌아와 타임아웃이 납니다.
  • 게이트웨이 엔드포인트를 일부 라우팅 테이블에만 연결: 연결 안 된 서브넷은 여전히 NAT 로 S3 에 갑니다.
  • 0.0.0.0/0 22 번 포트: SSH 는 Session Manager 로 바꾸고 22 번은 닫습니다. Security Hub 와 Config 규칙이 이런 그룹을 찾아 줍니다.

이 문서에서