목차
개요
•
인터넷을 통하지 않고 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
복사