고객 제공 암호화 키

이 페이지에서는 고객이 제공하는 암호화 키를 설명합니다. 다른 암호화 옵션에 대해서는 데이터 암호화 옵션을 참조하세요. 이 기능의 사용 예시는 고객이 제공하는 암호화 키 사용을 참조하세요.

개요

Google 관리형 암호화 키 외에 추가 레이어로 표준 Base64로 인코딩된 자체 AES-256 키를 제공할 수 있습니다. 이 키를 고객 제공 암호화 키라고 합니다. 고객 제공 암호화 키를 제공하는 경우, Cloud Storage는 해당 키를 Google 서버에 영구적으로 저장하거나 키를 달리 관리하지 않습니다. 대신 사용자가 각 Cloud Storage 작업에 키를 제공하며, 작업이 완료되면 Google 서버에서 키가 삭제됩니다. Cloud Storage는 키의 암호화 해시만 저장하며 향후 요청 시 해시와 비교하여 유효성을 검사할 수 있습니다. 이 해시에서 키를 복구할 수 없으며 데이터 복호화에 해시를 사용할 수 없습니다.

키가 사용되는 시기

고객 제공 암호화 키를 객체에 적용하면 Cloud Storage에서 다음을 암호화할 때 이 키를 사용합니다.

  • 객체의 데이터
  • 객체의 CRC32C 체크섬
  • 객체의 MD5 해시

Cloud Storage는 표준 서버 측 키를 사용하여 객체 이름을 포함한 객체의 나머지 메타데이터를 암호화합니다. 따라서 고객 제공 암호화 키가 없어도 일반 메타데이터를 읽고 업데이트할 수 있으며 객체를 나열 및 삭제할 수 있습니다. 하지만 이러한 작업을 수행하려면 충분한 권한이 있어야 합니다.

예를 들어 객체가 고객 제공 암호화 키로 암호화된 경우 이 키를 사용해야만 객체 다운로드 또는 이동과 같은 작업을 객체에 수행할 수 있습니다. 키를 제공하지 않고 객체의 메타데이터를 읽으려고 하면 객체 이름 및 Content-Type과 같은 메타데이터는 가져올 수 있지만 객체의 CRC32C 체크섬이나 MD5 해시는 가져올 수 없습니다. 객체 메타데이터 요청과 함께 키를 제공하면 객체의 CRC32C 체크섬과 MD5 해시가 메타데이터에 포함됩니다.

HTTPS 확인

읽기 및 쓰기 작업 도중 인터넷을 통해 전송되는 데이터를 보호하려면 일반적으로 TLS 또는 HTTPS라고 하는 전송 계층 보안을 사용하세요. TLS는 암호화 키를 제공할 때 필요합니다. 실수로 암호화되지 않은 HTTP 연결을 통해 암호화 키를 사용하면 공격자가 키를 가로챌 가능성이 있습니다. 이러한 가능성으로 인해 Cloud Storage API는 키가 손상될 수 있음을 경고하는 오류 메시지를 반환합니다. 이 경우 즉시 키를 순환시켜야 합니다.

제한사항

고객 제공 암호화 키 사용 시 다음 제한사항이 적용됩니다.

  • Cloud Storage Transfer Service, Cloud Dataflow, Cloud Dataproc은 현재 고객 제공 암호화 키로 객체를 암호화할 수 없습니다.

  • Google Cloud Platform Console을 사용하여 고객 제공 암호화 키로 암호화된 객체를 다운로드할 수 없습니다. 마찬가지로 Google Cloud Platform Console을 사용하여 객체를 업로드하는 경우, 고객 제공 암호화 키로 객체를 암호화할 수 없습니다. 이러한 작업은 고객 관리 암호화 키를 사용하여 수행할 수 있습니다.

  • gsutil과 함께 고객 제공 암호화 키를 사용하려면 gsutil 4.18 이상이 필요합니다.

  • 고객 제공 암호화 키는 개별 객체에만 설정할 수 있습니다. 버킷에는 기본 고객 제공 암호화 키를 설정할 수 없습니다.

  • 고객 제공 암호화 키로 암호화된 객체에서 compose 작업을 수행하는 경우, 구성요소 객체를 같은 키로 암호화해야 하며 작성 요청과 함께 키를 제공해야 합니다. 따라서 복합 객체는 동일한 키로 암호화됩니다.

암호화 키를 사용하기 위한 도구

Cloud Storage에서 여러 가지 방법으로 고객 제공 암호화 키를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

  • 파트너 회사
  • JSON 및 XML REST API
  • gsutil 명령줄 도구

파트너 회사를 통한 암호화 키 사용

제3자 파트너를 통해 고객 제공 암호화 키를 사용할 수 있는 몇 가지 방법이 있습니다. 이러한 파트너를 통해 간편하게 암호화 키를 생성하고 해당 키를 Cloud Storage의 객체와 연결할 수 있습니다. Cloud Storage에서 사용하기 위한 키를 제공할 수 있는 파트너로는 Security, KeyNexus 등이 있습니다.

자세한 내용은 Cloud Storage 파트너 페이지를 참조하세요.

REST API를 통한 암호화 키 사용

고객 제공 암호화 키를 사용하면서 JSON 또는 XML API로 직접 작업하려면 AES-256 키와 키의 SHA256 해시를 모두 제공해야 합니다. AES-256 키와 키의 SHA256 해시 모두 안전하게 저장해야 합니다. Google은 사용자가 나중에 검색할 수 있도록 키의 SHA256 해시를 객체의 메타데이터에 저장합니다. 이 SHA256 해시는 Google(또는 다른 누군가)이 데이터를 복호화하는 데 사용될 수 없습니다. 이 해시는 특정 객체를 암호화하는 데 사용된 AES-256 키를 고유하게 식별하는 방식으로 저장됩니다.

요청 헤더

JSON 또는 XML 요청에는 다음 HTTP 헤더가 포함됩니다.

헤더 이름 설명
x-goog-encryption-algorithm 문자열 사용할 암호화 알고리즘입니다. AES256 값을 사용해야 합니다.
x-goog-encryption-key 문자열 AES-256 암호화 키의 RFC 4648 Base64 인코딩 문자열입니다.
x-goog-encryption-key-sha256 문자열 암호화 키의 SHA256 해시에 대한 RFC 4648 Base64 인코딩 문자열입니다.

JSON API로 다시 쓰기 작업을 수행하는 경우, 위에 나열된 헤더가 대상 객체 암호화에 사용되고 다음 헤더는 소스 객체 복호화에 사용됩니다.

헤더 이름 설명
x-goog-copy-source-encryption-algorithm 문자열 사용할 암호화 알고리즘입니다. AES256 값을 사용해야 합니다.
x-goog-copy-source-encryption-key 문자열 소스 객체의 AES-256 암호화 키에 대한 RFC 4648 Base64 인코딩 문자열입니다.
x-goog-copy-source-encryption-key-sha256 문자열 소스 객체의 암호화 키에 대한 SHA256 해시의 RFC 4648 Base64 인코딩 문자열입니다.

응답

JSON

JSON API 사용 시 고객 제공 암호화 키의 메타데이터는 응답 본문에 반환됩니다. 여기에는 다음 속성이 포함됩니다.

속성 이름 설명
customerEncryption 객체 요청에 사용된 암호화에 대한 정보입니다.
customerEncryption.encryptionAlgorithm 문자열 사용된 암호화 알고리즘입니다. 항상 AES256 값을 포함합니다.
customerEncryption.keySha256 문자열 암호화 키의 SHA256 해시에 대한 RFC 4648 Base64 인코딩 문자열입니다. 이 SHA256 해시를 사용하여 객체 복호화에 필요한 AES-256 암호화 키를 고유하게 식별할 수 있습니다. 따라서 안전하게 저장해야 합니다.

XML

XML API 사용 시 응답에는 다음 헤더가 포함됩니다.

헤더 이름 설명
x-goog-encryption-algorithm 문자열 사용된 암호화 알고리즘입니다. 항상 AES256 값을 포함합니다.
x-goog-encryption-key-sha256 문자열 암호화 키의 SHA256 해시에 대한 RFC 4648 Base64 인코딩 문자열입니다. 이 SHA256 해시를 사용하여 객체 복호화에 필요한 AES-256 암호화 키를 고유하게 식별할 수 있습니다. 따라서 안전하게 저장해야 합니다.

다음과 같은 경우에 HTTP 400 오류가 발생합니다.

  • 고객 제공 암호화 키를 사용하여 객체를 업로드하고 키를 제공하지 않은 채 객체에서 다른 작업(대부분의 메타데이터 요청이나 업데이트 또는 객체 삭제 이외의 작업)을 수행하려고 합니다.
  • 고객 제공 암호화 키를 사용하여 객체를 업로드하고 잘못된 키를 사용하여 객체에서 다른 작업을 수행하려고 합니다.
  • 고객 제공 암호화 키를 제공하지 않고 객체를 업로드하고 고객 제공 암호화 키로 이 객체에서 다른 작업을 수행하려고 합니다.
  • 유효하지 않은 암호화 알고리즘 키 또는 SHA256 해시를 지정합니다.

gsutil을 사용한 암호화 키

고객 제공 암호화 키를 gsutil과 함께 사용하려면 boto 구성 파일[GSUtil] 섹션에 다음 옵션을 추가합니다.

옵션 이름 설명
encryption_key 문자열 AES-256 암호화 키의 RFC 4648 Base64 인코딩 문자열입니다.

선택사항으로 암호 해독 키를 1개 이상 지정할 수 있습니다. encryption_key 옵션은 gsutil에서 암호화 키와 복호화 키로 모두 사용되지만 사용자가 지정하는 decryption_key 옵션은 객체 복호화에만 사용됩니다. 자세한 내용은 gsutil 문서를 참조하세요.

boto 구성 파일에 암호화 또는 복호화 키가 있으면 모든 gsutil 명령에서 이 파일이 사용됩니다. 복호화 시 gsutil은 제공된 암호화 및 복호화 키의 SHA256 해시를 계산하고 객체의 메타데이터에 있는 SHA256 해시와 일치시켜 특정 객체에 사용할 올바른 키를 선택합니다.

고객 제공 암호화 키를 사용하여 객체를 업로드한 후 키를 제공하지 않고 객체에서 다른 작업(메타데이터 요청이나 업데이트 또는 객체 삭제 이외)을 수행하려고 시도하면 오류가 발생합니다.

암호화 키 순환

고객 제공 암호화 키를 사용하여 객체를 암호화한 경우 객체 다시 쓰기를 통해 객체의 키를 순환시킬 수 있습니다. 다시 쓰기는 JSON API에서 지원되지만 XML API에서는 지원되지 않습니다. 키 순환의 예시는 암호화 키 순환을 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.