작년에 gasida님의 쿠버네티스 네트워킹 스터디에 참여하고, AWS 보안에 대한 두번째 스터디입니다.
다른 스터디에도 참여하고 싶었지만 빠른 마감 때문에 오랜만에 gasida님의 스터디에 참여하게 되었습니다.
그러면 gasida님의 AHSS 스터디 내용을 정리해 보겠습니다.
Amazon S3 (Simple Storage Service)는 아마존 웹 서비스(AWS)에서 제공하는 객체 스토리지 서비스입니다. 사용자는 웹 인터페이스를 통해 어떠한 종류의 데이터라도 저장하고 검색할 수 있으며, 이는 고가용성과 확장성을 보장합니다. S3는 웹 애플리케이션, 백업 및 복원, 아카이브, 빅 데이터 분석 등 다양한 용도로 널리 사용됩니다. AWS에서 SQS 서비스와 S3는 가장 오래된 서비스이며, S3는 AWS의 데이터레이크와 같은 구성에서 중요한 서비스입니다.
S3 접근 통제 방법은 아래와 같이 크게 5개가 있습니다.
5가지 설정 중에 어떤 부분이라도 deny가 있다면, 그 부분이 우선됩니다.
계정 전체에 적용되는 설정입니다.
전반적으로 적용되는 가장 큰 단위부터 설정을 진행하는 것이 좋습니다.
ACL(Bucket Access Control List)을 사용해서 특정 객체나 버킷에 대한 미세 조정된 접근 권한을 설정할 수 있습니다.
버킷 레벨에서 복잡한 접근 규칙을 JSON 형태로 설정할 수 있습니다.
버킷 정책에서 사용한 json 형식처럼 IAM 사용자나 그룹에 대한 접근 권한을 세밀하게 제어할 수 있습니다.
정책 부분이 아닌 다른 방법으로 보안을 강화하는 방법에 대해 설명이 가능합니다.
Amazon S3의 Pre-Signed URL은 특정 버킷의 객체에 대한 일시적인 접근 권한을 부여하는 URL입니다. 이 URL을 사용하면, 권한이 없는 사용자도 잠시동안 해당 객체를 다운로드하거나 업로드할 수 있습니다.
아래와 같이 일반적인 접근은 에러가 발생하지만, Presigned URL을 통한 접근은 정상적으로 가능합니다.
Bucket Policy를 사용하면 아래와 같이 CloudFront의 Origin Access Identity (OAI)를 통해 S3 버킷 같은 오리진에 대한 안전한 접근을 위한 특별한 자격 증명을 생성하고, 일반 사용자는 S3 버킷에 직접 접근할 수 없으며, 오직 CloudFront를 통해서만 리소스에 접근 가능합니다.