SECTION 14. Amazon S3 Security

‎김연수·2024년 5월 29일

SAA 자격증 공부

목록 보기
11/16

S3 Encryption

  • Server- Side Encryption(SSE)
    -SSE-S3
    -SSE-KMS
    -SSE-C
  • Client-Side Encryption

SSE-S3

  • Amazon S3 관리형 키를 사용한 암호화
  1. 암호화되지 않은 객체를 S3 로 업로드하여 SSE-S3 암호화 실행
  2. S3 로 객체를 전송할 때 HTTP / HTTPS 프로토콜로 헤더에 "x-amz-server-side-encryption":"AES256" 을 설정해 전송
  3. Amazon S3 는 이 헤더를 통해 S3 Managed Data Key 로 전송받은 객체를 암호화 하고 저장

SSE-KMS

  • Amazon Key Management Service 에 저장된 KMS 키를 사용한 암호화
  • KMS 란 Amazon 키 관리를 중점으로 하는 하나의 서비스
  • SSE-S3 과의 달리 조금 더 사용자 단위의 컨트롤을 할 수 있음
  1. Amazon S3 는 전송받은 객체의 헤더를 확인하고 어떤 방식으로 암호화 할 지 설정
  2. SSE-KMS 방식이기 때문에 S3 에서 암호화 할 때 KMS 에서 미리 세팅해놓은 KMS Customer Master Key 를 사용하여 전송받은 객체를 암호화
  3. 암호화 한 객체를 S3 버킷에 저장
  • Limitation

SSE-C

  • 사용자에 의해 직접 정의된 키들을 이용해 암호화
  • SSE-C 를 사용하면 사용자는 암호화 키를 관리하고 Amazon S3 는 암호화 (디스크에 쓸 때) 및 복호화 (객체에 액세스할 때) 를 관리
  1. 사용자는 HTTPS 프로토콜을 사용하여 암호화 키와 객체를 Amazon S3 로 전송
  2. S3 에서는 전송받은 키로 객체를 암호화하여 S3 버킷에 저장
  3. S3 로부터 파일을 받으려면 암호화를 할 때 사용되었던 것과 동일한 키를 S3 로 보내줘야 함

Client-Side Encryption

  • 클라이언트 측 암호화는 데이터를 S3로 보내기 전에 데이터를 암호화하고 데이터를 다운로드한 후 해독하는 것

CORS

What is CORS?

  • 서버가 브라우저가 리소스 로드를 허용해야 하는 자체가 아닌 다른 출처 (도메인, 체계 또는 포트) 의 리소스에 접근할 수 있도록 HTTP 헤더를 통해 클라이언트에게 허용된 정보를 전달하는 메커니즘.
  • SOP
    CORS 에러가 발생하는 주요 이유
    웹 브라우저에서 동일 출처에서만 리소스를 접근할 수 있음.

    웹 브라우저는 SOP 보안 정책을 기본값으로 두며 CORS 허용 시에만 서로 다른 출처끼리 요청을 주고 받을 수 있다.

  • 요청 방식
    Simple Request: 기본요청 o, 접근 거부 시 응답 x
    Preflight Request: 사전 요청을 보내고 서버의 허용 여부를 확인

Amazon S3 CORS

  • 클라이언트가 웹사이트에서 S3 버킷에 교차 출처 리소스 공유를 요청하는 경우 올바른 CORS 헤더를 활성화 하여 CORS 를 허용해야 한다.
  • 아래 사진에서, 웹 브라우저는 S2 버킷(my-bucket-html)에 Host를 포함한 http 요청을 보내고 응답 받는다.
  • 두 번째 S3 버킷(my-bucket-assets)는 교차 출처 버킷인데, 이곳으로 웹 브라우저가 host 요청을 보낸다. 이때 Origin 헤더에 위 버킷(my-bucket-html)의 http가 있으므로 그곳에 접근할 수 있도록 응답한다.

S3 Access Logs

  • S3 버킷의 모든 활동(접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3버킷이 저장하는 기능

  • 주의할 점

  • logging 버킷을 모니터링 버킷(app 버킷)과 똑같이 설정하지 말 것.

  • logging 루프가 발생해서 버킷이 기하급수적으로 커짐.

S3 Glacier Vault Lock

S3 Access Points

  • 액세스 포인트를 이용해 s3 버킷에 접근하기.
  • 데이터가 많은 s3 버킷, 여기 접근하려는 사용자들.
  • s3 액세스 포인트를 만들어 각 데이터에 연결할 수 있음. 각 액세스 포인트에 데이터 액세스를 승인하는 정책을 붙임.
  • 분석 접근 포인트는 두 데이터에 모두 접근할 수 있지만, 읽기 전용 접근임.
  1. 액세스 포인트는 s3 버킷에 대한 보안관리를 단순화함.
  2. 각 액세스 포인트는 고유한 DNS 이름을 가지고 원본 인터넷 또는 트래픽용 VPC로 연결할 수 있음.
  3. 액세스 포인트 정책을 붙여 스케일이 확장될 때에도 보안관리할 수 있음.

VPC Origin

  • VPC 안에서 S3 액세스 포인트를 개인이 접근하도록 할 수 있음.
  • VPC 액세스의 EC2 인스턴스는 인터넷을 통하지 않고, S3 버킷은 VPC Origin의 VPC 액세스 포인트를 통함.
  • VPC Endpoint를 만들어 EC2 인스턴스가 액세스 지점으로 연결할 수 있게 함.
  • VPC Endpoint의 정책은 타겟 버킷과 액세스 포인트를 허용해야 함.

0개의 댓글