針對 Blob 儲存體的要求提供加密金鑰

對 Azure Blob 儲存體提出要求的用戶端可以提供 AES-256 加密金鑰,以在寫入作業上加密該 Blob。 後續讀取或寫入 Blob 的要求,都必須包含相同的金鑰。 在要求中包含加密金鑰,可讓您更精確地控制 Blob 儲存體作業的加密設定。 客戶提供的金鑰可以儲存在 Azure Key Vault 或另一個金鑰存放區中。

加密讀取和寫入作業

當用戶端應用程式在要求上提供加密金鑰,則 Azure 儲存體在讀取和寫入 Blob 資料時,會以透明的方式執行加密和解密。 Azure 儲存體連同 Blob 的內容一起寫入加密金鑰的 SHA-256 雜湊。 雜湊是用來驗證對 Blob 的所有後續作業都會使用相同的加密金鑰。

Azure 儲存體不會儲存或管理用戶端透過要求傳送的加密金鑰。 加密或解密程序完成後,就會安全地捨棄金鑰。

當用戶端在要求上使用客戶提供的金鑰來建立或更新 Blob 時,該 Blob 的後續讀取和寫入要求也必須提供金鑰。 如果在已使用客戶提供金鑰加密的 Blob 要求上未提供金鑰,則要求會失敗,並出現錯誤碼 409 (衝突)。

如果用戶端應用程式在要求上傳送加密金鑰,而且儲存體帳戶也使用 Microsoft 管理金鑰或由客戶管理的金鑰來加密,則 Azure 儲存體會使用要求中提供的金鑰來加密和解密。

若要將加密金鑰作為要求的一部分傳送,用戶端必須使用 HTTPS 建立與 Azure 儲存體的安全連線。

每個 Blob 快照集或 Blob 版本都可以有自己的加密金鑰。

使用客戶提供的金鑰加密的來源帳戶中的 Blob 不支援對象複寫。

指定客戶提供的金鑰要求標頭

針對 REST 呼叫,用戶端可以使用下列標頭,安全地將要求上的加密金鑰資訊傳遞給 Blob 儲存體:

要求標頭 描述
x-ms-encryption-key 寫入和讀取要求皆需要。 Base64 編碼的 AES-256 加密金鑰值。
x-ms-encryption-key-sha256 寫入和讀取要求皆需要。 加密金鑰的 Base64 編碼 SHA256。
x-ms-encryption-algorithm 寫入要求的必要參數,對讀取要求而言為選擇性。 指定使用指定索引鍵加密資料時所要使用的演算法。 此標頭的值必須設定為 AES256

在要求上指定加密金鑰為選擇性。 但是,如果您指定以上列出的其中一個標頭來進行寫入作業,則必須指定所有的標頭。

支援客戶提供金鑰的 Blob 儲存體作業

下列 Blob 儲存體作業支援在要求上傳送客戶提供的加密金鑰:

輪替客戶提供的金鑰

若要輪替用來加密 Blob 的加密金鑰,請下載 Blob,然後使用新的加密金鑰重新上傳。

重要

Azure 入口網站不能用來讀取或寫入使用要求所提供金鑰加密的容器或 Blob。

請務必使用 Azure Key Vault 之類的安全金鑰存放區,保護您在 Blob 儲存體的要求中提供的加密金鑰。 如果您嘗試在沒有加密金鑰的容器或 Blob 上進行寫入作業,此作業將會失敗,而且您將無法存取該物件。

功能支援

啟用 Data Lake Storage Gen2、網路檔案系統 (NFS) 3.0 通訊協定,或 SSH 檔案傳輸通訊協定 (SFTP),可能會影響到此功能的支援。 如果您已啟用上述任何功能,請參閱 Azure 儲存體帳戶中的 Blob 儲存體功能支援,以評估此功能的支援。

下一步