針對(duì)Azure Blob存儲(chǔ)發(fā)出請(qǐng)求的客戶端可以選擇基于每個(gè)請(qǐng)求提供AES-256加密密鑰。在請(qǐng)求中包含加密密鑰可以精細(xì)控制Blob存儲(chǔ)操作的加密設(shè)置。客戶提供的密鑰可以存儲(chǔ)在Azure Key Vault或其他密鑰存儲(chǔ)中。
備注
具有分層命名空間(Azure Data Lake Storage Gen2)的帳戶尚不支持此功能。若要了解詳細(xì)信息,請(qǐng)參閱Azure Data Lake Storage Gen2中可用的Blob存儲(chǔ)功能。
加密讀取和寫入操作
當(dāng)客戶端應(yīng)用程序在請(qǐng)求中提供加密密鑰時(shí),Azure存儲(chǔ)將在讀取和寫入Blob數(shù)據(jù)時(shí)以透明方式執(zhí)行加密和解密。Azure存儲(chǔ)會(huì)將加密密鑰的SHA-256哈希與Blob的內(nèi)容一起寫入。哈希用于驗(yàn)證對(duì)Blob的所有后續(xù)操作是否都使用相同的加密密鑰。
Azure存儲(chǔ)不會(huì)存儲(chǔ)或管理客戶端連同請(qǐng)求一起發(fā)送的加密密鑰。加密或解密過程完成后,會(huì)立即以安全方式丟棄該密鑰。
當(dāng)客戶端使用請(qǐng)求中客戶提供的密鑰創(chuàng)建或更新Blob時(shí),針對(duì)該Blob的后續(xù)讀取和寫入請(qǐng)求也必須提供該密鑰。如果在針對(duì)已使用客戶提供的密鑰加密的Blob的請(qǐng)求中未提供該密鑰,則請(qǐng)求將會(huì)失敗并返回錯(cuò)誤代碼409(沖突)。
如果客戶端應(yīng)用程序在請(qǐng)求中發(fā)送加密密鑰,同時(shí)使用Microsoft托管密鑰或客戶托管密鑰加密了存儲(chǔ)帳戶,則Azure存儲(chǔ)將使用請(qǐng)求中提供的密鑰進(jìn)行加密和解密。
若要在請(qǐng)求中發(fā)送加密密鑰,客戶端必須使用HTTPS來與Azure存儲(chǔ)建立安全連接。
每個(gè)Blob快照可以有自身的加密密鑰。
用于指定客戶提供的密鑰的請(qǐng)求標(biāo)頭
對(duì)于REST調(diào)用,客戶端可以使用以下標(biāo)頭在請(qǐng)求中向Blob存儲(chǔ)安全傳遞加密密鑰信息:
用于指定客戶提供的密鑰的請(qǐng)求標(biāo)頭
在請(qǐng)求中指定加密密鑰是可選操作。但是,如果為寫入操作指定上面列出的標(biāo)頭之一,則必須指定所有這些標(biāo)頭。
支持客戶提供的密鑰的Blob存儲(chǔ)操作
以下Blob存儲(chǔ)操作支持在請(qǐng)求中發(fā)送客戶提供的加密密鑰:
·放置Blob
·放置塊列表
·放置塊
·從URL放置塊
·放置頁
·從URL放置頁
·追加塊
·設(shè)置Blob屬性
·設(shè)置Blob元數(shù)據(jù)
·獲取Blob
·獲取Blob屬性
·獲取Blob元數(shù)據(jù)
·快照Blob
輪換客戶提供的密鑰
若要輪換用于加密blob的加密密鑰,請(qǐng)下載該Blob,并使用新的加密密鑰重新上傳該Blob。
重要
無法使用Azure門戶來讀取或?qū)懭胪ㄟ^請(qǐng)求中提供的密鑰加密的容器或Blob。
請(qǐng)務(wù)必在Azure Key Vault等安全密鑰存儲(chǔ)中,保護(hù)在對(duì)Blob存儲(chǔ)發(fā)出的請(qǐng)求中提供的加密密鑰。如果你嘗試在不使用加密密鑰的情況下對(duì)容器或Blob執(zhí)行寫入操作,該操作將會(huì)失敗,并且你會(huì)失去對(duì)象訪問權(quán)限。