S3 암호화
- 서버 암호화
- SSE-S3 기본 암호화
- AWS가 처리하고 관리하고 소유한 키를 이용해서 암호화
- 키에 절대로 액세스 할 수 없음
- AWS에 의해 서버측에서 암호화를 하고, 보안 유형 AES-256
- 헤더에 "x-amz-server-die-enctyption":"AES256" 전달 필요
- 1. 사용자가 HTTP(S) + 헤더 전달
- 2. S3에서 S3가 보유한 키와 객체를 짝 지어줌
- 3. S3 버킷에 저장
- SSE KMS - KMS 키 암호화
- AWS와 S3 서비스에 보유한 키에 의존하지 않음, 키 관리 서비스를 이용해 자신의 키를 관리함
- KMS를 사용하면 사용자가 키를 통제 함
- CloudTrail을 이용해서 키 사용을 검사 할 수 있음, KMS에서 키 사용할때마다 CloudTrail에 로깅됨
- 헤더에 "x-amz-server-side-encryption":"aws:kms" 전달 필요
- 1. 사용자가 HTTP(S) + 헤더 전달
- 2. AWS KMS가 외부에서 와서 객체랑 짝 지어줌
- 3. S3 버킷에 저장
- 파일을 읽기 위해서는 객체 자체에 액세스 + 사용된 KMS 키 엑세스 필요
- 스로틀링 활용 사례: 다운로드 할 때 복호화를 해야하니깐, S3 버킷과 KMS 통신을 하는데 너무 많으면 생김
- SSE-C - HTTPS ONLY
- AWS 외부에서 관리되지만 여전히 서버 측 암호화, 키를 AWS에 전송하는 방식
- 사용 후에는 제공한 암호화 키를 폐기
- 키를 S3로 전송하기 때문에 HTTPS를 반드시 사용해야하는 것
- 1. 사용자가 파일 + 키를 전달
- 2. 제공한 키와 객체를 사용해서 약간의 암호화를 수행
- 3. S3 버킷에 저장
- 파일을 읽기 위해서는 사용자가 사용한 키를 제공 해야함
- SSE-S3 기본 암호화
- 클라이언트 암호화
- 클라이언트 라이브러리를 활용하면 쉽게 구현
- 클라이언트가 직접 데이터를 암호화 후 S3에 전송하는 개념
- 데이터 복호화는 S3 외부의 클라이언트 측에서 이루어진다.
- 전송 중 암호화 or 통신 중 암호화
- HTTP 엔드포인트는 암호화가 되지 않음
- HTTPS 엔드포인트는 암호화 제공
- S3 사용할때는 데이터 송신 보안을 위해 HTTPS 사용 100퍼 권고
- 전송 중 암호화를 어떻게 강제시키는지?
- 버킷 정책을 사용
- S3 버킷에 aws:SecureTransport가 False면 GetObject 작업을 거부
S3 CORS
- 오리진은 프로토콜 + 도메인 + 포트로 구성 됨
- http://www.example.com이면 프로토콜 HTTP, 도메인 www.example.com, 포트 443
- 체계, 호스트, 포트가 동일할 때 오리진이 같다고 말함
- http://example.com/app1 = http://example.com/app2
- 오리진이 다른 경우
- http://www.example.com != http://other.example.com
- 요청 체계의 일부로 다른 웹사이트에 요청을 보낼 때 허용을 해야한다.
- 액세스 제어 허용 오리진 (Access-Control-Allow-Origin)
- 1. web browser -> A사이트 접근
- 2. A사이트에서 B사이트 이미지를 가져올경우
- 3. B사이트에서 A사이트 액세스 제어 허용 오리진을 확인 후 허용
- 4. A사이트에서 B사이트 이미지 사용
S3 MFA Delete
- S3에서 객체를 영구삭제를 할 때, 버저닝을 비활성화 할 때 MFA에 대한 인증을 활성화가 되어있으면
- 인증 후 삭제가 가능하다.
- 버저닝이 활성화 됐을 때 MFA Delete 활성화를 사용 가능
- 루트 계정에서 활성화/비활성화를 시킬수 있음
S3 액세스 로그
- 감사 목적으로 S3 버킷에 대한 모든 액세스를 기록 할 수 있음
- 어디든 S3로 보낸 모든 요청을 승인/거부 상관없이 다른 S3 버킷에 파일로 기록됨
- Amazon Athena 같은 데이터 분석 도구로 분석 가능
- 대상 로깅 버킷은 같은 AWS 리전에 있어야 함
- 1. S3 버킷에 요청 할 경우
- 2. 액세스 로그를 활성화해서 모든 요청이 로깅 버킷에 기록됨
- 특정 로그 형식이 있음
- 액세스 로그 주의 사항
- 절대로 로깅 버킷을 모니터링하는 버킷과 동일하게 설정하면 안됨
- 동일하게 설정하면 로깅 루프가 생성되고 무한 반복 됨
S3 사전 서명된 URL
- S3 콘솔, CLI, SDK를 사용하여 생성할 수 있는 URL
- URL에는 만료 기한이 있음
- S3 콘솔은 최대 12시간
- CLI는 최대 168시간
- 미리 서명된 URL을 생성할 때 URL을 받는 사용자는 생성한 사용자의 GET or PUT 권한 상속
- 예시1
- 로그인한 사용자만 S3 버킷에서 고화질 비디오 제공
- 예시2
- 다운로드 허용하거나 사용자 목록이 계속 변하는 경우 URL 동적 생성
- 예시3
- 일시적으로 사용자가 S3 버킷의 특정한 위치에 파일 업로드
- 버킷 비공개로 유지할 경우
S3 잠금 정책 및 Glacier 볼트 잠금
- S3 Glacier 볼트 잠금
- WORM 모델을 채용하기 위해 Glacier 볼트를 잠그는것
- WORM은 한 번 쓰고 여러 번 읽는다는 뜻
- 객체를 가져와서 S3 Glacier 볼트에 넣으면 수정하거나, 삭제 할 수 없도록 잠그는 것
- 1. Glacier 위에 볼트 잠금 정책을 생성
- 2. 향후 편집을 위해 정책을 잠금
- 3. 볼드 잠금 정책 설정
- 4. 잠금 후 누구도 변경하거나 삭제할 수 없게 됨
- 규정 준수와 데이터 보존에 유용
- 관리자나 AWS 서비스를 사용해도 삭제 할 수 없음
- 규정 준수, 데이터 보존, 법률적인 사항에 유용
- 유사한 S3 객체 잠금 옵션
- S3 객체 잠금 활성화를 할려면 버저닝 활성화 필요
- 여기서도 WORM 모델 채택 가능
- 객체 잠금은 버킷 내의 모든 객체에 각각 적용
- 특정 객체 버전이 특정 시간 동안 삭제되는 걸 차단 가능
- 규정 준수 모드
- S3 Glacier 볼트 잠금과 매우 비슷함
- 사용자를 포함한 객체 버전을 덮어쓰거나, 삭제 불가능
- 누구도 객체 변경이 안됨
- 보존 모드 자체도 변경 안됨
- 보존 기간도 단축할 수 없음
- 거버넌스 보존 모드
- 대부분의 사용자는 객체 버전을 덮어쓰거나 삭제하거나 로그 설정 변경 안됨
- 관리자나 IAM을 통해 권한을 받은 사용자는 가능
- 위의 두가지 모드 보존 기간 설정이 필요
- 법적 보존 상태
- S3 버킷 내 모든 객체를 무기한으로 보호
- s3:PutObjectLegalHold IAM 권한이 있으면 법적 보존을 설정하거나 제거 가능
S3 엑세스 포인트
- 액세스 포인트는 S3 버킷의 보안 관리를 간소화 해줌
- 각각의 액세스 포인트는 각자의 DNS 이름을 갖게 됨
- 액세스 포인트가 인터넷 오리진에 연결되거나 private 트래픽이면 VPC 오리진에 연결
- 버킷 정책과 아주 비슷한 액세스 포인트 정책을 첨부하면 보안 관리를 스케일링 할 수 있음
- 예시1
- S3 액세스 포인트의 VPC 오리진을 프라이빗 액세스가 가능 하도록 정의
- VPC의 EC2 인스턴스는 인터넷을 통하지 않고 VPC 액세스 포인트와 VPC 오리진을 통해
- S3 버킷에 액세스 할 수 있음
- VPC(EC2 -> VPC Endpoint) -> [액세스 포인트 사용] VPC Origin -> S3 Bucket
- 1. VPC 오리진에 액세스 하기 위해 액세스 포인트에 액세스하는 VPC Endpoint 생성
- 2. VPC 오리진을 통해 액세스 포인트에 사적으로 접속가능하게 설정
- 3. VPC 엔드포인트 정책에 S3 버킷과 액세스 포인트에 대한 액세스를 허용
- 4. VPC 엔드포인트 정책은 EC2, S3, 액세스 포인트 모두 접속하게 허용 한거임
- 보안이 매우 강해짐
- VPC 엔드포인트 보안
- 액세스 포인트 정책 보안
- S3 버킷 보안
S3 오브젝트 람다
- S3 액세스 포인트 또 다른 활용 사례
- 예시1
- S3 버킷에 호출자 애플리케이션이 객체를 받기 직전에 수정 할 때
- 예시2
- 버킷을 복제해서 버킷에 각 객체의 다른 버전을 갖는 대신에 S3 객체 람다 사용
- 위의 예시를 사용 할려면 S3 액세스 포인트가 필요
'스터디 > AWS SAA' 카테고리의 다른 글
섹션 16: AWS 스토리지 추가 기능 (0) | 2024.01.06 |
---|---|
섹션 15: CloudFront 및 AWS 글로벌 액셀러레이터 (1) | 2024.01.05 |
섹션 13: 고급 Amazon S3 (1) | 2024.01.03 |
섹션 12: Amazon S3 소개 (2) | 2024.01.02 |
섹션 11: 클래식 솔루션 아키텍처 토론 (0) | 2023.12.30 |