VPC 엔드포인트
AWS PrivateLink
- VPC와 서비스 간에 프라이빗 연결을 제공하는 기술
인터넷을 통하지 않고 AWS 서비스에 프라이빗하게 연결할 수 있는 VPC의 집입점 제공
- 게이트웨이 엔드포인트
- 인터페이스 엔드포인트
- Gateway Load Balancer (GWLB) 엔드포인트
- VPC 내에 있는 애플리케이션 또는 서비스
- 다른 AWS 계정의 VPC Endpoint에서 엔드포인트 서비스(AWS PrivateLink)로 연결
VPC 엔드포인트 - 게이트웨이 엔 드포인트
- AWS S3와 DynamoDB에 대한 프라이빗 연결 제공 (단, 퍼블릭 IP 사용)
- 하나의 엔드포인트는 하나의 VPC에만 연결 가능
- 엔드포인트는 동일한 리전에서만 지원, VPC와 다른 리전의 서비스 간에 엔드포인트를 생성할 수 없음
- VPC간에 또는 서비스 간에 엔드포인트를 전송할 수 없음
- AWS 클라우드 안에 있는 백본 네트워크를 통해 엔드포인트로 접속
- VPC 엔드포인트는 다른 VPC와 통신할 수 있다.
VPC 엔드포인트 - 인터페이스 엔드포인트
- 서브넷의 IP 주소 범위에서 프라이빗 IP 주소를 사용하는 탄력적 네트워크 인터페이스
- 지원되는 AWS 서비스 또는 VPC 엔드포인트 서비스로 전달되는 트래픽에 대한 진입점 역할
- 엔드포인트는 동일한 리전에서만 지원, VPC와 다른 리전의 서비스 간에 엔드포인트를 생성할 수 없음
- VPC간에 또는 서비스 간에 엔드포인트를 전송할 수 없음
VPC 엔드포인트 - Gateway Load Balancer Endpoints
- Gateway Load Balancer Endpoint: 서비스 공급자(Provider) VPC의 가상 어플라이언스와 서비스 소비자(Consumer) VPC의 애플리케이션 서버 간에 프라이빗 연결을 제공
- 보안 검사 등을 위해 Gateway Load Balancer를 사용하여 구성한 서비스로 라우팅
- 인터넷 게이트웨이를 통해 서비스 소비자 VPC로 들어오는 모든 트래픽은 먼저 검사를 위해 Gateway Load Balancer Endpoint로 라우팅된 다음 Application Server로 라우팅
- Application Server에서 나가는 모든 트래픽은 다시 인터넷으로 라우팅되기 전에 검사를 위해 Gateway Load Balancer 엔드포인트로 라우팅
VPC 실습
-
한 VPC 안에 퍼블릭 서브넷에 위치한 EC2(Windows) 생성, 프라이빗 서브넷에 위치한 EC2(Linux) 생성
-
퍼블릭 인스턴스의 보안 그룹은 RDP 프로토콜, 내 IP로 제한하고 프라이빗 인스턴스의 보안 그룹은 퍼블릭 인스턴스에서 프라이빗 인스턴스로 접속할 것이기 때문에 SSH 22번, 생성된 퍼블릭 인스턴스의 프라이빗 IP로 제한하여 허용한다.
NACL이나 보안그룹을 생성할 때는 최소한의 권한만을 부여한다.
- 내 컴퓨터 -> 퍼블릭 인스턴스(Windows) -> 프라이빗 인스턴스(Linux)
만약 프라이빗 인스턴스의 보안그룹에 퍼블릭 인스턴스의 퍼블릭 IP를 할당하게 되면 접속이 불가능하다. 프라이빗 인스턴스는 인터넷과 연결이 되어있지 않기 때문에 인터넷으로 들어오는 IP(파블릭 IP)는 접속 불가능하기 때문이다. 따라서 로컬(VPC)안에서만 통신 가능한 프라이빗 IP를 부여해야 한다.
- 프라이빗 서브넷 NACL의 인바운드 및 아웃바운드 규칙은 22번 포트로 퍼블릭 서브넷에 위치한 인스턴스의 프라이빗 IP만 허용한다.
- 퍼블릭 인스턴스에 접속한 후 Putty를 설치하고 PuttyGen 프로그램을 통해 .pem을 .ppk로 변환한다.
Putty 접속
- Connection - SSH - Auth - Browse를 클릭하여 변환한 키페어를 선택
- Connection - data - Auto Login username: ec2-user
- Session으로 이동하여 프라이빗 인스턴스의 프라이빗 IP를 입력하여 프라이빗 인스턴스에 접속
- 어드민 권한을 가지고 있는 IAM User 생성
- command:
aws configure
액세스키, 비밀키, 리전, 반환타입 입력 aws configure list
로 입력 내용 확인aws s3 ls
무응답 확인- VPC 엔드포인트 생성
VPC 엔드포인트
- 서비스 업무: AWS 서비스
com.amazonaws.ap-southeast-1.s3
Gateway
선택- VPC 선택
- 라우팅 테이블 연결 (프라이빗 서브넷에 연결된 라우팅 테이블)
- 정책: 모든 액세스 (VPC 엔드포인트에 적용되는 정책)
- S3 버킷 정책을 수정하여 특별한 엔드포인트만 접속하도록 할 수 있다.
- aws s3 ls 실행
- s3 리스트 확인
프라이빗 서브넷 안에 있는 프라이빗 인스턴스는 라우팅 테이블을 통해 VPC 엔드포인트로 연결이 되고 Destination의 접두사 목록(prefix list)의 항목에 존재하는 CIDR 중 하나의 IP로 연결되어 S3 서비스를 이용할 수 있게 된다.
VPC 엔드포인트를 생성하면 적용된 라우팅 테이블의 Destination에 접두사 목록이 추가된 것을 확인할 수 있는데 접두사 목록에는 VPC를 처음 생성할 때 자동으로 생성된 접두사 목록이며 이 접두사 목록에 S3가 추가되어 항목에 AWS에서 사용하는 S3의 모든 CIDR 대역이 포함되어 있다. 따라서 VPC 엔드포인트를 통해 S3 서비스에 연결하게 되면 접두사 목록 항목에 존재하는 IP를 통하게 된다.
Amazon VPC 엔드포인트로 비용 절감 및 보안 강화
VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 디바이스, VPN 등이 없어도 AWS에 프라이빗으로 연결할 수 있습니다. 엔드포인트는 수평적으로 확장이 가능하며 가용성이 높은 VPC 가상 장치입니다. 네트워크 트래픽에 가용성 위험이나 대역폭 제약을 부과하지 않고 VPC의 인스턴스와 서비스간의 통신을 허용합니다.
VPC 엔드포인트를 사용하면 프라이빗 VPC 리소스(EC2 인스턴스)와 AWS 서비스 간의 네트워크 통신으로 인한 데이터 전송 요금을 줄일 수 있습니다. VPC 엔드포인트가 구성되어 있지 않다면 퍼블릭 AWS 서비스로 향하는 VPC 내에서 시작된 통신은 AWS 서비스에 액세스하기 위해 AWS를 퍼블릭 인터넷으로 송신해야 합니다.
이 네트워크로 진행할 시 아웃바운드 데이터 전송 요금이 발생합니다. Amazon EC2에서 인터넷으로 나가는 트래픽에 대한 데이터 전송 요금은 볼륨에 따라 다릅니다. 첫 1GB 이후에는 GB당 0.126 달러(Seoul)의 요금이 부과됩니다.
VPC 엔드포인트를 구성하면 VPC와 AWS 서비스 간의 통신이 Amazon 네트워크를 벗어나지 않기 때문에 아웃바운드 요금이 부과되지 않습니다. VPC와 AWS간에 많은 양의 데이터를 전송해야 하는 상황이라면 VPC 엔드포인트를 활용하여 비용을 줄일 수 있습니다.