本頁說明如何搭配使用 Cloud Storage 與手動建立的 Cloud Key Management Service 加密金鑰,包括在值區中設定預設金鑰,以及將金鑰新增至個別物件。Cloud KMS 加密金鑰為「客戶代管的加密金鑰」 (CMEK)。這類金鑰是透過 Cloud KMS 建立及管理,並以軟體金鑰的形式儲存在 HSM 叢集或外部。
如要改用 Cloud KMS Autokey 功能,視需要產生金鑰環和金鑰,保護 Cloud Storage 值區和其中的物件,請參閱搭配 Cloud Storage 資源使用 Autokey。如要比較 CMEK 與使用 Autokey 的 Cloud KMS 和 Google 預設加密機制,並決定適合您的金鑰類型,請參閱「CMEK 與 Google-owned and Google-managed encryption keys」。
事前準備
在 Cloud Storage 中使用這項功能之前,請務必:
針對要用來儲存加密金鑰的專案啟用 Cloud KMS API。
針對要用來儲存加密金鑰的專案取得足夠的權限:
如果您擁有要用來儲存金鑰的專案,代表您非常有可能已經具備必要權限。
如果您打算建立新的加密金鑰環和金鑰,您必須具備
cloudkms.keyRings.create
和cloudkms.cryptoKeys.create
權限。無論您要使用新的或現有的金鑰環和金鑰,都必須針對要用於加密的金鑰具備
cloudkms.cryptoKeys.setIamPolicy
權限。這項權限可讓您向 Cloud Storage 服務代理授予 Cloud KMS 金鑰的存取權。
Cloud KMS 管理員角色中包含了以上所有權限。
如需取得這個角色或其他 Cloud KMS 角色的說明,請參閱對 Cloud KMS 使用身分與存取權管理一文。
具備 Cloud KMS 金鑰環,並且在金鑰環中至少具備一組金鑰。
金鑰環的位置必須與待加密資料相同,但可以位於不同專案。如需 Cloud KMS 可用位置資訊,請參閱 Cloud KMS 位置。
針對要在 Cloud Storage 值區中使用的物件取得足夠的權限:
-
針對與包含 Cloud Storage 值區的專案相關聯的服務代理,取得服務代理的電子郵件地址。執行這個步驟時,系統會自動建立服務代理 (如果目前沒有的話)。
為服務代理指派 Cloud KMS 金鑰
如要使用 CMEK,請授予與值區相關聯的 Cloud Storage 服務代理,使用 Cloud KMS 金鑰加密及解密的權限:
控制台
- 前往 Google Cloud 控制台的「金鑰管理」頁面。
按一下包含要使用金鑰的金鑰環名稱。
選取要使用金鑰的核取方塊。
右邊窗格的「Permissions」(權限) 分頁隨即顯示。
在「新增主體」對話方塊中,指定授予存取權的 Cloud Storage 服務代理程式電子郵件地址。
在「Select a role」(選取角色) 下拉式清單中,選取 [Cloud KMS CryptoKey Encrypter/Decrypter] (Cloud KMS CryptoKey 加密者/解密者)。
按一下「新增」。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage service-agent
指令搭配 --authorize-cmek
標記,為與值區相關聯的服務代理提供利用 Cloud KMS 金鑰加密或解密物件的權限:
gcloud storage service-agent --project=PROJECT_STORING_OBJECTS --authorize-cmek=KEY_RESOURCE
其中:
PROJECT_STORING_OBJECTS
是包含您要加密或解密之物件的專案 ID 或編號。例如:my-pet-project
。KEY_RESOURCE
是您的 Cloud KMS 金鑰資源。
用戶端程式庫
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "policy": { "bindings": { "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", "members": "serviceAccount:SERVICE_AGENT_EMAIL_ADDRESS" }, } }
其中
SERVICE_AGENT_EMAIL_ADDRESS
是與服務代理程式相關聯的電子郵件地址。例如:service-7550275089395@gs-project-accounts.iam.gserviceaccount.com
。使用
cURL
透過POST setIamPolicy
要求呼叫 Cloud KMS API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"
其中:
JSON_FILE_NAME
是您在步驟 2 建立的 JSON 檔案路徑。KEY_RESOURCE
是您的 Cloud KMS 金鑰資源。
XML API
XML API 無法用於將 Cloud KMS 指派到服務代理程式。請改用 gcloud CLI 等其他 Cloud Storage 工具。
使用預設加密金鑰
設定 bucket 的預設金鑰
如要在寫入物件到值區時,新增、變更或移除依預設使用的 Cloud KMS 金鑰:
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下所需值區的名稱。
在「Bucket details」(值區詳細資料) 頁面中,按一下「Configuration」(設定) 分頁標籤。
按一下與「加密類型」項目相關的鉛筆圖示。
設定或移除值區的預設 Cloud KMS 金鑰。
如果該值區目前並未使用 Cloud KMS 金鑰,請選取「客戶管理的金鑰」圓形按鈕,然後在相關聯的下拉式選單中選取其中一個可用金鑰。
如果該值區目前使用 Cloud KMS 金鑰,請在下拉式選單中變更 Cloud KMS 金鑰,或選取 Google-managed encryption key 圓形按鈕來移除 Cloud KMS 金鑰。
按一下 [儲存]。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用 gcloud storage buckets update
指令並加上適當的旗標:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME
是相關值區的名稱。例如:my-bucket
。FLAG
是值區中預設金鑰的所需設定。請使用下列其中一種格式:--default-encryption-key=
和 Cloud KMS 金鑰資源 (如要新增或變更預設金鑰)。--clear-default-encryption-key
,如要移除 Bucket 的預設金鑰。
如果成功,回應如下所示:
Updating gs://my-bucket/... Completed 1
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
下例示範如何對值區設定預設的客戶管理加密金鑰:
下例示範如何從值區移除預設的客戶代管加密金鑰:
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
其中
KEY_RESOURCE
是您的 Cloud KMS 金鑰資源。如要從值區移除預設的 Cloud KMS 金鑰,請在 JSON 檔案中使用下列項目:
{ "encryption": { "defaultKmsKeyName": null } }
使用
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
是您在步驟 2 建立的 JSON 檔案路徑。BUCKET_NAME
是相關值區的名稱。例如:my-bucket
。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 XML 檔案:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
其中
KEY_RESOURCE
是您的 Cloud KMS 金鑰資源。如要從值區移除預設的 Cloud KMS 金鑰,請在 XML 檔案中使用下列項目:
<EncryptionConfiguration></EncryptionConfiguration>
使用
cURL
透過PUT
值區要求和encryptionConfig
查詢字串參數呼叫 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
是您在步驟 2 建立的 XML 檔案路徑。BUCKET_NAME
是相關值區的名稱。例如:my-bucket
。
查看值區的預設金鑰
如要查看目前為值區預設的 Cloud KMS 金鑰:
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下所需值區的名稱。
在「Bucket details」(值區詳細資料) 頁面中,按一下「Configuration」(設定) 分頁標籤。
目前值區預設的金鑰會出現在「Encryption key」(加密金鑰) 欄位。
如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。
指令列
使用加上 --format
旗標的 gcloud storage buckets describe
指令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_kms_key)"
其中 BUCKET_NAME
是您要查看其金鑰的值區名稱。例如:my-bucket
。
如果成功,回應如下所示:
default_kms_key: KEY_RESOURCE
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看預設的 KMS 金鑰,請按照顯示值區中繼資料的指示操作,並在回應中尋找預設的 KMS 金鑰欄位。REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過包含所需fields
的GET
值區要求呼叫 JSON API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
其中
BUCKET_NAME
是您要查看其金鑰的值區名稱。例如:my-bucket
。回應類似下列範例:
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過包含encryption
查詢參數的GET
值區要求呼叫 XML API:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
其中
BUCKET_NAME
是您要查看其金鑰的值區名稱。例如:my-bucket
。回應類似下列範例:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
使用 Cloud KMS 金鑰加密物件
您可以使用 Cloud KMS 金鑰加密個別物件。如果您要使用值區預設金鑰組的另一個金鑰,或者值區上沒有預設金鑰組時,這種方式即可派上用場。用於加密物件的金鑰資源名稱會儲存在物件的中繼資料中。
控制台
Google Cloud 主控台無法用於指定個別物件的 Cloud KMS 金鑰。請改用 gcloud CLI 或用戶端程式庫。
指令列
使用 gcloud storage cp
指令並加上 --encryption-key
旗標:
gcloud storage cp SOURCE_DATA gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KEY_RESOURCE
其中:
SOURCE_DATA
是您要加密的資料來源位置。這可以是cp
指令支援的任何來源位置。例如gs://my-bucket/pets/old-dog.png
。BUCKET_NAME
是這項複製指令的目的地 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是最終加密物件的名稱。例如:pets/new-dog.png
。KEY_RESOURCE
是要用於加密物件的 Cloud KMS 金鑰資源。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。將物件的資料新增至要求主體。
使用
cURL
透過POST
物件要求呼叫 JSON API:curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME&kmsKeyName=KEY_RESOURCE"
其中:
OBJECT
是您要上傳的物件路徑。例如:Desktop/dog.png
。OBJECT_CONTENT_TYPE
是物件的內容類型。例如:image/png
。BUCKET_NAME
是您要向其上傳物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要上傳的物件名稱,並經過網址編碼。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。KEY_RESOURCE
是 Cloud KMS 金鑰資源。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。將物件的資料新增至要求主體。
使用
cURL
透過PUT
物件要求呼叫 XML API:curl -X PUT --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-kms-key-name: KEY_RESOURCE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
OBJECT
是您要上傳的物件路徑。例如:Desktop/dog.png
。OBJECT_CONTENT_TYPE
是物件的內容類型。例如:image/png
。BUCKET_NAME
是您要向其上傳物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要上傳的物件名稱,並經過網址編碼。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。KEY_RESOURCE
是您的 Cloud KMS 金鑰資源。
從客戶提供的金鑰輪替為 Cloud KMS 金鑰
如果物件是使用客戶提供的加密金鑰加密,您可以重寫物件來輪替金鑰,改用 Cloud KMS 金鑰:
控制台
您無法使用 Google Cloud 主控台逐一變更物件的加密金鑰。請改用 gcloud CLI 或用戶端程式庫。
指令列
使用 gcloud storage objects update
指令並加上適當的旗標:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KMS_KEY --decryption-keys=CSEK_KEY
其中:
BUCKET_NAME
是包含要輪替金鑰物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要輪替其金鑰的物件名稱。例如:pets/dog.png
。KMS_KEY
是您要用來加密物件的 Cloud KMS 金鑰資源。CSEK_KEY
是物件目前使用的客戶提供加密金鑰。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過POST
物件要求呼叫 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -H "x-goog-copy-source-encryption-algorithm: AES256" \ -H "x-goog-copy-source-encryption-key: OLD_ENCRYPTION_KEY" \ -H "x-goog-copy-source-encryption-key-sha256: HASH_OF_OLD_KEY" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?kmsKeyName=KEY_RESOURCE"
其中:
OLD_ENCRYPTION_KEY
是用於加密物件的目前 AES-256 金鑰。HASH_OF_OLD_KEY
是 AES-256 金鑰的目前 SHA-256 雜湊。BUCKET_NAME
是包含相關物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要輪替其金鑰的物件名稱 (經過網址編碼)。例如:pets/dog.png
,網址編碼為pets%2Fdog.png
。KEY_RESOURCE
是 Cloud KMS 金鑰資源。
XML API
XML API 不支援透過重寫物件,將客戶提供的加密金鑰輪替為 Cloud KMS 金鑰。如要使用 XML API 執行這類輪替作業,請按照下列步驟操作:
。
找出用來加密物件的金鑰
如要找出用來加密物件的 Cloud KMS 金鑰:
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下包含所需物件的值區名稱。
系統會開啟「Bucket details」(值區詳細資料) 頁面,並選取「Objects」(物件) 分頁標籤。
前往物件 (可能位於資料夾中)。
在「Encryption」(加密) 資料欄中,將滑鼠游標移到想要的物件項目上。
金鑰名稱和版本會如以下格式顯示:
LOCATION/KEY_RING_NAME/KEY_NAME/KEY_VERSION
指令列
使用 gcloud storage objects describe
指令並加上 --format
旗標:
gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(kms_key)"
其中:
BUCKET_NAME
是包含加密物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是加密物件的名稱。例如:pets/dog.png
。
如果成功,回應如下所示:
kms_key: projects/my-pet-project/locations/LOCATION_NAME/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/VERSION_NUMBER
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。Go
詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。Java
詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。Node.js
詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。PHP
詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。Python
詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如要查看與物件相關聯的 KMS 金鑰,請按照顯示物件中繼資料的操作說明,在回應中尋找 KMS 金鑰名稱欄位。REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過GET
物件要求呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
其中:
BUCKET_NAME
是包含加密物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是加密物件的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過GET
物件要求呼叫 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?encryption"
其中:
BUCKET_NAME
是包含加密物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是加密物件的網址編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。
解密物件
只要相關服務代理程式具有 Cloud KMS 金鑰的存取權,系統就會針對使用該金鑰加密的物件,自動執行解密。詳情請參閱「使用 CMEK 的服務代理程式」。
後續步驟
- 進一步瞭解 Cloud Storage 中的 CMEK。
- 瞭解 Cloud Storage 提供的其他加密選項。
- 輪替 Cloud KMS 金鑰。
- 探索可與 Cloud KMS 搭配使用的其他產品。
- 瞭解
restrictNonCmekServices
和restrictCmekCryptoKeyProjects
機構政策限制,進一步控管 Cloud KMS 金鑰的使用情形。