您可以搭配 Cloud Key Management Service 使用客戶自行管理的加密金鑰 (CMEK)。您可透過 Cloud KMS 建立及管理 CMEK。如要概略瞭解所有加密選項,請參閱「資料加密選項」。
您可以使用手動建立的 Cloud KMS 加密金鑰,保護 Cloud Storage 資料。舉例來說,您可以在 bucket 中設定預設金鑰,或使用 Cloud KMS 金鑰加密個別物件。
這些金鑰可以儲存為軟體金鑰或外部金鑰。事前準備
在 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 bucket 中的物件:
-
取得與專案相關聯的服務代理電子郵件地址,該專案包含您的 Cloud Storage bucket。執行這個步驟時,如果服務代理尚不存在,系統會自動建立。
將 Cloud KMS 金鑰指派給服務代理
如要使用 CMEK,請將權限授予與 bucket 相關聯的 Cloud Storage 服務代理,允許該代理使用 Cloud KMS 金鑰進行加密和解密:
控制台
- 前往 Cloud de Confiance 控制台的「Key management」(金鑰管理) 頁面。
按一下包含要使用金鑰的金鑰環名稱。
選取要使用金鑰的核取方塊。
右側視窗窗格會顯示「權限」分頁標籤。
在「Add principals」(新增主體) 對話方塊中,指定要授予存取權的 Cloud Storage 服務代理電子郵件地址。
在「Select a role」(選取角色) 下拉式清單中,選取 [Cloud KMS CryptoKey Encrypter/Decrypter] (Cloud KMS CryptoKey 加密者/解密者)。
按一下「新增」。
如要瞭解如何在 Cloud de Confiance 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 gcloud storage service-agent 指令和 --authorize-cmek 旗標,將權限授予與 bucket 相關聯的服務代理,允許該服務代理使用 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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
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.s3ns-system.iam.gserviceaccount.com。使用
cURL呼叫 Cloud KMS API,並發出POST setIamPolicy要求: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 指派給服務代理程式。請改用其他 Cloud Storage 工具,例如 gcloud CLI。
使用預設加密金鑰
以下各節說明如何使用預設加密金鑰。
設定 bucket 的預設金鑰
如要新增、變更或移除物件寫入 bucket 時預設使用的 Cloud KMS 金鑰,請按照下列步驟操作:
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選 bucket 名稱。
按一下 [設定] 標籤。
在「保護」部分,按一下「編輯加密」。
在「預設加密金鑰類型」部分,執行下列任一操作:
如要新增或變更 bucket 的預設 Cloud KMS 金鑰,請選取「Cloud KMS 金鑰」。然後從清單中選取其中一個可用金鑰。
如要移除預設 Cloud KMS 金鑰,請選取 Google Cloud-powered encryption key。
按一下 [儲存]。
如要瞭解如何在 Cloud de Confiance 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 gcloud storage buckets update 指令,並加上適當的旗標:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME是相關 bucket 的名稱。例如: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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 移除預設的 CMEK:
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 移除預設的 CMEK:
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 移除預設的 CMEK:
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
下列範例會為 bucket 設定預設 CMEK:
下列範例會從 bucket 移除預設的 CMEK:
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 中移除預設的客戶自行管理加密金鑰:
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 中移除預設的客戶自行管理加密金鑰:
Python
詳情請參閱「Cloud Storage Python API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
以下範例會在 bucket 上設定預設的客戶自行管理加密金鑰:
下列範例會從 bucket 移除預設的 CMEK:
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
下列範例會為 bucket 設定預設 CMEK:
下列範例會從 bucket 移除預設的 CMEK:
Rust
下列範例會為 bucket 設定預設 CMEK:
下列範例會從 bucket 移除預設的 CMEK:
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
其中
KEY_RESOURCE是 Cloud KMS 金鑰資源。如要從 bucket 移除預設 Cloud KMS 金鑰,請在 JSON 檔案中使用下列內容:
{ "encryption": { "defaultKmsKeyName": null } }
使用
cURL呼叫 JSON API,並發出PATCHBucket 要求: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是您在步驟 2 建立的 JSON 檔案路徑。BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立包含下列資訊的 XML 檔案:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
其中
KEY_RESOURCE是 Cloud KMS 金鑰資源。如要從 bucket 移除預設 Cloud KMS 金鑰,請在 XML 檔案中使用下列項目。
<EncryptionConfiguration></EncryptionConfiguration>
使用
cURL透過PUTBucket 要求和encryptionConfig查詢字串參數呼叫 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是您在步驟 2 建立的 XML 檔案路徑。BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。
查看 bucket 的預設金鑰
如要查看設為 bucket 預設值的 Cloud KMS 金鑰,請按照下列步驟操作:
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下 bucket 名稱。
按一下 [設定] 標籤。
值區的預設金鑰會顯示在「預設加密金鑰類型」欄位中。
如要瞭解如何在 Cloud de Confiance 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 gcloud storage buckets describe 指令,並加上 --format 旗標:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_kms_key)"
其中 BUCKET_NAME 是要查看金鑰的 bucket 名稱。例如:my-bucket。
如果成功,回應如下所示:
default_kms_key: KEY_RESOURCE
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱「Cloud Storage Ruby API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送包含所需fields的 � Bucket 要求:GETcurl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME?fields=encryption"
其中
BUCKET_NAME是要查看金鑰的 bucket 名稱。例如:my-bucket。回應類似下列範例:
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
XML API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 XML API,並發出包含encryption查詢參數的GETBucket 要求:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/BUCKET_NAME?encryptionConfig"
其中
BUCKET_NAME是要查看金鑰的 bucket 名稱。例如:my-bucket。回應類似下列範例:
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
使用 Cloud KMS 金鑰加密物件
您可以使用 Cloud KMS 金鑰加密個別物件。如果您想使用與 bucket 預設金鑰不同的金鑰,或 bucket 未設定預設金鑰,這項功能就相當實用。用於加密物件的金鑰資源名稱會儲存在物件的中繼資料中。
控制台
Cloud de Confiance 控制台無法用於指定個別物件的 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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。將物件的資料新增至要求主體。
使用
cURL呼叫 JSON API,並發出POSTObject 要求:curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.s3nsapis.fr/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是要上傳物件的 bucket 名稱。例如: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.s3nsapis.fr/BUCKET_NAME/OBJECT_NAME"
其中:
OBJECT是要上傳的物件路徑。例如:Desktop/dog.png。OBJECT_CONTENT_TYPE是物件的內容類型。例如:image/png。BUCKET_NAME是要上傳物件的 bucket 名稱。例如:my-bucket。OBJECT_NAME是您要上傳的物件名稱,以網址編碼格式表示。例如pets/dog.png,網址編碼為pets%2Fdog.png。KEY_RESOURCE是您的 Cloud KMS 金鑰資源。
從客戶提供的金鑰輪替為 Cloud KMS 金鑰
如果物件是以客戶提供的加密金鑰加密,您可以重寫物件,改用 Cloud KMS 金鑰。
控制台
Cloud de Confiance 控制台無法用於逐一變更物件的加密金鑰。請改用 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是 bucket 的名稱,其中包含您要輪替金鑰的物件。例如:my-bucket。OBJECT_NAME是要輪替金鑰的物件名稱。例如:pets/dog.png。KMS_KEY是要用於加密物件的 Cloud KMS 金鑰資源。CSEK_KEY是目前用於物件的客戶提供加密金鑰。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱「Cloud Storage Python API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
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.s3nsapis.fr/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 金鑰,請按照下列步驟操作:
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有該物件的 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是包含加密物件的 bucket 名稱。例如: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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱「Cloud Storage Ruby API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
如要查看與物件相關聯的 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.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
其中:
BUCKET_NAME是包含加密物件的 bucket 名稱。例如: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.s3nsapis.fr/BUCKET_NAME/OBJECT_NAME?encryption"
其中:
BUCKET_NAME是包含加密物件的 bucket 名稱。例如:my-bucket。OBJECT_NAME是加密物件的網址編碼名稱。例如pets/dog.png,網址編碼為pets%2Fdog.png。
大量重新加密物件
如要使用單一作業,以不同金鑰重新加密數百萬或數十億個物件,請使用儲存空間批次作業。如要建立工作,請指定要重新加密的物件和目的地金鑰,方法是提供資訊清單檔案中的物件清單,或使用物件前置字串。指定物件清單後,請建立批次作業工作,重新加密物件。
解密物件
只要相關服務代理有權存取金鑰,系統就會自動解密以 Cloud KMS 金鑰加密的物件。詳情請參閱「使用 CMEK 的服務代理程式」。
後續步驟
- 進一步瞭解 Cloud Storage 中的 CMEK。
- 設定 bucket 中新物件允許或限制的加密方法。
- 輪替 Cloud KMS 金鑰。
- 探索其他可與 Cloud KMS 搭配使用的產品。
- 瞭解
restrictNonCmekServices和restrictCmekCryptoKeyProjects機構政策限制,進一步控管 Cloud KMS 金鑰的使用情形。