AWS S3 보안

jisoolee·2023년 5월 14일
0

AWS Associate Developer

목록 보기
11/27

Object Encryption

Server-Side Encyption(SSE)

Amazon S3-Managed Keys(SSE-S3)

: AWS에서 처리, 관리, 소유하는 키를 사용하여 암호화한다. 사용자는 키에 액세스 불가능

  • 암호화 보안 유형: AES-256
  • 헤더를 반드시 "x-amz-server-side-encryption": "AES356"으로 설정해야 한다.
  • 새 버킷과 새 객체에 기본적으로 활성화된다.

KMS Keys stored in AWS KMS(SSE-KMS)

: 키에 대한 사용자 제어권을 갖게 되어 KMS 내에서 키를 직접 만들고 CloudTrail을 사용하여 키를 감사할 수 있다.

  • 객체는 서버 사이드에서 보안된다.
  • 헤더를 반드시 "x-amz-server-side-encryption": "aws:kms"로 설정해야 한다.

Limitation

: KMS 키에는 생성 데이터와 키와 같은 자체적인 API가 있어 암호화를 해제할 경우 Decrypt API를 사용해야 한다.

  • S3 버킷의 스루풋이 아주 높으며 모든 파일이 KMS 키를 사용하여 암호화되면 조절 사용 사례가 생길 수 있다.

Customer-Provided Keys(SSE-C)

: 키는 AWS 외부에서 관리하고 키를 AWS로 전송한다.

  • S3는 키를 저장하지 않고 사용 후에는 폐기한다.
  • 반드시 HTTPS를 사용하고, 모든 요청에서 키를 HTTPS 헤더의 일부로 전달해야 한다.

Client-Side Encryption

: 클라이언트가 S3에 데이터를 전송하기 전 직접 암호화

  • 클라이언트가 키와 암호화 사이클을 전적으로 관리하게 된다.

Encryption in transit(SSL/TLS)

: 전송 중 암호화

Amazon S3 expose two endpoints

HTTP Endpoint

: 비암호화

HTTPS Endpoint

: 암호화

  • SSE-C 유형의 매커니즘을 사용하는 경우 HTTPS 프로토콜을 사용해야 한다.

Default Encryption vs Bucket Policies

: 버킷 정책으로도 버킷의 암호화를 강제로 적용할 수 있다.

  • 버킷 정책은 항상 기본 암호화 설정 이전에 평가된다.
  • 기본 암호화는 S3에서 기본적으로 켜져 있지만 변경할 수 있으며 버킷 정책에 원하는 암호화를 사전에 적용할 수 있다.

CORS(Cross-Origin Resource Sharing)

: 기본 오리진에 방문할 때 다른 오리진에 대한 요청을 허용하거나 거부하는 웹 브라우저 기반 보안 메커니즘

  • Origin = schema(protocol) + host(domain) + port

S3 CORS

  • 클라이언트가 S3 버킷에 교차 오리진 요청을 보낼 경우 올바르 CORS 헤더를 활성화해야 한다.
  • 이를 빠르게 처리하는 방법은 특정 오리진을 허용하거나 모든 오리진을 허용한다.
  • CORS 요청이 다른 오리진에서 발생한 경우 한 S3 버킷에서 이미지나 에셋이나 파일을 검색할 수 있도록 하는 웹브라우저 보안이다.

MFA Delete

: 한 객체 버전을 영구적으로 삭제하고자 할 때 정말로 영구적으로 삭제되지 않도록 하는 데 필요하다. 또한 버킷의 버전 관리를 일시 중단하려는 경우에도 필요하다.

  • 버전 관리를 활성화하거나 삭제된 버전을 나열하고자 하는 경우에는 MFA가 필요하지 않다.

Access Logs

: 감사를 위해 S3 버킷의 모든 액세스를 기록

  • 로깅 버킷을 모니터링하는 버킷과 동일한 버킷으로 설정해서는 안된다.

Pre-Signed URLs

: 미리 서명된 URL을 생성하면 해당 URL을 받게 되는 사용자에세 GET이나 PUT 작업에서 생성된 URL의 사용자 권한이 상속된다.

Access Points

: S3 버킷에 액세스하는 다양한 방법을 정의할 수 있어 보안을 아주 간단하게 관리할 수 있다.

  • 각 액세스 포인트에는 각각의 DNS 이름이 있다.

VPC Origin

: 프라이빗 액세스로 정의할 수 있다.

S3 Object Lambda

0개의 댓글