반응형
VPC Endpoint란?
- VPC Endpoint란 IGW, VPN, NAT, Proxy를 사용하지 않고 AWS에서 호스팅되는 서비스(AWS 서비스, Virtual appliance, 3rd party SaaS, VPC Resource 등)에 프라이빗하게 연결하는 서비스입니다.
- 일반적으로 AWS에서 호스팅 되는 서비스에 접근하기 위해서는 Internet Gateway를 경유해야합니다.
이때, 같은 Region 내에 존재하는 AWS에 액세스하는 경우, Internet Gateway를 경유하더라도 트래픽이 AWS 네트워크를 벗어나지는 않습니다.
즉, 인터넷 트래픽 비용이 발생하지 않습니다. - VPC Endpoint를 통해 전달되는 트래픽은 Amazon 네트워크를 벗어나지 않습니다.
- VPC Endpoint는 여러가지 타입을 제공합니다.
- VPC Endpoint는 PrivateLink를 사용하는 타입과 사용하지 않는 타입으로 구분됩니다.
PrivateLink란?
- PrivateLink란 VPC 외부의 서비스나 리소스지만 VPC 내부에 존재하는 것처럼 접근하는 방법입니다.
- PrivateLink를 사용하는 Endpoint는 만들면 VPC 내부에 프라이빗 IP를 가지는 ENI로 표현되고, 이를 통해 VPC 외부의 서비스나 리소스에 접근하게 됩니다.
- PrivateLink를 통해 전달되는 트래픽은 Amazon 네트워크를 벗어나지 않습니다.
- PrivateLink를 사용하는 VPC Endpoint 타입으로는 Interface, GatewayLoadBalancer, Resource, Service network가 있습니다.
Gateway는 PrivateLink를 사용하지 않습니다. - Consumer(소비자)는 VPC Endpoint를 생성하여 Provider(공급자)가 호스팅하는 엔드포인트 서비스 및 리소스에 연결합니다.
- PrivateLink는 항상 Cosumer에서 Provider로만 통신이 이루어지는 단방향 서비스입니다.
- Service의 Owner가 Service Provider이고, Service의 User가 Service Consumer입니다.
Service Provider는 AWS, AWS Partner, 다른 AWS 계정이 있습니다. - Service Provider(서비스 제공자)는 VPC Endpoint Service를 만들어 서비스를 제공합니다.
- Endpoint Service를 만들 때 Load Balancer(NLB 또는 GWLB)를 지정해야합니다. Load Balancer는 Service Consumer로부터 요청을 받아 트래픽을 라우팅합니다.
- 기본적으로 Endpoint Service는 Service Consummer에게 제공되지 않습니다. Endpoint Service에 연결할 수 있도록 권한을 부여해 주어야 합니다.
VPC Endpoint type - Gateway Endpoint
- Gateway Endpoint는 인터넷 게이트웨이나 NAT 장치 없이 S3와 DynamoDB에 대한 안정적인 연결을 제공합니다.
- Gateway Endpoint는 AWS PrivateLink를 사용하지 않습니다.
- Gateway Endpoint는 S3와 DynamoDB만 지원하고 Gateway Endpoint 사용에 따른 추가 요금은 없습니다.
- Gateway Endpoint는 S3와 DynamoDB가 사용하는 IP 주소들의 모음인 AWS-managed prefix를 Route Table에 등록하고 S3와 DynamoDB로 향하는 트래픽을 Gateway Endpoint로 전송하도록 동작합니다.
- Route Table에 모든 인터넷 트래픽(0.0.0.0/0)을 인터넷 게이트웨이로 보내는 경로가 있는 경우에도 longest prefix matching에 의해 Gateway Endpoint가 우선됩니다.
- Gateway Endpoint는 생성한 리전에서만 사용할 수 있습니다. S3 버킷과 DynamoDB 테이블과 동일한 리전에 Gateway Endpoint를 생성해야 합니다.
- S3 Bucket Policy 또는 DynamoDB Reousce based policy에서 버킷과 테이블에 접근가능한 VPC Endpoint(aws:sourceVpce) 방식으로 접근을 제어할 수 있습니다.
- Gateway Endpoint Connection은 VPC 밖으로 확장될 수 없습니다.
VPN, VPC Peering, Transit Gateway, Direct Connect로 연결되어 있는 VPC의 건너편 리소스는 Gateway Endpoint를 통해 S3 또는 DynamoDB에 접근할 수 없습니다. - Gateway Endpoint는 IPv4 트래픽만 지원합니다.
VPC Endpoint type - Interface Endpoint
- Interface Endpoint는 AWS 서비스, 자체 VPC Endpoint Service(your own service), Saas 제품(AWS Partner가 제공하는 서비스, Marketplace에서 구매한 서비스)에 접근할 때 사용합니다.
- Interface Endpoint는 PrivateLink를 사용합니다.
- Interface Endpoint는 VPC 안에 ENI로 생성되고 Private IP를 갖습니다.
- Interface Endpoint는 ENI가 생성되기 때문에 Security Group을 적용할 수 있습니다.
- Interface Endpoint를 만들면 Endpoint Serivce와 통신하는데 사용하는 Regional DNS name과 Zonal DNS name이 생성됩니다.
- Regional DNS name은 여러 AZ에 있는 Interface Endpoint의 Private IP 주소들을 반환하고, Zonal DNS name은 특정 AZ에 있는 Interface Endpoint의 Private IP만을 반환합니다.
- Regional DNS name은 트래픽을 분산시키는 효과가 있으나 AZ 간의 데이터 전송 비용이 발생합니다.
Zonal DNS name은 동일 AZ에서 데이터가 전송되기 때문에 AZ 간의 데이터 전송 비용이 발생하지 않고 지연 시간을 최소화 할수 있습니다. - AWS 서비스를 접근하기 위한 VPC Interface Endpoint에서는 Private DNS를 활성화하는 것이 좋습니다.
Private DNS를 활성화하면 AWS Public Service Endpoint(예를 들어, iam.amazonaws.com 또는 sqs.ap-northeast-2.amazonaws.com)로 향하는 요청이 VPC Interface Endpoint로 향하게 됩니다. - Private DNS를 사용하기 위해서는 VPC에서 DNS hostnames와 DNS resolution을 Enable 해야 합니다.
- Direct Connect 또는 VPN를 통해 온프레미스 애플리케이션에서도 Interface Endpoint에 접근할 수 있습니다.
Gateway Endpoint는 동일한 방법으로 접근할 수 없습니다. - Interface Endpoint는 프로비저닝 요금과 데이터 처리 요금이 부과됩니다.
VPC Endpoint type - GatewayLoadBalancer Endpoint
- GatewayLoadBalancer(GWLB)는 네트워크 트래픽을 가상 어플라이언스에 배포할 때 사용합니다.
- GatewayLoadBalancer Endpoint는 GatewayLoad Endpoint Service로 트래픽을 전달하기 위해 사용합니다.
- GatewayLoadBalancer Endpoint는 PrivateLink를 사용합니다.
- 트래픽을 GWLB Endpoint로 전달하려면 Route Table에서 GWLB Endpoint ID를 대상으로 지정해야 합니다.
- Service Consumer가 GWLB Endpoint를 생성하기 위해서는 Service Provider가 연결 요청을 수락해야 합니다.
VPC Endpoint type - Resource
- Resource Endpoint는 VPC 외부의 리소스에 접근하고자하는 경우에 사용합니다.
- Resource Endpoint를 사용하면 다른 VPC에 있는 RDS Instance, EC2 Instance, Domain name 뿐만 아니라 On-premise에 존재하는 서버 등으로 안전하게 액세스할 수 있습니다.
- Resource Endpoint는 로드밸런서를 사용하지 않고 다른 VPC에 존재하는 리소스에 직접 액세스할 수 있습니다.
- Resource Endpoint는 Resource Gateway를 통해 Resource에 접근합니다.
- Resource Endpoint를 생성하기 위해서는 AWS Resource Access Manager을 통해 다른 계정에서 공유하거나 직접 생성한 Resource Configuration이 있어야 합니다.
- Resource Endpoint는 PrivateLink를 사용합니다.
VPC Endpoint type - ServiceNetwork
- Service Network Endpoint는 Service Network에 연결된 리소스와 서비스에 접근하고자 하는 경우에 사용합니다.
- Service Network Endpoint를 사용하면 Service Network가 VPC에 연결되고, VPC 또는 Onpremise에서 Service Network에 연결된 리소스와 서비스에 접근할 수 있습니다.
- Service Network는 VPC Lattice Service의 논리적 집합입니다.
- Service Network Endpoint를 생성하기 위해서는 AWS Resource Access Manager을 통해 다른 계정에서 공유하거나 직접 생성한 Service Network가 있어야합니다.
- ServiceNetwork Endpoint는 PrivateLink를 사용합니다.
VCP Endpoint Security
- VPC Endpoint Policy는 VPC Endpoint에 연결되는 Resource-based Policy입니다.
- VPC Endpoint는 어떤 Principal(AWS Account, IAM Role 등)이 VPC Endpoint를 사용하여 Endpoint Service에 액세스할 수 있는지 결정합니다.
- 기본 VPC Endpoint Policy는 모든 Principal에 대해 모든 액세스 권한을 부여합니다.
- VPC Endpoint를 생성할 때 VPC Endpoint Policy를 지정하지 않으면 기본 Policy가 적용됩니다.
- PrivateLink를 기반으로하는 VPC Endpoint는 Security Group을 적용할 수 있습니다.
- VPC Endpoint를 통해 접근했지만, 접근이 안 되는 경우에는 Security Group, Network ACL, Principal의 IAM 권한, VPC Endpoint Policy, 리소스의 Resource-based policy를 확인해야 합니다.
반응형