Restrict Access to a S3 VPC Endpoint - AHSS 도전과제

dawon·2023년 9월 10일
0
post-thumbnail

s3는 aws에서 가장 오래된 서비스이며 필수적으로 사용하는 리소스라고 생각합니다.
해당 리소스를 퍼블릭으로 직접 접근 혹은 CloudFront를 통해 접근하는 경우가 많지만 애플리케이션과 같은 aws 내부 리소스만 접근이 가능하도록 설정이 필요한 경우가 많습니다. 그런 경우에 s3를 VPC 엔드포인트를 통해 접근이 가능하도록 설정할 수 있습니다. 이것은 공용망을 거치지 않고 전용망을 통해 접근하기 때문에 안정적(속도, 보안 등)인 환경 구성이 가능합니다.
그러면 그런 환경을 구성하는 방법에 대해서 가이드를 작성해 보겠습니다.


구성

1) 아래와 같은 조건의 VPC, EC2, S3를 준비합니다.

  • VPC: Internet Gateway가 없는 VPC를 준비합니다. 아래와 같이 IGW만 잠시 VPC에서 분리하는 것이 가능합니다.

  • EC2: 해당 VPC 내에 EC2를 구성합니다.

  • S3: 아래와 같이 퍼블릭 접근 설정을 하지 않은 S3를 생성하고, 해당 버킷에 확인할 객체를 업로드합니다.

2) 로컬과 EC2에서 해당 객체 URL에 접근해보면, 퍼블릭 설정이 없기 때문에 AccessDenied가 확인됩니다.


3) EC2에서만 프라이빗 망을 통해 S3에 접근이 가능하도록 VPC 엔드포인트 설정을 아래와 같이 진행합니다.
VPC 서비스에서 엔드포인트 생성을 선택합니다.

s3 서비스를 검색하고, 유형은 gateway를 선택하며 연결할 vpc를 선택합니다.
또한 해당 ec2가 위치한 서브넷의 라우팅 테이블을 선택해서 EC2에서 s3 엔드포인트까지 라우팅을 통해 접근이 가능하도록 설정합니다. 정책은 전체 액세스로 선택해서 해당 vpc에 모든 리소스에서 접근이 가능하도록 설정합니다.

4) 엔드포인트를 연결한 이후에는 아래와 같이 EC2에서 접근이 가능합니다.

5) 아래와 같은 정책을 S3 버킷에 설정하면 EC2에서만 권한 및 접근이 가능합니다.

admin 권한을 갖고 있어도 삭제와 같은 권한 및 접근이 차단됩니다.
하지만 admin 권한으로 정책 삭제가 가능하기 때문에 삭제를 진행하면 접근이 가능합니다.

6) 마지막으로 엔드포인트 정책에서 아래와 같이 특정 버킷만 접근이 가능하도록 설정하면 다른 버킷에는 접근이 차단됩니다.

아래와 같이 차단되는 것이 확인됩니다.

정리

VPC 엔드포인트를 활용하면 프라이빗 환경의 EC2에서 S3에 내부 망을 통한 접근이 가능하도록 설정할 수 있습니다.
또한 S3 policy, VPC Endpoint policy를 통해 특정 버킷 및 대상에 대해서만 접근 및 권한 제어가 가능합니다.
그렇기 때문에 상황에 맞는 최소한의 권한에 대해서만 설정을 한다면 미리 보안 사고를 예방하는데 도움이 될 것이라고 생각합니다.

0개의 댓글