이 문서에서는 Cloud Storage 버킷의 새 객체에 허용되거나 제한되는 암호화 방법을 구성하는 방법을 설명합니다. 버킷 내에서 생성되는 새 객체에 대해 표준 암호화(Google 기본 암호화), 고객 관리 암호화 키 (CMEK) 또는 고객 제공 암호화 키 (CSEK)의 사용을 강제하거나 제한하도록 버킷을 구성할 수 있습니다.
예를 들어 암호화 키 관리에 관한 규정 준수 요구사항을 충족하기 위해 모든 새 객체를 표준 암호화 또는 CMEK로 암호화하도록 요구하고 고객 제공 암호화 키의 사용을 제한할 수 있습니다.
사용 가능한 암호화 방법에 관한 자세한 내용은 데이터 암호화 옵션을 참고하세요.
Cloud Storage는 객체 업로드, 객체 복사, 객체 구성, 소프트 삭제 객체 복원 등 새 객체를 만드는 모든 작업에 암호화 구성을 적용합니다.
시작하기 전에
버킷의 암호화 시행을 구성하는 데 필요한 권한을 얻으려면 관리자에게 버킷에 대한 스토리지 관리자 (roles/storage.admin) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 버킷의 암호화 시행을 구성하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
버킷의 암호화 시행을 구성하려면 다음 권한이 필요합니다.
-
새 버킷을 만들 때 구성을 설정합니다.
storage.buckets.create -
기존 버킷의 구성을 업데이트합니다.
storage.buckets.update
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
암호화 유형을 적용하는 버킷 만들기
새 버킷을 만들 때 버킷의 객체에 허용되거나 제한되는 암호화 방법을 지정할 수 있습니다.
버킷에 기본 Cloud KMS 키를 설정하는 경우 CMEK 또는 고객 제공 암호화 키를 사용한 암호화도 허용해야 합니다.
gcloud
다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "gmekEnforcement": {"restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"}, "cmekEnforcement": {"restrictionMode": "CMEK_RESTRICTION_MODE"}, "csekEnforcement": {"restrictionMode": "CSEK_RESTRICTION_MODE"} }
다음을 바꿉니다.
-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.
-
gcloud storage buckets create명령어를--encryption-enforcement-file플래그와 함께 사용합니다.gcloud storage buckets create gs://BUCKET_NAME \ --encryption-enforcement-file=ENCRYPTION_ENFORCEMENT_FILE
다음을 바꿉니다.
BUCKET_NAME: 버킷의 이름입니다.ENCRYPTION_ENFORCEMENT_FILE: 이전 단계에서 만든 JSON 파일의 경로
클라이언트 라이브러리
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
REST API
JSON API
Authorization헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.버킷의 설정이 포함된 JSON 파일을 만듭니다. 전체 설정 목록은 Buckets: Insert 문서를 참고하세요. 다음 설정은 버킷 이름과 암호화만 정의합니다.
{ "name": "BUCKET_NAME", "encryption": { "googleManagedEncryptionEnforcementConfig": { "restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE" }, "customerManagedEncryptionEnforcementConfig": { "restrictionMode": "CMEK_RESTRICTION_MODE" }, "customerSuppliedEncryptionEnforcementConfig": { "restrictionMode": "CSEK_RESTRICTION_MODE" } } }
다음을 바꿉니다.
BUCKET_NAME: 버킷의 이름입니다.-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.
cURL을 사용하여POST버킷 요청으로 JSON API를 호출합니다.curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b?project=PROJECT_ID"
다음을 바꿉니다.
JSON_FILE_NAME: 이전 단계에서 만든 JSON 파일의 경로PROJECT_ID: 버킷의 프로젝트 ID 또는 번호입니다.
XML API
Authorization헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.버킷의 설정이 포함된 XML 파일을 만듭니다. 전체 설정 목록은 XML: 버킷 만들기 문서를 참고하세요. 다음 설정은 암호화 시행만 정의합니다.
<CreateBucketConfiguration> <EncryptionConfiguration> <GoogleManagedEncryptionEnforcement> <RestrictionMode>STANDARD_ENCRYPTION_RESTRICTION_MODE</RestrictionMode> </GoogleManagedEncryptionEnforcement> <CustomerManagedEncryptionEnforcement> <RestrictionMode>CMEK_RESTRICTION_MODE</RestrictionMode> </CustomerManagedEncryptionEnforcement> <CustomerSuppliedEncryptionEnforcement> <RestrictionMode>CSEK_RESTRICTION_MODE</RestrictionMode> </CustomerSuppliedEncryptionEnforcement> </EncryptionConfiguration> </CreateBucketConfiguration>
다음을 바꿉니다.
-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다. 특정 암호화 유형의 시행 구성을 생략하면 해당 암호화 유형이 기본적으로 허용됩니다.
-
cURL을 사용하여PUT버킷 요청으로 XML API를 호출합니다.curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-project-id: PROJECT_ID" \ "https://storage.googleapis.com/BUCKET_NAME"
다음을 바꿉니다.
XML_FILE_NAME: 이전 단계에서 만든 XML 파일의 경로입니다.PROJECT_ID: 버킷의 프로젝트 ID 또는 번호입니다.BUCKET_NAME: 버킷의 이름입니다.
버킷에 허용되는 암호화 유형 업데이트
기존 버킷의 새 객체에 허용되는 암호화 방법을 업데이트하려면 다음 단계를 완료하세요.
버킷에 기본 KMS 키가 설정되어 있으면 새 객체가 생성되지 않으므로 CMEK와 고객 제공 암호화 키를 모두 제한할 수 없습니다. 해당 버킷에서 CMEK 또는 CSEK를 허용하거나 버킷에서 기본 Cloud KMS 키를 삭제하세요.
gcloud
다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "gmekEnforcement": {"restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE"}, "cmekEnforcement": {"restrictionMode": "CMEK_RESTRICTION_MODE"}, "csekEnforcement": {"restrictionMode": "CSEK_RESTRICTION_MODE"} }
다음을 바꿉니다.
-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다. 암호화 유형을 생략하면 기존 구성이 유지됩니다.
-
gcloud storage buckets update명령어를--encryption-enforcement-file플래그와 함께 사용합니다.gcloud storage buckets update gs://BUCKET_NAME \ --encryption-enforcement-file=ENCRYPTION_ENFORCEMENT_FILE
다음을 바꿉니다.
BUCKET_NAME: 버킷의 이름입니다.ENCRYPTION_ENFORCEMENT_FILE: 이전 단계에서 만든 JSON 파일의 경로
업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.
클라이언트 라이브러리
C#
자세한 내용은 Cloud Storage C# API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참조 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
REST API
JSON API
Authorization헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.다음 정보를 포함하는 JSON 파일을 만듭니다.
{ "encryption": { "googleManagedEncryptionEnforcementConfig": { "restrictionMode": "STANDARD_ENCRYPTION_RESTRICTION_MODE" }, "customerManagedEncryptionEnforcementConfig": { "restrictionMode": "CMEK_RESTRICTION_MODE" }, "customerSuppliedEncryptionEnforcementConfig": { "restrictionMode": "CSEK_RESTRICTION_MODE" } } }
다음을 바꿉니다.
-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다. 암호화 유형을 생략하면 기존 구성이 유지됩니다.
-
cURL을 사용하여PATCH버킷 요청으로 JSON API를 호출합니다.curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
다음을 바꿉니다.
JSON_FILE_NAME: 이전 단계에서 만든 JSON 파일의 경로BUCKET_NAME: 버킷의 이름입니다.
업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.
XML API
Authorization헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.버킷의 암호화 설정이 포함된 XML 파일을 만듭니다. 다음 설정은 암호화 시행 구성만 정의합니다.
<EncryptionConfiguration> <GoogleManagedEncryptionEnforcement> <RestrictionMode>STANDARD_ENCRYPTION_RESTRICTION_MODE</RestrictionMode> </GoogleManagedEncryptionEnforcement> <CustomerManagedEncryptionEnforcement> <RestrictionMode>CMEK_RESTRICTION_MODE</RestrictionMode> </CustomerManagedEncryptionEnforcement> <CustomerSuppliedEncryptionEnforcement> <RestrictionMode>CSEK_RESTRICTION_MODE</RestrictionMode> </CustomerSuppliedEncryptionEnforcement> </EncryptionConfiguration>
다음을 바꿉니다.
-
STANDARD_ENCRYPTION_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 표준 암호화 (Google 기본 암호화)를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 표준 암호화를 사용할 수 있습니다.FullyRestricted: 새 객체는 표준 암호화를 사용할 수 없습니다.
-
CMEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 CMEK를 사용한 암호화가 허용되는지 여부입니다. 다음 값이 지원됩니다.NotRestricted: 새 객체는 CMEK를 사용할 수 있습니다.FullyRestricted: 새 객체는 CMEK를 사용할 수 없습니다.
-
CSEK_RESTRICTION_MODE: 이 버킷에서 객체를 만들 때 고객 제공 암호화 키를 사용한 암호화가 허용되는지 여부입니다. 다음과 같은 값이 지원됩니다.NotRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 있습니다.FullyRestricted: 새 객체는 고객 제공 암호화 키를 사용할 수 없습니다.
하나 이상의 암호화 유형을 허용해야 합니다.
-
cURL을 사용하여 범위가?encryptionConfig인PUT버킷 요청으로 XML API를 호출합니다.curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
다음을 바꿉니다.
XML_FILE_NAME: 이전 단계에서 만든 XML 파일의 경로입니다.BUCKET_NAME: 버킷의 이름입니다.
업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.
버킷의 암호화 설정 보기
버킷에 허용되는 암호화 방법을 확인하는 단계는 버킷 메타데이터 가져오기를 참고하세요.