개인 엔드 포인트 및 인트라넷
1) 개인 네트워크 이유
목표는 인터넷에 액세스하지 않고 개인 링크를 통해 중요한 서비스를 연결하여 공격 표면과 탈출 비용을 최소화하는 것입니다. 이것은 다음을 제공합니
공개 IP로부터 PaaS/DB/저장소의 격리;
보다 쉬운 준수 (PCI DSS/GDPR)
예측 가능한 지연 및 라우팅.
2) 기본 모델: VPC/VNet 및 허브
주소 공간: 교차점이없는 단일 CIDR 계획 (예: '10. 0. 0. 0/12 '는 환경과 허브로 잘립니다).
세분화: 개별 경로/ACL/SG와 하위 네트 '입력', '앱', '데이터', 'ops', '공유'.
대중 교통 허브: 게이트웨이가있는 중앙 VPC/VNet (VPN/DirectConnect/ExpressRoute/Intercommect), VPC 피어링/대중 교통 게이트웨이 및 네트워크 방화벽.
듀얼 스택: IPv6 미리 예약 (NAT 저장, 주소 척도 향상).
3) 개인 평가: 원칙
Private Endpoint/PrivateLink/Private Service Connect-주소 공간에서만 액세스 할 수있는 관리 서비스 (객체 스토리지, 대기열, 데이터베이스, 비밀 스토리지) 에 대한 개인 인터페이스:- 트래픽은 인터넷이 아닌 공급자 네트워크 내부로 전달됩니다.
- 갈 수있는 엔드 포인트 정책 제한 (접두사/ARN/리소스).
- DNS는 개인 IP로 재정의됩니다 (§ 6 참조).
일반적인 대상: 객체 저장소 (S3/GCS/Blob), 비밀/KMS, 대기열, 이벤트 버스, 관리 데이터베이스, 분석 서비스, 아티팩트 레지스터.
4) 내부의 진입 및 균형
L4/7 용 ILB (Internal Load Balancer) 는 개인 서브넷에서만 볼 수 있습니다.
쿠 베르네 테스:- 내부 주석이있는 'LoadBalancer' 유형의 '서비스'.
- 개인 주소로 내부 Ingress (Nginx/Contour/Gateway API) 를 통한 로그인.
- API 게이트웨이 (비공개): 백엔드와의 개인 통합; 필요한 경우 가장자리를 통해서만 외부.
예: 내부로 K8s Ingress
yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api-internal annotations:
kubernetes. io/ingress. class: "nginx"
alb. ingress. kubernetes. io/scheme: internal # or provider equivalent spec:
rules:
- host: api. internal. corp http:
paths:
- path: /v1/
pathType: Prefix backend:
service:
name: api port: { number: 8080 }
5) 탈출 윤곽: "기본값-거부"
개인 서브넷의 직접 인터넷이 없으면 모든 것이 다음과 같습니다
FAT 게이트웨이 (업데이트/리포지토리 용) + FQNC/IP를 통한 출구 허용리스트;
정책에 통제가 필요한 경우 TLS 검사/프록시;
NAT 대신 PaaS/레지스터에 대한 개인 엔드 포인트.
SG/NACL: 서비스 당 명시 적 권한, "동서" -최소.
K8s 탈퇴 정책 (CNI/OPA 게이트 키퍼/Calico NetworkPolicy) - 외부 IP 금지, 클러스터/엔드 포인트 권한.
6) 디스플레이: 분할 가로등 개인 영역
별도의 내부 영역 ('.internal. corp ') 및 공개.
공급자 서비스를위한 개인 DNA 영역: 공개 이름을 무시하십시오 (예: '버킷'). s3. 지역. 아마조 나우. com ') 개인 A/AAAA 레코드.
Forwarders/Condonamental 겠습니다.
이름 형식: 캡슐화 환경/지역 ('api. eu1. 내부. corp '), PII를 피하십시오.
api. internal. corp. A 10. 20. 30. 40 s3. bucket. corp. A 10. 100. 0. 25 # via private endpoint
7) 상호 연결 패턴
피어링 (VPC) VPC/VNet VNet): 간단하고 빠릅니다. 대중 교통이 항상 지원되는 것은 아닙니다 → 허브 앤 스포크에 Transit Gateway/Virtual WAN/Cloud Router를 사용하십시오.
프렘 전환 클라우드: IPsec VPN을 시작한 다음 BGP 및 백업 (두 공급자, 다른 진입 점) 으로 라인 (DC/ER/IC) 을 임대했습니다.
VRF/Route-domain 세분화: prod/stage/dev와 카드 둘레의 격리.
8) 제로 트러스트 및 내부 인증
mTLS 기본 설정 (서비스 메시: Istio/Linkerd/Consul), 머신 아이덴티티: SPIFFE/SPIRE.
L7 정책: JWT/claims/scopes의 승인, 프록시 수준의 경로/메소드 제한.
비밀: HashiCorp Vault/PGMS + 외부 비밀 운영자; 단기 자격 증명 (STS).
요새/특권 액세스: 브로커/JIT 세션 (MFA, 명령 기록) 을 통해서만 privatka에 액세스 할 수 있습니다.
예: 특사 필터 mSL + JWT- 지정자 (조각)
yaml transport_socket:
name: tls typed_config: {... spiffe://svc. api... }
http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
providers:
oidc: { issuer: https://idp. corp, audiences: ["api"], remote_jwks: {...} }
rules: [{ match: { prefix: "/v1" }, requires: { provider_name: oidc } }]
9) 개인 내부의 데이터 및 PaaS
데이터베이스/클러스터: 개인 주소 만; 요새/JIT를 통한 관리자 패널.
리포지토리: 개인 엔드 포인트를 통해 VPC에서 액세스; 엔드 포인트 정책은 원하는 버킷/컨테이너 만 허용합니다.
대기열/버스: 개인 인터페이스; 생산자/소비자-동일한 VPC/피어링.
아티팩트 레지스터: 개인 서브넷에서 CI/CD 러너의 개인 액세스.
10) 개인 네트워크에서의 관찰 가능성
원격 측정 게이트웨이 인 OpenTelemetry Collector: 자체 호스팅 (Prometheus/Tempo/Loki/ClickHouse) 또는 개인 엔드 포인트를 통해 관리되는 백엔드로의 내부 수출 업체.
흐름 로그/NSG/NACL 로그 및 도달 가능성 분석기가 필요합니다.
SLO 슬라이스: 'site/region/vpc/subnet', 탈출 경고 및 예기치 않은 "인터넷 방향".
11) 테스트 및 검증
네트워크 규칙/침입/서비스에 대한 코드로서의 정책 (OPA/게이트 키퍼).
카나리아 경로: 개인 DNS의 테스트 도메인, 다른 하위 네트/AZ/지역의 합성 검사.
혼돈 네트워크: VPC/AZ 간 지연/손실 (netem/Toxiproxy), 타임 아웃 점검 및 재 시도 정책.
12) 설정 예
12. 1 테라 폼: 라벨 및 노선 (아이디어)
hcl resource "aws_route_table" "app" {
vpc_id = aws_vpc. core. id tags = { Name = "rt-app", env = var. env, zone = "private" }
}
Route on PrivateLink endpoint (interface endpoint is created separately)
resource "aws_vpc_endpoint_route_table_association" "s3" {
route_table_id = aws_route_table. app. id vpc_endpoint_id = aws_vpc_endpoint. s3. id
}
12. 2 K8 네트워크 정책: 필요한 것을 제외한 모든 것을 거부하십시오
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata: { name: deny-all }
spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
kind: NetworkPolicy metadata: { name: allow-core }
spec:
podSelector: { matchLabels: { app: api } }
egress:
- to:
- namespaceSelector: { matchLabels: { ns: db } }
ports: [{ port: 5432, protocol: TCP }]
- to:
- ipBlock: { cidr: 10. 100. 0. 0/16 } # private endpoints ports: [{ port: 443, protocol: TCP }]
12. 3 Nginx Ingress (내부 체계) + HSTS
yaml metadata:
annotations:
alb. ingress. kubernetes. io/scheme: internal nginx. ingress. kubernetes. io/hsts: "true"
13) 안티 패턴
개인 서브넷의 일반적인 "관리 인터넷"; 탈출 제어 부족.
스플릿 브레인 DNS와 랜덤 매뉴얼 '/등/호스트 '.
CIDR 및 "GPS 중첩 인형" 을 교차합니다.
"편의를 위해" 데이터베이스/저장소에 대한 공개 엔드 포인트.
흐름 로그/규칙 감사가 없습니다. "오픈" SG '0. 0. 0. 0/0`.
코드/CI의 수명이 긴 정적 액세스 키.
14) 비용과 성능
개인 엔드 포인트는 종종 영구적 인 NAT 출구보다 저렴하고 안전합니다.
병목 현상을 일으키지 않기 위해 대역폭에 대한 NAT 클러스터/az 로컬 일정.
캐시/에지 및 SWR은 지역 간 트래픽을 줄입니다.
프로토콜 선택: → 내부의 TH/2/gRPC는 연결과 TLS 오버 헤드가 적습니다.
15) iGaming/Finance의 세부 사항
PCI DSS: 인터넷이없는 별도의 네트워크/VRF에있는 카드 회로 (CDE); 개인 엔드 포인트에 의해서만 상점/PSP 로그에 액세스; 불변의 감사 (WORM/Object Lock).
KMS/Vault: 지역/브랜드별로 분할 된 키; 서명 작업 (HSM) 은 CDE에서 mTLS를 통해서만 사용할 수 있습니다.
PSP/KYC: 개인 연결/시장이있는 경우-사용; 그렇지 않으면 HMAC/mTLS 및 명시 적 허용리스트를 사용하여 신뢰할 수있는 프록시를 빠져 나옵니
멀티 테넌시: '테넌트 '/' 브랜드' 별 태그 및 정책; 별도의 개인 DNA 이름과 SG 계층.
16) Prod 준비 점검표
- 교차점이없는 CIDR 계획; 듀얼 스택 준비 (IPv6).
- 허브 앤 스포크, 대중 교통, 피어링; 온 프렘 바스 타르 클라우드-BGP, 백업 링크 쌍.
- 개인 엔드 포인트 + 엔드 포인트 정책을 통한 모든 PaaS/스토리지/DB.
- 내부 LB/침입; 공공 경계 - 가장자리/WAF 만.
- 스플릿 수평선 DNA, 개인 영역 및 조건부 전달이 구성됩니다.
- 이탈은 기본적으로 "거부" 입니다. GPS/프록시가 제한되고 기록됩니다.
- 메쉬 mSL + SPIFFE; L7의 JWT- 오즈; Vault/ESO, 짧은 비밀.
- NetworkPolicy/SG/NACL- "최소 필요", 흐름 로그 및 도달 가능성 분석.
- 내부의 OTel 수집기; 'site/region/vpc' 를 통한 SLO 출구 경보.
- PCI/감사: WORM 로그, KMS/HSM, CDE 격리, 액세스 런북.
17) TL; DR
명확한 CIDR 요금제를 사용하여 허브 앤 스포크 네트워크를 구축하고 각 PaaS/스토리지/데이터베이스에 개인 엔드 포인트를 사용하고 관리되는 출구 지점을 통해서만 외부로 트래픽하십시오. 내부-내부 LB/Ingress, mSL + SPIFFE, 분할 수평선 DNA, 엄격한 NetworkPolicy/SG 및 OTel을 통한 원격 측정. iGaming/Finance의 경우 PCI 세분화, KMS/Vault 및 불변의 감사를 추가하십시오. 개인 채널 또는 엄격하게 제어 된 프록시를 통한 PSP/KYC 출력.