연재 시리즈

S3 공개(public) 설정 - ACL 설정편

악분 2023. 9. 2. 19:27
반응형

 

→ 스터디 소개 글

더보기

이 글은 가시다님이 운영하는 AWS 보안스터디(ahss)를 정리한 글입니다. 이 글 이외에 다른 스터디 정리 글을 보고 싶으신 분은 아래 목차를 참조해주세요!

 

→ 이 글은 유투브 영상으로도 볼 수 있습니다.

 

1. S3 공개설정과 위험성

S3는 디폴트 설정으로 공개설정을 비허용합니다. 

 

S3 공개설정은 S3에 업로드 된 파일을 파일 소유자가 아닌 다른 사람이 볼 수 있어, 데이터 유출사고 가능성이 높아집니다.

  ▶ 보안사고 사례1: https://www.asiatime.co.kr/article/20220707500294

  ▶ 보안사고 사례2: https://m.boannews.com/html/detail.html?mtype=1&idx=108196

 

AWS는 S3 공개설정으로 보안 사고를 줄이기 위해. 23년 4월부터 생성한 S3는 공개설정을 비허용하고 ACL를 비활성화했습니다.

▶ 출처: AWS 한국 블로그

 

2. 공개설정 방법

부득이하게 S3를 공개설정하려면 2단계 과정이 필요합니다.

  ▶ 1단계 버킷 퍼블릭 액세스 허용

  ▶ 2단계 버킷 객체를 공개로 변경

 

2.1 1단계: 퍼블릭 액세스 허용

1단계는 버킷 퍼블릭 액세스 허용을 활성화합니다.

 

버킷 [Permission -> Block public access] 메뉴에서 Edit버튼을 클릭합니다.

 

Block all public access 체크박스를 해제합니다.

 

퍼블릭 액세스가 off로 되어 있는지 확인합니다.

 

2.2 2단계: 버킷 객체를 공개로 변경

버킷이 공개되었으므로 버킷 객체를 공개로 변경해야 합니다.

 

버킷 객체를 공개로 변경하려면 ACL를 활성화하거나 버킷 policy를 설정해야 합니다. AWS문서에서 설명하는 것처럼, 킷 소유자를 개별적으로 제어할 필요가 없는 경우 버킷 policy를 사용하는 것이 좋습니다.

출처:  https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/access-policy-alternatives-guidelines.html

 

이 글에서는 ACL를 활성화하여 버킷 객체를 공개로 변경합니다. ACL는 디폴트로 비활성화 되어 있으므로 [Permission -> ACL]메뉴에서 활성화합니다.

 

ACL enabled를 선택합니다. 그리고 Bucket owner preferred를 선택하고 Save changed버튼을 클릭합니다.

 

2.3 객체를 공개로 변경

객체를 공개로 변경하기 위해 객체를 생성해야 합니다. 파일을 업로드하여 객체를 생성합니다.

 

텍스트 파일을 만들고 버킷에 업로드 합니다. 텍스트 파일내용은 hello world로 했습니다.

 

버킷에 파일을 업로드하면 외부에서 접근가능한 주소가 생성됩니다. 접근 주소는 파일 상세정보에 있습니다.

 

파일 주소를 웹 브라우저에 접속하면, AccessDenied 오류가 발생하여 파일접근이 안됩니다. 아직 버킷에 업로드한 파일이 공개가 아니기 때문입니다.

 

아래 그림처럼 파일을 선택하고 ACL을 사용하여 파일을 공개설정합니다.

 

파일을 공개로 설정한 후, 다시 파일 주소로 접속합니다. 아래 그림처럼 파일 내용이 보입니다.

 

3. 보너스 테라폼 코드

이 글에서 콘솔로 설정한 내용을 그대로 테라폼 코드로 변경했습니다. 코드는 저의 github에 공개되어 있습니다.

▶ 링크: https://github.com/choisungwook/terraform_s3_public/tree/main/using_acl

반응형