本頁說明如何在 Cloud Storage 使用自己的加密金鑰 (亦稱為「客戶提供的加密金鑰」)。如要瞭解 Cloud Storage 中的其他加密選項,請參閱「資料加密選項」。
產生自己的加密金鑰
產生以 Base64 編碼的 AES-256 加密金鑰的方法有很多種。以下列舉幾個範例:
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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
使用加密金鑰上傳
如何使用客戶提供的加密金鑰上傳物件:
控制台
您無法使用 Google Cloud 主控台,透過客戶提供的加密金鑰上傳物件。請改用 Google Cloud CLI 或用戶端程式庫。
指令列
使用 gcloud storage cp
指令並加上 --encryption-key
旗標:
gcloud storage cp SOURCE_DATA gs://BUCKET_NAME/OBJECT_NAME --encryption-key=YOUR_ENCRYPTION_KEY
其中:
SOURCE_DATA
是您要加密的資料來源位置。這可以是cp
指令支援的任何來源位置。例如本機檔案 (如Desktop/dogs.png
) 或其他 Cloud Storage 物件 (如gs://my-bucket/pets/old-dog.png
)。BUCKET_NAME
是這項複製指令的目的地 bucket 名稱。例如:my-bucket
。OBJECT_NAME
是最終加密物件的名稱。例如:pets/new-dog.png
。YOUR_ENCRYPTION_KEY
是用於加密上傳物件的 AES-256 金鑰。
用戶端程式庫
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" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME"
其中:
OBJECT
是您要上傳的物件路徑。例如:Desktop/dogs.png
。OBJECT_CONTENT_TYPE
是物件的內容類型。例如:image/png
。YOUR_ENCRYPTION_KEY
是用於加密上傳物件的 AES-256 金鑰。HASH_OF_YOUR_KEY
是 AES-256 金鑰的 SHA-256 雜湊。BUCKET_NAME
是您要向其上傳物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要上傳的物件名稱 (經過網址編碼)。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。
如要進一步瞭解特定加密的標頭,請參閱加密要求標頭。
XML API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
cURL
透過PUT
物件要求呼叫 XML API:curl -X -i PUT --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
OBJECT
是您要上傳的物件路徑。例如:Desktop/dogs.png
。OBJECT_CONTENT_TYPE
是物件的內容類型。例如:image/png
。YOUR_ENCRYPTION_KEY
是用於加密上傳物件的 AES-256 金鑰。HASH_OF_YOUR_KEY
是 AES-256 金鑰的 SHA-256 雜湊。BUCKET_NAME
是您要向其上傳物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要上傳的物件名稱 (經過網址編碼)。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。
如要進一步瞭解特定加密的標頭,請參閱加密要求標頭。
下載您已加密的物件
如何下載儲存在 Cloud Storage 並以客戶提供的加密金鑰進行加密的物件:
控制台
您無法透過 Google Cloud 主控台下載以客戶提供的加密金鑰加密的物件。請改用 Google Cloud CLI 或用戶端程式庫。
指令列
使用 gcloud storage cp
指令並加上 --decryption-keys
旗標:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME OBJECT_DESTINATION --decryption-keys=YOUR_ENCRYPTION_KEY
其中:
BUCKET_NAME
是包含要下載物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要下載的物件名稱。例如:pets/dog.png
。OBJECT_DESTINATION
是您要儲存物件的位置。例如:Desktop
。YOUR_ENCRYPTION_KEY
是指上傳物件時用於加密物件的 AES-256 金鑰。
用戶端程式庫
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
透過GET
物件要求呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media"
其中:
YOUR_ENCRYPTION_KEY
是用於加密物件的 AES-256 金鑰。HASH_OF_YOUR_KEY
是 AES-256 金鑰的 SHA-256 雜湊。SAVE_TO_LOCATION
是您要儲存物件的位置。例如:Desktop/dog.png
。BUCKET_NAME
是您要從中下載物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是要下載物件的 URL 編碼名稱。例如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)" \ -H "x-goog-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: YOUR_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_YOUR_KEY" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
YOUR_ENCRYPTION_KEY
是用於加密物件的 AES-256 金鑰。HASH_OF_YOUR_KEY
是 AES-256 金鑰的 SHA-256 雜湊。SAVE_TO_LOCATION
是您要儲存物件的位置。例如:Desktop/dog.png
。BUCKET_NAME
是您要從中下載物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是要下載物件的 URL 編碼名稱。例如pets/dog.png
,網址編碼為pets%2Fdog.png
。
如要進一步瞭解特定加密的標頭,請參閱加密要求標頭。
輪替加密金鑰
如何輪替客戶提供的加密金鑰:
控制台
您無法使用 Google Cloud 控制台輪替客戶提供的加密金鑰。請改用 Google Cloud CLI 或用戶端程式庫。
指令列
使用 gcloud storage objects update
指令並加上適當的旗標:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --encryption-key=NEW_KEY --decryption-keys=OLD_KEY
其中:
BUCKET_NAME
是包含要輪替金鑰物件的值區名稱。例如:my-bucket
。OBJECT_NAME
是您要輪替其金鑰的物件名稱。例如:pets/dog.png
。NEW_KEY
是您要用來加密物件的新客戶提供加密金鑰。OLD_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-encryption-algorithm: AES256" \ -H "x-goog-encryption-key: NEW_ENCRYPTION_KEY" \ -H "x-goog-encryption-key-sha256: HASH_OF_NEW_KEY" \ -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"
其中:
NEW_ENCRYPTION_KEY
是用於加密物件的新 AES-256 金鑰。HASH_OF_NEW_KEY
是新 AES-256 金鑰的 SHA-256 雜湊。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
。
如要進一步瞭解特定加密的標頭,請參閱加密要求標頭。
XML API
XML API 不支援透過重寫物件來輪替客戶提供的加密金鑰。如要使用 XML API 將新的客戶提供金鑰套用至物件,請按照下列步驟操作:
後續步驟
進一步瞭解客戶提供的加密金鑰。