블록체인
블록체인

VPC Endpoint

목차

개요

인터넷을 통하지 않고 VPC 프라이빗 네트웍을 통해 AWS 서비스끼리 연결하는 서비스
인터넷게이트웨이 , NAT 게이트 웨이 등이 필요없음
인터넷을 통하지 않기에 보안강화
[참고] 보통은 VPC에서 AWS 퍼블릭 서비스와 통신을 할 때 퍼블릭 네트워크(IGW를 통해)를 통해 통신하는데, 금융 서비스처럼 강력한 보안 요건을 만족하기 위해서는 격리된 프라이빗 서브넷에 자원이 생성되어야 하며, 이 경우 퍼블릭 네트워크를 통해 통신이 불가능하기 때문에 AWS 퍼블릭 서비스과 통신하기 위해 VPC 엔드포인트 기능을 제공
Ex) S3라는 AWS 스토리지 서비스에 대해 VPC에서 접근을 하려고 할 때 인터넷 게이트웨이나 NAT 게이트웨이를 통해 외부 인터넷으로 접근하는 방식이 아닌 VPC 엔드포인트 기능을 통해 AWS 내부의 프라이빗 연결이 가능

특징

1.
보안 강화 : 프라이빗 연결을 통해 외부 구간으로 노출이 되지 않음
2.
서비스 제약 : 연결 대상 서비스는 동일 리전에 속한 서비스만 가능
3.
VPC 종속 : 오직 VPC 하나에만 연결 가능
4.
권한 제어 : IAM 기능을 통해 정책을 수립하여 VPC 엔드포인트에 대한 권한 부여가 가능

엔드포인트 유형

1. 엔드포인트

AWS 퍼블릭 서비스 대상에 대한 프라이빗 연결

인터페이스 엔드포인트

프라이빗 IP 주소를 지정해 통신하는 방식 대부분의 AWS 서비스에 적용
PrivateLink를 통해 실행되며, ENI(탄력적 네트워크 인터페이스)를 서비스 트래픽의 진입점으로 사용

게이트웨이 엔드포인트

IP 주소없이 라우팅 테이블을 지정하여 바로 연결하는 방식 (DynamoDB, S3 만 지원)
서비스 트래픽에 대한 라우팅 테이블의 라우팅 대상 역할을 함

2. 엔드포인트 서비스

사용자가 지정한 서비스 대상에 대한 프라이빗 연결
[참고] 프라이빗 링크 : 인터페이스 엔드포인트와 엔드포인트 서비스를 통한 연결

PrivateLink

개별 서비스와 VPC 간의 프라이빗 연결
Network Load Balancer( 공급자 VPC) 와 ENI(Elastic Network Interface( 고객사 VPC) 연결
VPC Peering, 인터넷 게이트웨이 , NAT 게이트웨이 , 라우팅 테이블이 없어도 됨
연결을 원하는 서비스만 지정하여 연결을 하기에 원하지 않는 다른 리소스가 노출되지 않음

[실습] 게이트웨이 엔드포인트

S3서비스와 통신이 되도록 구성
1. CloudFormation으로 실습환경 구성
2. 퍼블릭 EC2와 프라이빗 EC2에서 S3서비스의 DNS 주소로 통신 테스트
ping s3.ap-northeast-2.amazonaws.com
YAML
복사
퍼블릭 EC2 : 가능
프라이빗 EC2 : 불가능
3. 게이트웨이 엔드포인트 생성
S3 서비스 지정
퍼블릭 라우팅테이블, 프라이빗 라우팅테이블 선택(선택하면 자동으로 해당 라우팅 테이블에 S3서비스에 대한 경로가 생성 - 대상 : S3, 타깃 : VPC 게이트웨이 앤드포인트)
4. 퍼블릭 EC2와 프라이빗 EC2에서 S3서비스의 DNS 주소로 통신 테스트
ping s3.ap-northeast-2.amazonaws.com
YAML
복사
퍼블릭 EC2 : 가능
프라이빗 EC2 : 가능

[실습] 인터페이스 엔드포인트

CloudFormation 서비스와 통신이 되도록 구성
인터페이스 엔드포인트는 가상 네트워크 인터페이스 형식으로 프라이빗 서브넷 내에 배치되어 있음
1. 퍼블릭 EC2와 프라이빗 EC2에서 CloudForamtion으로 통신 테스트
dig +short cloudformation.ap-northeast-2.amazonaws.com 52.95.193.155
YAML
복사
dig라는 명령어를 통해 CloudFormation DNS 주소에 대한 IP주소 확인이 가능(현재 CloudFormation DNS 주소는 퍼블릭 IP 주소로 매핑되어 있어 외부 인터넷 구간을 통하여 통신하는 환경)
퍼블릭 EC2 : 가능
프라이빗 EC2 : 불가능
2. DNS 호스트 이름 활성화
모든 DNS 호스트가 인터페이스 엔드포인트를 통해 프라이빗 통신을 하도록 설정
[참고]
기본적으로 AWS 서비스는 리전별로 기본 DNS 호스트 주소를 가지고 있으며, VPC 인터페이스 엔드포인트를 생성하면, 엔드포인트 전용 DNS 호스트가 생성
DNS 주소들은 인터페이스 엔드포인트의 설정 값 중에 ‘프라이빗 DNS 활성화’ 설정 여부에 따라 통신 흐름이 달라짐
1. 프라이빗 DNS 비활성화
기본 DNS 호스트 : 인터넷 구간을 통한 퍼블릭 통신
엔드포인트 전용 DNS 호스트 : 인터페이스 엔드포인트를 통한 프라이빗 통신
2.
프라이빗 DNS 활성화
기본 DNS 호스트 : 인터페이스 엔드포인트를 통한 프라이빗 통신
엔드포인트 전용 DNS 호스트 : 인터페이스 엔드포인트를 통한 프라이빗 통신
3. 인터페이스 엔드포인트 생성
CloudFormation 서비스 지정
퍼블릭 라우팅테이블, 프라이빗 라우팅테이블 선택
프라이빗 DNS 이름 활성화 체크
보안 그룹 선택
⇒ 생성 후 DNS 주소 확인
기본 DNS는 동일한 형태이지만 엔드포인트 전용 DNS 호스트는 개별적으로 다른 형태이니 각자의 주소를 복사
4. 퍼블릭 EC2와 프라이빗 EC2에서 CloudFormation서비스의 DNS 주소로 통신 테스트
dig +short cloudformation.ap-northeast-2.amazonaws.com 10.0.0.65 10.0.1.237 dig +short vpce-007e8146bd4d94c32-3k6b7pvq.cloudformation.ap-northeast-2.vpce.amazonaws.com 10.0.0.65 10.0.1.237
YAML
복사
퍼블릭 EC2 : 가능
프라이빗 EC2 : 가능
[번외] 프라이빗 DNS 이름을 비활성화환다면?
아래와 같이 퍼블릭 EC2와 프라이빗 EC2에서 CloudFormation서비스의 DNS 주소로 통신 테스트
dig +short cloudformation.ap-northeast-2.amazonaws.com 52.95.193.155 dig +short vpce-007e8146bd4d94c32-3k6b7pvq.cloudformation.ap-northeast-2.vpce.amazonaws.com 10.0.0.65 10.0.1.237
YAML
복사
프라이빗 DNS 이름 비활성화’에 의해 기본 DNS 호스트는 퍼블릭 IP로 퍼블릭 통신을 하고, 엔드포인트 전용 DNS 호 스트는 프라이빗 IP로 프라이빗 통신

[실습] 엔드포인트 서비스로 프라이빗 링크구성

사용자가 생성한 VPC와 프라이빗 연결
1. CloudFormation으로 실습환경 구성
2. My-EC2에서 Custom-NLB DNS IP 주소 확인 및 웹 접근 확인
인터넷 구간을 통해 통신하는 것 확인
dig +short test-Custo-1XTLMO9QYUGOJ-1bca696e17248dba.elb.us-east-1.amazonaws.com 54.167.149.195 curl test-Custo-1XTLMO9QYUGOJ-1bca696e17248dba.elb.us-east-1.amazonaws.com <html><h1>Endpoint Service Lab - CloudNeta Web Server 1</h1></html>
YAML
복사
3. 엔드포인트 서비스 생성
CustomVPC에 존재하는 NLB연결
4. 인터페이스 엔드포인트 생성
MyVPC에 인터페이스 엔드포인트를 생성하여 연결
엔드포인트 서비스 이름 입력
VPC(MyVPC), 서브넷 선택
보안그룹 선택
5. 엔드포인트 서비스에서 인터페이스 엔드포인트 요청 수락
6. My-EC2에서 생선한 엔드포인트의 DNS IP 주소 확인 및 웹 접근 확인
MyVPC의 인스턴스에서 CustomVPC의 웹 서버로 엔드포인트를 통해 접근되는 것을 확인
[ec2-user@ip-10-0-0-247 ~]$ dig +short vpce-0db4990925fdb5a8d-tdjvh2z1.vpce-svc-0057da316bfac556a.us-east-1.vpce.amazonaws.com 10.0.0.218 [ec2-user@ip-10-0-0-247 ~]$ curl vpce-0db4990925fdb5a8d-tdjvh2z1.vpce-svc-0057da316bfac556a.us-east-1.vpce.amazonaws.com <html><h1>Endpoint Service Lab - CloudNeta Web Server 1</h1></html>
Bash
복사