이것이 점프 투 공작소

AWS S3 Gateway Endpoint, Interface Endpoint를 이용하여Private하게 접속하기 본문

aws

AWS S3 Gateway Endpoint, Interface Endpoint를 이용하여Private하게 접속하기

겅겅겅 2023. 11. 4. 20:39

S3는 기본적으로 Public리소스라서 Private하게 접근하려면 VPC엔드포인트를 이용하여 접근해야합니다.

Gateway Endpoint, Interface Endpoint 2가지 방법으로 Private하게 접속 할 수 있습니다.

 

Interface Endpoint 와 Gateway Endpoint

2가지 방법으로 S3와 private한 연결을 만들 수 있습니다.

두 Endpoint모두 S3와 Private하게 통신을 할 수 있는 방식이지만 몇가지 차이점이 있습니다.

대표적으로는 Interface Endpoint는 On-Prem등 외부 접속을 허용하고, Gateway Endpoint는 허용하지 않는 차이점이 있습니다.

Interface Endpoint란?

예전에는 S3에 private하게 접속하려면 Gateway Endpoint만을 사용해야했지만, 지금은 interface Endpoint로도 접속이 가능합니다.

On-Prem, 다른 Region 등 외부 리소스와 통신할때 주로 사용됩니다.

SG를 사용하여 접근을 제한 할 수 있습니다.

Interface Endpoint 생성 

범주는 AWS서비스, 서비스 이름에서는 Interface유형의 com.amazonaws.ap-northeast-2.s3을 선택합니다.

추가로 Interface Endpoint가 생성될 VPC, Subnet, 보안그룹, 엑세스 정책이 필요합니다.

Interface Endpoint의 도메인

만들어진 Endpoint의 상세 페이지에서 도메인을 확인 할 수 있는데

해당 도메인을 통해 S3로 Private하게 접속 할 수 있습니다.

이 주소를 통해 외부 (On-Prem, 다른 Region)에서 접속이 가능합니다.

Interface Endpoint로 private하게 접속하기

Interface Endpoint가 생성되면 만들어진 도메인 주소로 nslookup해서 확인해보면

PrivateIP를 확인 할 수 있습니다.

추가로 아래 2가지 방법으로 Private하게 통신이 가능합니다.

1. URL로 접속하기 : https://bucket.<interface-endpoint 도메인>/버킷명/S3 데이터 Prefix

2. cli로 접속하기 : aws s3 --endpoint-url <interface-endpoint 도메인> <S3 cli 명령어>

 

Gateway Endpoint란?

Interface Endpoint와 다르게 On-Prem을 포함한 VPC외부의 접속과 다른 Region에서의 접속을 허용하지 않습니다.

생성 시 VPC내부의 Routing Table의 규칙이 만들어집니다.

IAM 같은 정책을 사용하여 리소스를 제한합니다.

Gateway Endpoint 생성

서비스에서 Gateway유형의 서비스를 생성합니다.

Interface Endpoint는  VPC, 엑세스 정책이 필요합니다. Subnet이 아닌 VPC에 지정되는 리소스이며 SG를 사용하지 않습니다.

Gateway Endpoint로 private하게 접속하기

생성이 성공하면 서브넷의 라우팅 테이블에 라우팅이 추가되고,

Interface Endpoint와 다르게 nslookup을 통해 S3를 질의하여도 privateIP를 확인할수는 없지만

VPC 내부에서 통신 시 IGW가 아닌 VPC의 Gateway Endpoint를 통해 private하게 통신 할 수 있습니다.

 

실제로 S3의 PublicIP를 이용하여 traceroute를 진행해보면 모두 마스킹 된 값이지만

IGW나 NAT를 타고 나가는 기록은 보이지 않습니다.