IT/Infra&Cloud

[aws] S3 Security — 1. Create S3 Access Control List

Hayley Shim 2023. 10. 29. 00:46

안녕하세요. 최근 CloudNet@ AWS Security Study를 진행하며 해당 내용을 이해하고 공유하기 위해 작성한 글입니다. 해당 내용은 ‘쉽게 적용하는 AWS 보안 레시피’ 책과 AWS Docs 내용을 기반으로 했습니다.

S3

Amazon S3는 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체(Object) 스토리지 서비스입니다. 객체(Object)는 파일 및 파일을 설명하는 모든 메타데이터이고 Bucket은 객체의 컨테이너입니다. 객체 스토리지인 S3에 대해 이해하고 관련된 보안 규정을 알아봅시다.

Amazon S3에 데이터를 저장하려면,

  1. 먼저 버킷을 생성하고 버킷 이름과 AWS 리전을 지정합니다.
  2. 그런 다음 Amazon S3의 객체로 해당 버킷에 데이터를 업로드합니다.

— 각 객체에는 버킷 내 객체의 고유 식별자인  (또는 키 이름 )가 있습니다.

— 버킷과 그 안의 객체는 비공개이며 명시적으로 액세스 권한을 부여한 경우에만 액세스할 수 있습니다.

— 버킷 정책, AWS Identity and Access Management(IAM) 정책, 액세스 제어 목록(ACL) 및 S3 액세스 포인트를 사용하여 액세스를 관리할 수 있습니다.

1. S3 접근 제어 목록 생성

사용자에게 직접 권한 부여를 피하기 위해 그룹에 포함시켜 그룹 권한을 줍니다.

사전준비(참고 : [aws]IAM&Organization)

  • 파일이 있는 S3 버킷
  • 권한이 없는 사용자와 관리자 권한 : testuser와 awssecadmin이름으로 사용자를 만들고 CLI profile 생성

1.1 콘솔에서 모든 사용자에게 버킷 읽기 ACL 적용

[참고] AWS S3 버킷 액세스하기 위한 방법(링크)

  1. S3 > 권한 > 퍼블릭 엑세스 차단(편집) > 퍼블릭 엑세스 차단 모두 해제
  • 모든 사용자가 버킷을 볼 수 있도록 설정합니다.

2. S3 > 권한 > 객체 소유권 편집 > ACL 활성화를 선택하고 아래 정책 적용

  • ACL이 활성화되며 이 버킷과 그 객체에 대한 액세스 권한을 부여합니다.

3. S3 > 자신의 버킷 > 권한 > ACL(액세스 제어 목록) 편집 : ACL에 대해 모든 사람에 대해 객체 나열 허용하여 목록을 확인합니다.

4. S3 버킷 주소로 접속하여 객체 목록 확인

# S3 버킷 주소 확인 
echo -e "S3 URL = https://cass s3bucket-${S3suffix}.s3.${AWS_REGION}.amazonaws.com/" 
S3 URL = https://cass-s3bucket-gasida.s3.ap-northeast-2.amazonaws.com/# S3 버킷 접속하여 목록 확인 curl -s https://cass-s3bucket-$S3suffix.s3.$AWS_REGION.amazonaws.com/
S3 버킷에 접속하여 Content(111.txt) 확인

1.2 CLI에서 사전 정의된 사용자에게 읽기 권한 부여

  • AuthenticatedUser(인가된 사용자) 사전 정의 그룹에 READ 권한 부여
  1. S3 → 자신의 버킷 → 권한 → ACL(액세스 제어 목록) 편집 : 이전 실습에서 진행했던 모든 사람(퍼블릭 액세스)이 객체와 버킷ACL에 나열 List 와 읽기 Read 권한을 회수합니다.

2. AuthenticatedUsers (인증된 사용자 그룹) 사전 정의 그룹에 READ 권한 부여하는 json 정책 파일을 생성 후 버킷에 정책 적용

 
#json 정책 파일 확인
cat acl-grant-authenticated-users.json# 버킷에 ACL 정책 적용
aws s3api put-bucket-acl --bucket cass-s3bucket-$S3suffix --access-control-policy file://acl-grant-authenticated-users.jsonAmazon S3의 데이터 보호

3. S3 → 자신의 버킷 → 권한 → ACL(액세스 제어 목록) 편집 : 정책 설정 내용 확인 → 버킷 소유자도 권한이 제거됨

blog migration project

written in 2022.8.15

https://medium.com/techblog-hayleyshim/aws-s3-security-55d4308449d