이전 글에 이어 버킷 policy로 S3를 공개로 설정하는 편을 설명합니다.
▶ 이전 글 링크: https://malwareanalysis.tistory.com/643
→ 스터디 소개 글
이 글은 가시다님이 운영하는 AWS 보안스터디(ahss)를 정리한 글입니다. 이 글 이외에 다른 스터디 정리 글을 보고 싶으신 분은 아래 목차를 참조해주세요!
- 게임으로 배우는 AWS S3(부제 S3 game): https://malwareanalysis.tistory.com/640
- S3 공개(public) 설정 - ACL 설정편: https://malwareanalysis.tistory.com/643
- S3 공개(public) 설정 - 버킷 policy 설정편: https://malwareanalysis.tistory.com/644
→ 이 글은 유투브 영상으로도 볼 수 있습니다.
1. 버킷 policy란?
버킷 policy는 리소스에 policy를 설정하는 방법입니다. ACL 설정방법과 다른점은, ACL는 파일마다 일일이 공개 설정해야 했는데, policy는 패턴을 사용하여 복수 파일을 지정 가능합니다. 또한 policy는 요청자를 AWS 리소스로 필터링 할 수 있습니다.
2. 전제조건
이전 글에서 설명한 것처럼 버킷은 퍼블릭 액세스 요청이 허용되어 있어야 합니다.
버킷 [Permission -> Block public access] 메뉴에서 Edit버튼을 클릭합니다.
Block all public access 체크박스를 해제합니다.
퍼블릭 액세스가 off로 되어 있는지 확인합니다.
3. 버킷 policy설정
버킷 policy를 설정하여 객체를 공개로 변경합니다.
버킷 policy는 [Permissions -> Bucket policy]메뉴에서 Edit버튼을 클릭하여 설정합니다.
설정할 policy는 Policy generator로 생성합니다.
policy를 생성하기 위해 아래 그림처럼 입력합니다. 적용할 policy는 GetObject이고 ③에 설정합니다. ④번에 policy를 적용할 버킷 arn을 입력해야 하는데 총 2개 버킷 arn을 입력합니다. 버킷 모든 객체에 적용하기위해 "*"를 추가로 입력했습니다.
arn:aws:s3:::{버킷이름},arn:aws:s3:::{버킷이름}/*
Add Statement버튼과 Generate Policy버튼을 차례대로 누르면 policy가 생성됩니다. 생성된 policy를 복사합니다.
복사한 policy를 버킷 policy설정에 붙여넣습니다.
4. 테스트
버킷 파일을 누구나 접근할 수 있는지 확인해보겠습니다.
텍스트 파일을 만들고 버킷에 업로드 합니다. 텍스트 파일내용은 hello world로 했습니다.
버킷에 파일을 업로드하면 외부에서 접근가능한 주소가 생성됩니다. 접근 주소는 파일 상세정보에 있습니다.
복사한 주소를 웹 브라우저에 접속하면 파일내용이 잘 보입니다.
5. 보너스 테라폼 코드
이 글에서 콘솔로 설정한 내용을 그대로 테라폼 코드로 변경했습니다. 코드는 저의 github에 공개되어 있습니다.
▶ 링크: https://github.com/choisungwook/terraform_s3_public/tree/main/using_bucket_policy
'연재 시리즈' 카테고리의 다른 글
Ansible 소개 (1) | 2024.01.09 |
---|---|
게임으로 배우는 AWS IAM(부제목: bigiamchallenge) (0) | 2023.09.03 |
S3 공개(public) 설정 - ACL 설정편 (0) | 2023.09.02 |
테라폼 t102 스터디 - state (0) | 2023.07.29 |
테라폼 t102 스터디 - 프로비저너(provisioner) (0) | 2023.07.22 |