客戶提供的加密金鑰

這個頁面主要說明客戶提供的加密金鑰。如需其他加密選項相關資訊,請參閱「資料加密選項」。「使用客戶提供的加密金鑰」一文中則有範例說明,您可進一步瞭解如何使用這個功能。

總覽

您可以選擇在 Google 代管的加密金鑰基礎上再提供以標準 Base64 編碼的 AES-256 金鑰,也就是「客戶提供的加密金鑰」。不過如果您使用的是客戶提供的加密金鑰,Cloud Storage 就不會將您的金鑰永久儲存在 Google 伺服器上,也不會幫您管理。因此,您必須為每次 Cloud Storage 作業提供金鑰,而且一旦作業完成,系統就會將這組金鑰從 Google 伺服器中清除。Cloud Storage 只會儲存金鑰的加密編譯雜湊值,日後會以該雜湊來驗證要求。金鑰無法從這個雜湊復原,雜湊也不能用來解密您的資料。

什麼時候會使用金鑰?

將客戶提供的加密金鑰套用於物件時,Cloud Storage 會在加密下列項目時使用金鑰:

  • 物件資料。
  • 物件的 CRC32C 總和檢查碼。
  • 物件的 MD5 雜湊。

Cloud Storage 會使用標準伺服器端金鑰來加密物件的剩餘中繼資料,包括物件的名稱。這讓您可以讀取和更新一般中繼資料,以及列出和刪除物件,而無需客戶提供的加密金鑰。但是,您必須要有足夠的權限才能執行所有操作。

例如,如果物件是使用客戶提供的加密金鑰進行加密,則必須使用該金鑰對物件執行操作,例如下載或將其移動。如果您嘗試讀取物件中繼資料但未提供金鑰,則只會收到中繼資料 (例如物件名稱和 Content-Type),而無法取得物件的 CRC32C 總和檢查碼或 MD5 雜湊。如果您在物件中繼資料要求中提供金鑰,則物件的 CRC32C 總和檢查碼和 MD5 雜湊就會隨附於中繼資料。

HTTPS 檢查

為確保您的資料在讀寫作業期間透過網際網路傳輸時能安全無虞,請使用傳輸層安全標準,一般稱為 TLS 或 HTTPS。提供加密金鑰時請務必採用 TLS。如果您不小心透過未加密的 (HTTP) 連線來使用加密金鑰,攻擊者可能就會趁機攔截您的金鑰。因此,如果您未使用加密連線,Cloud Storage API 會傳回錯誤訊息警告您金鑰可能會被盜用。萬一真的遇到這種情況,請立即輪替使用金鑰

限制

下文說明使用客戶提供的加密金鑰時有哪些限制:

  • Cloud Storage 移轉服務Cloud DataflowCloud Dataproc 目前不支援以客戶提供的加密金鑰進行加密的物件。

  • 您無法透過 Google Cloud Platform 主控台下載以客戶提供的加密金鑰進行加密的物件。同樣地,如果您透過 Google Cloud Platform 主控台上傳物件,也沒辦法使用客戶提供的加密金鑰來加密該物件。您可以使用客戶代管的加密金鑰來執行這些動作。

  • 「客戶提供的加密金鑰」選項目前僅適用於下列國家/地區:

    阿根廷、奧地利、澳洲、比利時、保加利亞、加拿大、智利、哥倫比亞、賽普勒斯、捷克共和國、丹麥、愛沙尼亞、芬蘭、法國、德國、希臘、香港、匈牙利、印尼、愛爾蘭、以色列、義大利、日本、立陶宛、盧森堡、拉脫維亞、馬來西亞、馬爾他、墨西哥、荷蘭、紐西蘭、挪威、秘魯、波蘭、葡萄牙、羅馬尼亞、新加坡、斯洛伐克、南非、南韓、西班牙、瑞典、瑞士、台灣、泰國、土耳其、英國 (UK)、美國 (US)、越南

    如果您的國家/地區不在清單內,您可以要求加上您的國家/地區

  • 如要透過 gsutil 使用客戶提供的加密金鑰,您必須使用 gsutil 4.18 以上版本

  • 您只能為個別物件設定客戶提供的加密金鑰;無法針對值區設定預設客戶提供的加密金鑰。

  • 如果您對使用客戶提供的加密金鑰進行加密的物件執行 compose 作業,則元件物件也得使用同一組金鑰加密,且您必須透過撰寫要求來提供金鑰。產生的複合物件將以同樣的金鑰加密。

可使用加密金鑰的工具

想在 Cloud Storage 中使用客戶提供的加密金鑰,方式有很多,其中包括:

  • 合作夥伴公司。
  • JSON 和 XML REST API。
  • gsutil 指令列工具。

透過合作夥伴公司使用加密金鑰

有很多第三方合作夥伴選項適用客戶提供的加密金鑰。這些合作夥伴能讓您輕鬆產生加密金鑰,並將該金鑰與 Cloud Storage 內的物件建立關聯。能為 Cloud Storage 提供金鑰的合作夥伴包括 Ionic Security 和 KeyNexus。

詳情請參閱 Cloud Storage 合作夥伴頁面

透過 REST API 使用加密金鑰

如果您使用客戶提供的加密金鑰並直接採用 JSONXML API,則必須提供 AES-256 金鑰和金鑰的 SHA256 雜湊這兩項資料。請妥善保管 AES-256 金鑰及金鑰的 SHA256 雜湊。Google 會將您金鑰的 SHA256 雜湊儲存於物件的中繼資料,供您日後擷取。Google 及其他人都無法使用這個 SHA256 雜湊來解密您的資料。儲存該雜湊是為了要識別用來加密特定物件的唯一 AES-256 金鑰。

要求標頭

在您的 JSON 或 XML 要求中納入以下 HTTP 標頭:

標頭名稱 說明
x-goog-encryption-algorithm 字串 要使用的加密演算法。您必須使用值 AES256
x-goog-encryption-key 字串 您 AES-256 加密金鑰的 RFC 4648 Base64 編碼字串。
x-goog-encryption-key-sha256 字串 加密金鑰 SHA256 雜湊的 RFC 4648 Base64 編碼字串。

如果您透過 JSON API 執行重寫作業,以上所列的標頭將用於加密目標物件,而下列標頭用於解密來源物件:

標頭名稱 說明
x-goog-copy-source-encryption-algorithm 字串 要使用的加密演算法。您必須使用值 AES256
x-goog-copy-source-encryption-key 字串 您 AES-256 加密金鑰的 RFC 4648 Base64 編碼字串。
x-goog-copy-source-encryption-key-sha256 字串 來源物件加密金鑰 SHA256 雜湊的 RFC 4648 Base64 編碼字串。

回應

JSON

使用 JSON API 時,系統會在回應主體中傳回客戶提供的加密金鑰中繼資料,其中包含下列屬性:

屬性名稱 說明
customerEncryption 物件 用於要求的加密相關資訊。
customerEncryption.encryptionAlgorithm 字串 使用的加密演算法,一律包含值 AES256
customerEncryption.keySha256 字串 加密金鑰 SHA256 雜湊的 RFC 4648 Base64 編碼字串。您可使用這個 SHA256 雜湊來識別解密物件需要的唯一 AES-256 加密金鑰;請務必妥善保管該雜湊。

XML

使用 XML API 時,回應包含以下標頭:

標頭名稱 說明
x-goog-encryption-algorithm 字串 使用的加密演算法,一律包含值 AES256
x-goog-encryption-key-sha256 字串 加密金鑰 SHA256 雜湊的 RFC 4648 Base64 編碼字串。您可使用這個 SHA256 雜湊來識別解密物件需要的唯一 AES-256 加密金鑰;請務必妥善保管該雜湊。

如遇下列情況會傳回 HTTP 400 錯誤:

  • 您使用客戶提供的加密金鑰上傳物件,並嘗試在未提供金鑰的情況下對物件執行其他作業 (除了要求或更新大部分的中繼資料或刪除物件以外的作業)。
  • 您使用客戶提供的加密金鑰上傳物件,並嘗試以不正確的金鑰對物件執行其他作業。
  • 您未使用客戶提供的加密金鑰來上傳物件,但嘗試以客戶提供的加密金鑰來對物件執行其他作業。
  • 您指定了無效的加密演算法、金鑰或 SHA256 雜湊。

透過 gsutil 使用加密金鑰

如要透過 gsutil 使用客戶提供的加密金鑰,請將下列選項新增到 boto 設定檔[GSUtil] 區段:

選項名稱 說明
encryption_key 字串 您 AES-256 加密金鑰的 RFC 4648 Base64 編碼字串。

您可自行選擇指定一或多個解密金鑰。由於 gsutil 會將 encryption_key 選項同時當做加密及解密金鑰使用,因此您指定的任何 decryption_key 選項都將只會用來解密物件。詳情請參閱 gsutil 說明文件

只要您在 boto 設定檔中有加密或解密金鑰,這些金鑰就能用於所有 gsutil 指令。解密時,gsutil 會計算所提供加密及解密金鑰的 SHA256 雜湊,且會在物件的中繼資料中比對 SHA256 雜湊,藉此選取正確的金鑰來用於特定物件。

請注意,如果您使用客戶提供的加密金鑰上傳物件,然後嘗試在未提供金鑰的情況下對物件執行其他作業 (除了要求或更新中繼資料或刪除物件以外的作業),就會收到錯誤訊息。

加密金鑰輪替

如果物件使用客戶提供的加密金鑰進行加密,您可以重寫物件來輪替該物件的金鑰。JSON API 支援重寫作業,但 XML API 不支援。如需金鑰輪替範例,請參閱輪替加密金鑰一文。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Storage
需要協助嗎?請前往我們的支援網頁