[2022 AWS re:Invent] Amazon S3 security and access control best practices

세션 유형

Break out

세션명

Amazon S3 security and access control best practices

강연자

Meg Rose, Amazon 수석 소프트웨어 개발 관리자 Raymond Lui, Amazon Web Services 선임 제품 관리자

세션요약자

안관영(Gwanyeong An)

핵심내용 요약
  • Block Public Access : S3 버킷에 적용하여 데이터 보안 설정
  • Encryption : 버킷 레벨에서 기본 암호화 설정 활성화, S3 버킷 키를 통해 AWS KMS 비용 감소
  • Bucket Policies : 범위를 지정하기 위해 deny 문구 사용
  • Disable ACLs : 버킷 소유자가 S3 Object 소유권에 대해 ACLs를 비활성화 
  • IAM Access Analyzer and logging your request : IAM Access Analyzer을 통해 허용 설정 확인 및 S3 Server Access log와 Cloudtrail을 통해 Bucket에 대한 기록
키워드
  1. S3 Bucket Security & Access control
  2. Best practice 5
상세내용

Best practice #1 : Block Public Acess

S3 버킷은 기본적으로 Private 설정 : Account 밖에서는 접근 불가하며 권한이 없으면 접근 불가

Block public Access : Amazon S3의 퍼블릭 접근을 막는 것을 말하며 설정을 권장.

S3가 존재하는 Account 밖에서도 접근할 수 있는 권한 부여 가능 (명확한 지정 필요)

Block Public Access를 기존의 정책이 아닌 새로운 정책들이 Public Access 하는지 확인

기존의 모든 정책들은 확인하는 옵션

S3를 Data Lake 버킷으로 사용하거나, 버킷에 Configuration이 담고 있거나, static website 내용을 담고 있을 때 적합
S3에서 바로 사용해야하는 퍼블릭 데이터셋을 담을 경우 부적합

Best practice #2 : Encrpytion

S3 암호화 적응 가능한 단계

  • Client Side 에서 사용할 때
  • 데이터를 옮길 때
  • 데이터가 저장되어 있을 때

데이터가 저장되어 있을 때 사용가능한 암호화 방법

  1. Amazon S3-Managed keys ( SSE-S3 )
  2. AWS KMS keys( SSE-KMS ) with Customer Managed Key
  3. AWS KMS keys( SSE-KMS ) with AWS Managed Key

객체 레벨에서는 헤더를 통해 암호화

S3 기본 암호화 설정을 통해 손쉽게 통일된 암호화를 설정 가능

다음과 같이 암호화 적용 : 기본 암호화가 설정되어 있어도 Object 레벨에 암호화 수준으로 적용

Amazon S3 버킷 키를 이용할 경우 암호화 성능을 높힐 수 있으며, KMS를 사용해서 암호화 할 때 보다 최대 99%까지 비용 절감 효과. : KMS 호출이 없고 S3내에서 이루어지기 때문

Amazon S3 Storage Lens 를 사용하는 것이 좋음
: 비용 효율성과 데이터 보안을 높이기 위해서 Storage 사용성 및 활동성을 한눈에 볼 수 있도록 ㅈ공하는 Storage Analytics 서비스 -> 키 현황 확인 가능

Best practice #3 : Writing good IAM policies for S3

접근 제한의 핵심 : IAM , Bucket Polciy, Access Control List (ACL)

  • IAM : IAM 계정 정책으로 접근 권한을 부여
  • Bucket Policy : S3 버킷에 접근 권한 부여
  • ACL : S3 버킷 혹은 객체에 접근 권한 부여

  • Effect : 정책이 특정 액션을 허용하는 것인지 거절하는 것인지 표현
  • Action : 정책이 허용 혹은 거절하는 액션
  • Resoruce : 정책이 적용 대상이 되는 AWS 리소스

Action과 Resource의 매핑이 필요

서로 다른 AWS account 간 S3 데이터를 공유하고자 할 때는 버킷에 접속하고자 하는 IAM의 정책과 접속할 버킷의 정책 모두 정의해주어야 접근이 가능

정책의 Condition과 Effect Deny를 통해 접근을 제한하는 것이 좋음

효율적인 S3 접근 제어 관리를 위해서는 S3 Access points를 사용

Best practice #4 : Disabled ACLs

S3 Object Ownership을 사용해서 버킷과 객체의 ACL 비활성화 가능 
: 버킷 ACL을 비활성화 시 버킷은 버킷 소유자로 변경되며 Bucket Policy가 버킷 안에 모든 객체에 반영

S3 server access log와 AWS Cloudtrail에 ACL 사용 정보 필드 aclRequired 추가
 : 사용 정보를 기반으로 ACL 권한들을 버킷 정책으로 마이그레이션할 때 유용

Best practice #5 : Review permissions with IAM Access Analyzer and log request with Amazon S3 server access log or AWS CloudTrail

IAM Access Analyzer로 모든 버킷의 권한을 확인하며 간단한 대시보드로 Public 버킷과 외부로 공유되는 버킷 확인

S3 server Access log 와 AWS CloudTrail을 사용하여 S3 분석

Bespin’s Comment
  1. S3 보안과 액세스 컨트롤에 관한 Best practice를 알아보기 위해 본 세션을 시청하였습니다. 
  2. S3 보안을 강화하기 위해 관련된 전반적인 설정과 정책에 대해 다룹니다.

Leave a Comment