이 문서에서는 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 파일의 경로
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.s3nsapis.fr/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.s3nsapis.fr/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분이 걸릴 수 있습니다.
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.s3nsapis.fr/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.s3nsapis.fr/BUCKET_NAME?encryptionConfig"
다음을 바꿉니다.
XML_FILE_NAME: 이전 단계에서 만든 XML 파일의 경로입니다.BUCKET_NAME: 버킷의 이름입니다.
업데이트된 구성이 적용되는 데 최대 2분이 걸릴 수 있습니다.
버킷의 암호화 설정 보기
버킷에 허용되는 암호화 방법을 확인하는 단계는 버킷 메타데이터 가져오기를 참고하세요.