S3 보안

Securing bucket

  • 디폴트로 새로운 버켓을 생성할 때 PRIVATE로 생성된다.

  • 버켓 사용의 접근 제어를 설정할 수 있다. (시험에 완전 중요)

    Bucket Policies - 버켓 정책을 변경하여 버켓 사용의 접근 제어를 설정

    Access Control Lists - ACL을 변경하여 버켓 사용의 접근 제어를 설정

  • S3 버킷에 대한 모든 요청을 기록하는 액세스 로그를 생성하도록 S3 버킷을 구성 할 수 있습니다.

S3 buckets can be configured to create access logs which log all requests made to the S3 bucket.

⇒ 고객은 필요에 따라 Amazon S3 버킷에 전달된 모든 요청에 대한 액세스 로그 레코드를 생성하도록 Amazon S3 버킷을 구성할 수 있습니다.

Encryption (시험에 완전 중요)

암호화는 Client side와 Server side로 나뉘며 Client side는 Client에서 S3로 전송될 때의 암호화 (data at transit) 을, Server side는 S3에 저장될 때의 암호화 (data at rest)를 의미함.

  • In Transit; - Client에서 S3로 전송될 때의 암호화
    • HTTPS 프로토콜을 사용하는 SSL 엔드포인트를 통해 Amazon S3에 데이터를 안전하게 업로드/ 다운로드 할 수 있습니다.
    • SSL/TLS ⇒HTTPS를 사용
  • At Rest - S3에 저장될 때의 암호화
    • 서버 측 암호화 Server Side Encryption(3가지)
      • S3 Managed Keys (SSE-S3) : Amazon이 다중 보안 계층을 사용하여 키 관리 및 키 보호를 처리하는 통합 솔루션을 제공합니다. Amazon에서 키를 관리하도록 하려면 SSE-S3
      • AWS Key Management Service, Managed Keys (SSE-KMS) : AWS KMS를 이용해 암호화 키를 관리
      • Server Side Encryption With Customer Provided Keys (SSE-C) : Amazon S3를 활용하여 객체의 암호화 및 암호 해독을 수행하는 동시에 객체를 암호화하는 데 사용된 키에 대한 제어 권한을 유지. 자체 암호화 키를 유지 관리하고 싶지만 클라이언트 측 암호화 라이브러리를 구현하거나 활용하고 싶지 않은 경우
    • Client Side Encryption

계정 간에 S3버킷을 공유하는 세가지 방법

  • 버킷 정책 & IAM (전체 버킷에 적용) Programmatic 접근만 가능
  • 버킷 ACLs & IAM (개별 개체) Programmatic 접근만 가능
  • 교차 계정 IAM 역할. Programmatic 접근과 Console 접근 가능