세션 유형
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에 대한 기록
키워드
- S3 Bucket Security & Access control
- 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 에서 사용할 때
- 데이터를 옮길 때
- 데이터가 저장되어 있을 때
데이터가 저장되어 있을 때 사용가능한 암호화 방법
- Amazon S3-Managed keys ( SSE-S3 )
- AWS KMS keys( SSE-KMS ) with Customer Managed Key
- 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
- S3 보안과 액세스 컨트롤에 관한 Best practice를 알아보기 위해 본 세션을 시청하였습니다.
- S3 보안을 강화하기 위해 관련된 전반적인 설정과 정책에 대해 다룹니다.