Cloud/AWS

Amazon VPC Lattice - Part 8 : Control/Data Plane, Link-Local 등

지기(ZIGI) 2023. 4. 18. 17:57
Today Keys :  aws,vpc, lattice, network, service, control, data, plane, api, link-local

 이번 포스팅은 서로 다른 VPC 및 AWS 계정에 걸쳐 서비스 간의 네트워크 연결 및 애플리케이션 계층 라우팅을 자동으로 관리해주는 Amazon VPC Lattice에 대한 여덟 번째 포스팅입니다.  
여덟 번째 포스팅에서는 VPC Lattice에 대한 기존 포스팅에서 다루지 않았던, VPC Lattice와 관련된 이런 저런 내용들을 짧게 짧게 다뤄 봅니다. 전반적으로 어떻게 VPC Lattice Service와 통신을 하게 되며, 네트워크 보안 정책이 어떻게 적용되는지에 대한 내용과 VPC Lattice Service에 접근하는 Client를 확인하는 방법에 대해서 다룹니다.
VPC Lattice와 관련된 포스팅은 당분간(?)은 이번 포스팅이 마지막이 될 듯 싶고, Lambda 관련 부분은 다루려다가 그냥 잠시 묻어두고.. 이제 테스트용 리소스를 삭제해야 겠네요. 

VPC Lattice는?
 Control Plane과 Data Plane으로 구성된 완전 관리형 서비스
    - Control Plane은 Resource에 대한 Create, Read/describe, Update, Delete, List를 위한 관리용 API를 제공
  - Data plane은 Service 간의 상호 연결을 제공하는 VPC Lattice의 Invoke API 역할
 
 VPC Lattice의 Service와 Client 간의 연결
  -  VPC 내의 전용의 Lattice Data plane를 통해서 연결
  - Lattice Data Plane은 VPC 내에서만 접근이 가능한 Link-Local Endpoint를 통해서 연결 됨.
 
▪ VPC Lattice Link-Local Endpoint 구성
  - VPC Lattice Service Network에 VPC가 Association 된 경우
  - VPC Lattice Service Network에 VPC의 Service를 Lattice Service로 구성하여 Association 된 경우
  - VPC Lattice Link-Local Endpoint가 구성되면, 해당 VPC의 라우팅 테이블에 VPC Lattice가 사용하는 Link-Local 주소(169.254.171.0/24, fd00:ec2:80::/64)에 대한 라우팅이 자동으로 구성 됨.
  - 자동으로 구성된 라우팅은 수정, 삭제가 불가하며 해당 대역의 목적지를 사용하는 상세 라우팅 설정도 불가 함.
 
 
 
▪ VPC Lattice Link-Local 주소 확인
  - VPC Lattice Service를 구성하면, 각 Service에 대한 Domain name이 생성되며, 해당 Domain name을 Query 해보면, VPC Lattice Link-Local 주소가 확인 됨.
  - VPC Lattice Service별로 개별 Link Local 주소를 하지는 않음.
  - 또한, 서로 다른 계정, VPC인 경우에도 사용되는 Link Local IP 주소는 동일
 
VPC Lattice Service에서 Domain name을 확인 할 수 있다
 
동일 VPC에서 VPC Lattice Service 별로 Domain은 다르지만, 응답하는 Link-Local 주소가 다르지는 않다
 
다른 계정도 동일한 VPC Lattice Service Network에 연결된 경우 Link-Local 주소가 동일하게 응답
 
 
▪ VPC Link-Local 주소
  - VPC에서 Link-Local 주소로 서비스를 하는 것이 VPC Lattice가 처음은 아님.
  - Link-Local 주소를 이용해서 제공되는 서비스 
- Amazon Time Sync Service (NTP) : 169.254.169.123
- Route 53’s DNS Resolver : 169.254.169.253
- EC2’s Instance Metadata Service: 169.254.169.254
- ECS’s Task Metadata Endpoint :  169.254.170.2
 
 
▪ VPC Lattice와 기존 Link-Local 주소로 서비스 하는 서비스 간의 차이
  - Service Network에 VPC를 Association 해야 연결이 가능한 VPC Lattice Endpoint를 사용
  -  VPC Lattice Endpoint를 사용하면서, 별도의 라우팅 설정을 사용
  - Association과 별도 라우팅 설정 과정에서 Network 보안 정책 설정이 가능
 
 
 
▪ VPC Lattice의 Network 보안 설정 - NACL
  - Subnet에 적용되는 NACL에 Link Local 주소(169.254.0.0/16)에 대한 Deny 정책 추가 시에, VPC Lattice에 대한 접근 제어 가능
    - 기존의 Link Local 주소를 사용하는 타 서비스의 경우에는 NACL에 적용 받지 않음
 
NACL에서 Link Local 주소를 차단한 정책
NACL의 차단 정책 적용 시, VPC Lattice의 경우 접근이 불가하지만, 기존 Link Local 주소를 쓰는 서비스는 접근 가능
 
 
▪ VPC Lattice의 Network 보안 설정 - Security Group
  - VPC Lattice Service Network에 VPC를 Association 할 때, VPC Lattice Service Network로의 접근을 제어하는 Security Group을 설정
 
 
 
  - VPC에서 VPC Lattice Service Network로의 접근의 경우, Inbound Rule로 제어
      : 다음은 VPC에서 Service Network로 접근 시에 HTTPS(443)만 접근을 허용한 경우
      : VPC 내의 Client에서 HTTPS(443)로의 접근은 가능하지만, 허용되지 않은 HTTP(80) 접근은 차단 됨.
 
VPC Lattice Service Network Assciation 시에 적용한 Security Group
 
Security Group에서 허용되지 않은 서비스는 VPC Lattice Service Network에 Association된 VPC의 Client에서도 접근 불가
 
 
▪ VPC Lattice의 Network 보안 적용 순서
  - Client에서 VPC Lattice Service로 접근 시에, 우선 Subnet의 라우팅 적용 시에 NACL을 먼저 적용 받고 라우팅에 의해서 VPC Lattice Endpoint를 통해서 VPC Lattice Data Plane으로 전달되면서 Security Group을 적용 받게 됨.
.

VPC Lattice Service Network Assciation 시에 적용한 Security Group에서 허용 정책이 없는 경우 서비스 접근이 불가

 

Client의 Subnet에 적용된 Flow log를 확인해보면, VPC Lattice Service로의 접근은 허용된 것으로 확인

 
 
 
▪ VPC Lattice에 접근하는 Client 확인
  - VPC Lattice Service에서는 해당 서비스로 접근하는 Client IP 주소가 확인되지 않으나,  x-forwared-for 정보를 통해서 실제 Client IP 확인 가능
 
기본 Log로 보면, Client IP 주소 대신에 Link-Local 주소(VPC Lattice Health Check와 동일)가 확인 됨.
Log에서 x-forwared-for 정보로 확인 시에, VPC Lattice Service로 접근한 Client IP 주소 확인 가능