Cloud Storage는 기본적으로 저장된 고객 콘텐츠를 암호화합니다. Cloud Storage는 사용자의 추가 작업 없이 자동으로 암호화를 처리합니다. 이 옵션을 Google 기본 암호화라고 부릅니다.
암호화 키를 제어하려면 Cloud Storage를 포함한 CMEK 통합 서비스와 함께 Cloud KMS에서 고객 관리 암호화 키(CMEK)를 사용하면 됩니다. Cloud KMS 키를 사용하면 보호 수준, 위치, 순환 일정, 사용 및 액세스 권한, 암호화 경계를 관리할 수 있습니다. Cloud KMS를 사용하면 키 사용을 추적하고, 감사 로그를 보고, 키 수명 주기를 제어할 수도 있습니다. Google에서 데이터를 보호하는 대칭 키 암호화 키(KEK)를 소유하고 관리하는 대신 사용자가 Cloud KMS에서 이러한 키를 제어하고 관리할 수 있습니다.
CMEK로 리소스를 설정한 후 Cloud Storage리소스에 액세스하는 환경은 Google 기본 암호화를 사용하는 것과 유사합니다. CMEK에 관한 자세한 내용은 고객 관리 암호화 키(CMEK)를 참조하세요. 수동으로 생성된 CMEK를 사용하여 Cloud Storage 리소스를 보호하는 방법은 고객 관리 암호화 키 사용을 참조하세요.
Cloud Storage를 사용할 때의 다른 암호화 옵션에 관한 자세한 내용은 데이터 암호화 옵션을 참조하세요.
Cloud KMS Autokey를 사용하는 CMEK
CMEK를 수동으로 만들어 Cloud Storage 버킷과 그 안에 있는 객체를 보호하거나 Cloud KMS Autokey를 사용할 수 있습니다. Autokey를 사용하면 Cloud Storage에서 리소스를 만들거나 업데이트할 때 필요에 따라 키링과 키가 생성됩니다. 암호화 및 복호화 작업에 키를 사용하는 서비스 에이전트가 없으면 생성되며, 필요한 Identity and Access Management(IAM) 역할이 부여됩니다. 자세한 내용은 Autokey 개요를 참조하세요.
Autokey는 객체의 키를 만들지 않습니다. 기본적으로 버킷의 객체는 버킷 기본 키를 사용합니다. 버킷 기본 키 이외의 키를 사용하여 객체를 암호화하려면 수동으로 CMEK를 만들고 객체를 만들 때 이 키를 사용하면 됩니다.
Cloud KMS Autokey에서 만든 CMEK를 사용하여 Cloud Storage 버킷과 그 내부의 객체를 보호하는 방법을 알아보려면 Cloud Storage 리소스에 Autokey 사용을 참조하세요.
키가 사용되는 시기
CMEK를 객체에 적용하면 Cloud Storage에서 다음을 암호화할 때 이 키를 사용합니다.
- 객체의 데이터
- 객체의 CRC32C 체크섬
- 객체의 MD5 해시
Cloud Storage는 표준 서버 측 키를 사용하여 객체 이름을 포함한 객체의 나머지 메타데이터를 암호화합니다. 따라서 충분한 권한이 있는 경우 연결된 CMEK를 사용 중지하거나 폐기한 후에도 대부분의 메타데이터 읽기, 객체 나열, 객체 삭제와 같은 작업을 수행할 수 있습니다.
서비스 에이전트
각 프로젝트에는 CMEK를 사용하여 암호화 및 복호화를 수행하는 서비스 에이전트라는 특수한 Cloud Storage 서비스 계정이 있습니다. 암호화 키에 대한 액세스 권한을 서비스 에이전트에 부여하면 서비스 에이전트가 다음을 암호화합니다.
- 해당 키를 기본 키로 사용하는 버킷에 추가되는 객체
- 해당 키로 암호화하도록 지정된 특정 객체
Cloud Storage에서 객체를 추가하거나 재작성할 때 버킷에 기본 키가 설정되어 있는데 요청에도 특정 키를 포함한 경우, Cloud Storage는 요청의 특정 키를 사용하여 객체를 암호화합니다.
CMEK로 암호화된 객체를 읽으려는 요청자는 평소처럼 객체에 액세스합니다. 다음 조건에 해당하면 이러한 요청 중에 서비스 에이전트가 요청된 객체를 자동으로 복호화합니다.
- 키를 사용하여 복호화할 수 있는 권한을 서비스 에이전트가 여전히 보유하고 있습니다.
- 키를 비활성화하거나 폐기하지 않았습니다.
위 조건 중 하나를 충족하지 못하면 서비스 에이전트가 데이터를 복호화하지 않으며 요청이 실패합니다.
제한사항
CMEK 사용 시 다음 제한사항이 적용됩니다.
객체의 메타데이터를 업데이트하여 CMEK로 객체를 암호화할 수는 없습니다. 대신 객체 재작성 시 키를 포함하세요.
gcloud storage
는objects update
명령어를 사용하여 객체에 암호화 키를 설정하지만 명령어는 요청의 일부로 객체를 다시 작성합니다.
암호화할 데이터와 같은 위치에 Cloud KMS 키링을 생성해야 합니다. 예를 들어 버킷이
US-EAST1
에 있는 경우 해당 버킷의 객체를 암호화하는 데 사용되는 키링도US-EAST1
에 생성되어야 합니다.이중 리전의 경우 Cloud KMS 키링 위치는 이중 리전의 위치 코드와 일치해야 합니다. 예를 들어 버킷이 구성 가능한 이중 리전 쌍
US-EAST1
,US-WEST1
에 있는 경우 해당 버킷의 객체를 암호화하는 데 사용되는 모든 키링은 이 버킷의 위치 코드와 일치하는US
멀티 리전에서 생성되어야 합니다. 버킷이 사전 정의된 이중 리전NAM4
에 있는 경우 동일한 사전 정의된 이중 리전NAM4
에 키링을 만들어야 합니다.사용 가능한 Cloud KMS 위치는 Cloud KMS 위치를 참조하세요.
Cloud KMS 암호화 및 복호화 비율에는 할당량이 적용됩니다.
JSON API를 사용하여 객체를 나열할 때는 CMEK로 암호화된 객체의 CRC32C 체크섬 및 MD5 해시가 반환되지 않습니다.
- 해당하는 경우
gcloud storage
와 같은 일부 도구는 CRC32C 및 MD5 정보를 가져오기 위해 CMEK로 암호화된 각 객체에 추가 메타데이터GET
요청을 수행합니다. 이러한 추가 요청은 표준 Cloud Storage 암호화로 암호화된 객체를 나열할 때보다 목록을 표시하는 시간을 상당히 지연시킬 수 있습니다.
- 해당하는 경우
대칭 암호화 키만 CMEK로 사용할 수 있습니다.
고객 제공 암호화 키 관련 사항
고객 관리 암호화 외에도 Cloud Storage는 데이터 암호화를 제어하기 위한 방법으로 고객 제공 암호화 키를 제공합니다. 서로 다른 암호화 방법으로 단일 버킷 내 여러 객체를 암호화할 수 있지만 다음에 유의하세요.
단일 객체는 한 번에 하나의 방법으로만 암호화할 수 있습니다.
버킷에 기본 CMEK가 설정되어 있고 요청에 고객 제공 키를 지정하면 Cloud Storage는 고객 제공 키를 사용하여 객체를 암호화합니다.
키 관리
이 섹션에서는 키 순환, 키 교체, 키 버전 사용 중지 또는 폐기 시 고려사항을 설명합니다.
키 순환
Cloud KMS는 새 버전으로의 자동 및 수동 키 순환을 모두 지원합니다. Cloud Storage는 키를 순환한 후 해당 키를 통해 암호화하는 모든 작업에 다음과 같은 새 버전을 사용합니다.
대상 버킷이 해당 키를 기본 암호화 키로 사용하면 객체를 업로드합니다.
특히 작업에서 해당 키를 사용하는 작업을 객체 업로드, 복사, 재작성합니다.
이전 버전의 키는 사용 중지되거나 폐기되지 않으므로 Cloud Storage는 이러한 버전을 사용하여 이전에 암호화된 기존 객체를 복호화할 수 있습니다.
키 교체
Cloud Storage 객체를 암호화하는 데 사용하는 키를 새 키로 교체할 때는 다음 가이드라인을 따르세요.
버킷을 확인하여 키를 기본 암호화 키로 사용하는 버킷을 확인합니다. 이러한 버킷의 이전 키를 새 키로 바꿉니다.
이렇게 하면 버킷에 작성된 모든 객체가 앞으로 새 키를 사용하게 됩니다.
소스 코드를 검사하여 버킷 구성 설정과 객체 업로드, 복사 또는 재작성 등 진행 중인 작업에서 키를 사용하는 요청을 파악합니다. 이러한 인스턴스가 새 키를 사용하도록 업데이트합니다.
모든 버킷에서 이전 키로 암호화된 객체를 확인합니다. 객체 재작성 메서드를 사용하여 각 객체를 새 키로 다시 암호화합니다.
이전 키의 모든 버전을 사용 중지합니다. 이전 키 버전을 사용 중지한 후 버전을 사용할 수 없어 실패하는 작업의 클라이언트 및 서비스 로그를 모니터링합니다.
키 버전 사용 중지 또는 폐기
특정 키 버전을 사용 중지하거나 폐기하면 현재 해당 키 버전으로 암호화된 객체를 복호화할 수 없습니다.
예를 들어 객체를 다운로드, 복사 또는 재작성할 수 없으며 이러한 작업을 시도하는 경우 오류가 발생합니다.
키 버전을 사용 중지한 경우 다시 사용 설정할 수 있습니다. 다시 사용 설정하면 해당 키 버전으로 암호화된 객체에 액세스할 수 있습니다.
키 버전을 폐기하면 해당 버전으로 암호화된 객체를 다시는 다운로드할 수 없습니다.
키 버전을 사용 중지하거나 폐기하기 전에 특정 키 버전을 사용하여 암호화된 모든 버킷의 모든 객체를 확인해야 합니다. 확인이 완료되면 객체 재작성 메서드를 사용하여 새 키 버전, 전체 새 키 또는 서버 측 키를 통해 각 객체를 다시 암호화합니다.
키의 기본 버전을 사용 중지하거나 폐기하면 새로운 기본 버전이 만들어질 때까지 키를 암호화에 사용할 수 없습니다. 예를 들어 기본 버전이 없는 경우는 다음과 같습니다.
키를 객체 업로드, 복사 또는 재작성의 일부로 지정할 수 없습니다.
작업의 일부로 다른 유효한 키를 지정하지 않으면 해당 키가 기본 암호화 키로 설정된 버킷에는 객체를 업로드, 복사 또는 재작성할 수 없습니다.
키의 기본 버전이 있으면 이 키를 사용하여 객체를 암호화하는 작업이 성공합니다.
키의 기본 버전인 키 버전을 사용 중지하거나 폐기하기 전에 먼저 이 버전을 기본 버전으로 사용해야 합니다. 다음 중 한 가지 방법을 사용할 수 있습니다.
키 버전 및 잠긴 객체
키 버전에서 잠긴 객체를 암호화하는 경우 객체가 잠긴 보관 정책으로 버킷에 저장되어 있거나 객체에 고유한 잠긴 보관 구성이 있으므로 다음과 같은 조건이 충족되는 경우에만 키 버전을 삭제할 수 있습니다.
- 암호화된 객체의 보관 만료 시간은 과거여야 합니다.
- 암호화된 객체에 그 어떤 객체 보존 조치도 적용되지 않아야 합니다.
모든 관련 객체가 이러한 조건을 충족하면 객체를 삭제하지 않고도 키 버전을 삭제할 수 있습니다. 이렇게 하면 영향을 받는 객체 데이터에 영구적으로 액세스할 수 없게 됩니다.
다음 단계
- Cloud Storage 버킷과 객체에서 CMEK를 설정합니다.
- Cloud Storage의 암호화에 대해 자세히 알아보기
- Cloud KMS에 대해 자세히 알아보기