고객 관리 암호화 키

설정

이 페이지에서는 고객 관리 암호화 키와 Cloud Storage에서 고객 관리 암호화 키가 사용되는 방식을 설명합니다. 다른 암호화 옵션에 대해서는 데이터 암호화 옵션을 참조하세요.

개요

표준 Cloud Storage 암호화에서 허용되는 것보다 키 작업을 더 확실하게 제어해야 할 경우 고객 관리 암호화 키를 사용할 수 있습니다. 이러한 키는 Cloud Key Management Service(Cloud KMS)를 사용하여 생성 및 관리되며, HSM 클러스터에 또는 외부적으로 키를 소프트웨어 키로 저장합니다. 개별 객체에 고객 관리 암호화 키를 사용하거나 버킷에 추가되는 모든 새 객체에 기본적으로 키를 사용하도록 버킷을 구성할 수 있습니다.

고객 관리 암호화 키를 사용하면 객체가 버킷에 저장될 때 Cloud Storage에서 키를 통해 암호화되고, 객체가 요청자에게 제공되면 객체가 Cloud Storage에 의해 자동으로 복호화됩니다.

CMEK를 직접 만들거나 Cloud KMS Autokey(프리뷰)를 사용하여 이러한 키를 자동으로 만들 수 있습니다. 자세한 내용은 Autokey 개요를 참조하세요.

키가 사용되는 시기

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

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

Cloud Storage는 표준 서버 측 키를 사용하여 객체 이름을 포함한 객체의 나머지 메타데이터를 암호화합니다. 따라서 충분한 권한이 있는 경우 연결된 고객 관리 암호화 키를 사용 중지하거나 폐기한 후에도 대부분의 메타데이터 읽기, 객체 나열, 객체 삭제와 같은 작업을 수행할 수 있습니다.

서비스 에이전트

각 프로젝트에는 고객 관리 암호화 키를 사용하여 암호화 및 복호화를 수행하는 서비스 에이전트라는 특수한 Cloud Storage 서비스 계정이 있습니다. 암호화 키에 대한 액세스 권한을 서비스 에이전트에 부여하면 서비스 에이전트가 다음을 암호화합니다.

Cloud Storage에서 객체를 추가하거나 재작성할 때 버킷에 기본 키가 설정되어 있는데 요청에도 특정 키를 포함한 경우, Cloud Storage는 요청의 특정 키를 사용하여 객체를 암호화합니다.

요청자가 고객 관리 암호화 키로 암호화된 객체를 읽으려고 할 때는 평소처럼 객체에 액세스하면 됩니다. 다음 조건에 해당하면 이러한 요청 중에 서비스 에이전트가 요청된 객체를 자동으로 복호화합니다.

  • 키를 사용하여 복호화할 수 있는 권한을 서비스 에이전트가 여전히 보유하고 있습니다.
  • 키를 비활성화하거나 폐기하지 않았습니다.

위 조건 중 하나를 충족하지 못하면 서비스 에이전트가 데이터를 복호화하지 않으며 요청이 실패합니다.

제한사항

고객 관리 암호화 키를 사용할 때 다음 제한사항이 적용됩니다.

  • 객체의 메타데이터를 업데이트하여 고객 관리 암호화 키로 객체를 암호화할 수는 없습니다. 대신 객체 재작성 시 키를 포함하세요.

    • gcloud storageobjects update 명령어를 사용하여 객체에 암호화 키를 설정하지만 명령어는 요청의 일부로 객체를 다시 작성합니다.
  • 암호화할 데이터와 같은 위치에 Cloud KMS 키링을 생성해야 합니다. 예를 들어 버킷이 US-EAST1에 있는 경우 해당 버킷의 객체를 암호화하는 데 사용되는 키링도 US-EAST1에 생성되어야 합니다.

    • 대부분의 이중 리전의 경우 연결된 멀티 리전에 Cloud KMS 키링을 만들어야 합니다. 예를 들어 버킷이 US-EAST1 ,US-WEST1 쌍에 있는 경우 해당 버킷에서 객체를 암호화하는 데 사용되는 모든 키링은 US 멀티 리전에서 생성되어야 합니다.

    • ASIA1, EUR4, NAM4 사전 정의된 이중 리전의 경우 동일한 사전 정의된 이중 리전에 키링을 만들어야 합니다.

      사용 가능한 Cloud KMS 위치는 Cloud KMS 위치를 참조하세요.

  • Cloud KMS 암호화 및 복호화 비율에는 할당량이 적용됩니다.

  • JSON API를 사용하여 객체를 나열할 때는 고객 관리 암호화 키로 암호화된 객체의 CRC32C 체크섬 및 MD5 해시가 반환되지 않습니다.

    • 해당하는 경우 gcloud storage와 같은 일부 도구는 CRC32C 및 MD5 정보를 가져오기 위해 고객 관리 암호화 키로 암호화된 각 객체에 추가 메타데이터 GET 요청을 수행합니다. 이러한 추가 요청은 표준 Cloud Storage 암호화로 암호화된 객체를 나열하는 것보다 목록을 표시하는 시간을 상당히 느리게 만들 수 있습니다.
  • Cloud Storage는 Cloud KMS에 저장된 비대칭 키의 복호화 부분을 사용하여 고객 관리 암호화 키와 동일한 방식으로 관련 객체를 자동으로 복호화할 수 없습니다.

고객 제공 암호화 키 관련 사항

고객 관리 암호화 외에도 Cloud Storage는 데이터 암호화를 제어하기 위한 방법으로 고객 제공 암호화 키를 제공합니다. 서로 다른 암호화 방법으로 단일 버킷 내 여러 객체를 암호화할 수 있지만 다음에 유의하세요.

  • 단일 객체는 한 번에 하나의 방법으로만 암호화할 수 있습니다.

  • 버킷에 기본 고객 관리 키가 설정되어 있고 요청에 고객 제공 키를 지정하면 Cloud Storage는 고객 제공 키를 사용하여 객체를 암호화합니다.

키 관리

이 섹션에서는 키 순환, 키 교체, 키 버전 사용 중지 또는 폐기 시 고려사항을 설명합니다.

키 순환

Cloud KMS는 새 버전으로의 자동 및 수동 키 순환을 모두 지원합니다. Cloud Storage는 키를 순환한 후 해당 키를 통해 암호화하는 모든 작업에 다음과 같은 새 버전을 사용합니다.

  • 대상 버킷이 해당 키를 기본 암호화 키로 사용하면 객체를 업로드합니다.

  • 특히 작업에서 해당 키를 사용하는 작업을 객체 업로드, 복사, 재작성합니다.

이전 버전의 키는 사용 중지되거나 폐기되지 않으므로 Cloud Storage는 이러한 버전을 사용하여 이전에 암호화된 기존 객체를 복호화할 수 있습니다.

키 교체

Cloud Storage 객체를 암호화하는 데 사용하는 키를 새 키로 교체할 때는 다음 가이드라인을 따르세요.

  1. 버킷을 확인하여 키를 기본 암호화 키로 사용하는 버킷을 확인합니다. 이러한 버킷의 이전 키를 새 키로 바꿉니다.

    이렇게 하면 버킷에 작성된 모든 객체가 앞으로 새 키를 사용하게 됩니다.

  2. 소스 코드를 검사하여 버킷 구성 설정과 객체 업로드, 복사 또는 재작성 등 진행 중인 작업에서 키를 사용하는 요청을 파악합니다. 이러한 인스턴스가 새 키를 사용하도록 업데이트합니다.

  3. 모든 버킷에서 이전 키로 암호화된 객체를 확인합니다. 객체 재작성 메서드를 사용하여 각 객체를 새 키로 다시 암호화합니다.

  4. 이전 키의 모든 버전을 사용 중지합니다. 이전 키 버전을 사용 중지한 후 버전을 사용할 수 없어 실패하는 작업의 클라이언트 및 서비스 로그를 모니터링합니다.

키 버전 사용 중지 또는 폐기

  • 특정 키 버전을 사용 중지하거나 폐기하면 현재 해당 키 버전으로 암호화된 객체를 복호화할 수 없습니다.

    예를 들어 객체를 다운로드, 복사 또는 재작성할 수 없으며 이러한 작업을 시도하는 경우 오류가 발생합니다.

    • 키 버전을 사용 중지한 경우 다시 사용 설정할 수 있습니다. 다시 사용 설정하면 해당 키 버전으로 암호화된 객체에 액세스할 수 있습니다.

    • 키 버전을 폐기하면 해당 버전으로 암호화된 객체를 다시는 다운로드할 수 없습니다.

    키 버전을 사용 중지하거나 폐기하기 전에 특정 키 버전을 사용하여 암호화된 모든 버킷의 모든 객체를 확인해야 합니다. 확인이 완료되면 객체 재작성 메서드를 사용하여 새 키 버전, 전체 새 키 또는 서버 측 키를 통해 각 객체를 다시 암호화합니다.

  • 키의 기본 버전을 사용 중지하거나 폐기하면 새로운 기본 버전이 만들어질 때까지 키를 암호화에 사용할 수 없습니다. 예를 들어 기본 버전이 없는 경우는 다음과 같습니다.

    • 키를 객체 업로드, 복사 또는 재작성의 일부로 지정할 수 없습니다.

    • 작업의 일부로 다른 유효한 키를 지정하지 않으면 해당 키가 기본 암호화 키로 설정된 버킷에는 객체를 업로드, 복사 또는 재작성할 수 없습니다.

    키의 기본 버전이 있으면 이 키를 사용하여 객체를 암호화하는 작업이 성공합니다.

    키의 기본 버전인 키 버전을 사용 중지하거나 폐기하기 전에 먼저 이 버전을 기본 버전으로 사용해야 합니다. 다음 중 한 가지 방법을 사용할 수 있습니다.

    • 일반적으로 키 순환을 수행하여 새로운 기본 버전으로 바꿉니다.
    • 암호화에 키를 사용하는 인스턴스를 삭제합니다. 이렇게 하면 Cloud Storage는 암호화에 서버 측 키를 대신 사용합니다.

키 버전 및 잠긴 객체

키 버전에서 잠긴 객체를 암호화하는 경우 객체가 잠긴 보관 정책으로 버킷에 저장되어 있거나 객체에 고유한 잠긴 보관 구성이 있으므로 다음과 같은 조건이 충족되는 경우에만 키 버전을 삭제할 수 있습니다.

  • 암호화된 객체의 보관 만료 시간은 과거여야 합니다.
  • 암호화된 객체에 그 어떤 객체 보존 조치도 적용되지 않아야 합니다.

모든 관련 객체가 이러한 조건을 충족하면 객체를 삭제하지 않고도 키 버전을 삭제할 수 있습니다. 이렇게 하면 영향을 받는 객체 데이터에 영구적으로 액세스할 수 없게 됩니다.

다음 단계