VPC Endpoints
- Amazon DynamoDB를 서비스라고 할 때 공용 웹을 통해 인스턴스는 DynamoDB로 직접 액세스가 가능
공용 서브넷에 있는 EC2 인스턴스는 인터넷 게이트웨이와 통신이 가능하고
인터넷 게이트웨이는 요청을 DynamoDB의 엔드 포인트로 라우팅
사설 인스턴스를 원한다면 NAT Gateway를 통해 인터넷 게이트웨이를 거쳐 DynamoDB로 액세스 - 사설 인스턴스 대신 사설로 액세스하기 위한 VPC 엔드 포인트 방법이 존재
- VPC 엔드 포인트는 VPC 내의 사설 엔드 포인트로 AWS 서비스로의 사설 연결을 할 수 있게 해줌
아래의 경우 사설 서브넷에서 EC2 인스턴스는 VPC 엔드 포인트를 쓰는 EC2, CloudWatch, S3 등 어디든 연결이 가능하므로
공용 인터넷을 거치지 않고 연결할 수 있음
VPC Endpoints (AWS PrivateLink)
- VPC 엔드 포인트는 사설 링크라고도 불리며 사설 링크에 의해 제공됨
- SNS에 액세스하는 두 가지 방법
1) NAT Gateway
2) VPC 엔드 포인트 - 사설 서브넷에서 NAT Gatway를 거쳐 인터넷 게이트웨이를 간 후 SNS로 이동하면
NAT Gateway는 시간당 비용을 지불하며 전부 공용 인터넷을 통하기 때문에 비용이 적게 드나 성능이 최고치가 아님 - VPC 엔드 포인트를 만들어 EC2 인스턴스를 연결한 후 SNS까지 연결하면 AWS의 사설 네트워크에 트래픽이 유지되며
VPC 엔드 포인트는 공용 인터넷을 사용하지 않고 사설 네트워크를 통해 서비스에 연결되므로
수평적 스케일링을 하는 공용 인터넷과 달리, 스케일링을 고려하지 않아도 됨
또한 액세스할 때 인터넷 게이트웨이나 NAT Gateway도 더이상 필요하지 않아서 비용이 절감됨
반면 VPC 엔드 포인트에서 생길 문제를 대비해 VPC 내의 DNS 설정 해상도가 활성화 상태와 VPC의 테이블을 확인해야 함
Types of Endpoints
- AWS에는 두 가지 타입의 엔드 포인트가 존재
- Interface EndPoints
ENI(Elastic Network Interface)를 프로비저닝하며
ENI의 IP 주소는 사설이며 이 IP 주소는 AWS 서비스로의 엔트리 포인트가 됨
ENI라서 보안 그룹을 연결하면 ENI가 대부분의 AWS 서비스를 지원
예) SNS가 있을 때
인터페이스 타입의 VPC 엔드 포인트를 생성하고 사설 서브넷에 ENI를 생성하면
EC2 인스턴스는 ENI에 연결이 가능하고 보안 그룹 규칙이 허용하면 ENI에서 SNS로 보내지게 됨
보안 그룹을 이용하기 때문에 SNS에 액세스하기 위한 보안 그룹을 제어할 수 있는지만 확인하면 됨
- Gateway Endpoints
라우팅 테이블에서는 대상으로 사용해야 하기 때문에 게이트웨이를 프로비저닝하며 S3와 DynamoDB를 지원함
VPC 엔드 포인트가 사설 서브넷에서 라우팅되어 S3나 DynamoDB로 가야함
<VPC Endpoint 실습>
- VPC 엔드포인트 전 인터넷 연결 막기
BastionHost에서 사설 EC2 인스턴스로 SSH 명령을 하여 이동할 수 있음
이 후 S3에 액세스하기 위해 인스턴스 역할에 AmazonS3ReadOnlyAccess 정책이 담긴 DemoRoleEC2-S3ReadOnly를 생성
그리고 다시 SSH로 돌아와서 aws s3 ls를 입력하면 계정의 버킷 네 개에 대한 답이 표시되게 됨
그리고 curl google.com을 입력하면 NAT Gateway를 통해 인터넷에 연결되어 있음을 알 수 있음
다음으로 사설 서브넷의 라우팅 테이블에 와서 라우팅의 NAT Gateway를 수정하여
EC2 인스턴스가 인터넷에 액세스하지 못하도록 0.0.0.0/0을 막으면 aws s3 ls와 curl이 동작하지 않음
- VPC 엔드포인트 생성을 통해 S3에 비공개 연결
VPC 엔드 포인트를 통해 S3에 비공개로 연결하기 위해 VPC 엔드 포인트를 생성
예로 Athena를 선택할 경우 이는 인터페이스 엔드 포인트에 해당하므로 서브넷 몇 개가 필요하며 서브넷당 각 ENI가 생성됨
다음으로 VPC 엔드 포인트에 보안 그룹을 지정해서 ENI를 통해 VPC 엔드 포인트 액세스를 제어
이번 실습에서는 엔드 포인트 생성이 가능한 서비스중에서 S3로 향하는 게이트웨이 엔드 포인트에 대한 게이트웨이를 사용
그러면 S3를 위한 게이트웨이에 대한 목적지가 생성되고 라우팅 테이블도 바로 수정되게 됨
그리고 DemoVPC를 선택하고 엔드 포인트와 연결된 라우팅 테이블 중 사설 라우팅 테이블을 선택하여 연결하도록 함
이후 규칙이 생성되면 엔드 포인트를 생성
게이트웨이 엔드 포인트의 라우팅 테이블을 확인해보면 사설 라우팅 테이블과 서브넷 두 개가 연결된 것을 볼 수 있음
다음으로 PrivateRouteTable을 확인하고 라우터에 접속하면 라우터 두 개가 있고 하나가 추가된 것을 알 수 있음
추가된 pl-6ea54007 규칙은 VPC 엔드 포인트를 대상으로 하며 대상은 S3와 관련된 여러 목적지가 될 수 있음
그리고 엔드 포인트 인터페이스가 생성하고 관리하기 때문에 여기서 삭제와 변경을 할 수 없음
- VPC 엔드포인트 연결 확인
하지만 여전히 s3 ls를 시도해봐도 작동하지 않는데
이는 CLI가 기본적으로 us-esat-1 리전을 사용하기 때문인데 VPC 엔드포인트는 S3와 eu-central-1에 해당함
그러므로 리전을 수정하여 트래픽이 VPC 엔드 포인트를 지나가도록 하면 바로 S3 버킷의 목록을 얻을 수 있음
이렇게 VPC 엔드 포인트를 통해 AWS 서비스에는 비공개로 액세스할 수 있도록 함
'Cloud > AWS' 카테고리의 다른 글
[SAA] 사이트 간 VPN, 가상 사설 Gateway 및 고객 Gateway (0) | 2022.04.27 |
---|---|
[SAA] VPC Flow 로그 (0) | 2022.04.27 |
[SAA] VPC 피어링 (0) | 2022.04.27 |
[SAA] VPC 연결성 분석기 (0) | 2022.04.27 |
[SAA] DNS 확인 옵션 및 Route 53 프라이빗 영역 (0) | 2022.04.27 |