簡體   English   中英

使用 Python 中 Azure-key-vault 中的密鑰加密 azure blob

[英]Encrypt azure blob using Key in Azure-key-vault in Python

Microsoft 在 C# 中有一個示例,用於使用 azure-key-vault https://docs.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault 中的密鑰加密 azure blob ?WT.mc_id=Portal-Microsoft_Azure_Support&tabs=dotnet11#prerequisites

我希望在 Python 中做同樣的事情我試圖按照此頁面中給出的代碼https://github.com/Azure/azure-storage-python/blob/master/samples/blob/encryption_usage.py此頁面不是使用天藍色鑰匙

當我嘗試在該示例中使用 azure 鍵時出現錯誤

class KeyWrapper:
    def __init__(self, kid):
        self.kek = self.get_azure_vault_key()
        self.backend = default_backend()
        self.kid = 'local:' + kid

    def get_azure_vault_key(self):
        credential = DefaultAzureCredential()
        key_client = KeyClient(vault_url="https://xyz.vault.azure.net/", credential=credential)
        keyvaultObj = key_client.get_key("my-key")
        actualKey = keyvaultObj.key.n
        return actualKey

def saveEncryptedCSVtoAzureBlob(CSVData, accountName, accountKey):
    blobName = 'myBlob'
    blobService = BlockBlobService(account_name=accountName, account_key=accountKey)
    kek = KeyWrapper('local:key1') 
    blobService.key_encryption_key = kek
    blobService.create_blob_from_text(containerName, blobName, CSVData)

此示例給出以下錯誤ValueError: The wrapping key must be a valid AES key length

• 在用於在 python 中的 azure blob 存儲中使用客戶端加密的“encryptionusage.py”腳本中,“KEK”,即密鑰加密密鑰或包裝密鑰加密算法被稱為“A256KW”如下圖所示,這是一種使用 AES256 位密鑰的密鑰包裝加密算法。

Encryption.py 快照

• A256KW 算法的輸出如下,從中提取了“CEK,即內容加密密鑰”的詳細信息,該密鑰用於加密azure blob 存儲的內容並存儲在Azure Key Vault 中。

'eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA.X5ZL8yaOektXmfny.xLW-KH5ZL8yaOektXmfny.xLW-KH5ZL8yaOektXmfny.xLW-KH5ZL8aOektXmfny.xLW-KH5ZL-V-KW-KHR-KV-KHW算法將輸出-

  ‘JWE Header:  {"alg":"A256KW","enc":"A256GCM"}                         
    Encrypted key (CEK):  66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA   
    Initialization vector:  X5ZL8yaOektXmfny                                         
    Ciphertext:  brz-Lg                                                   
    Authentication Tag:  xG-EvM-9hrw0XRiuRW7HrA ‘   data extracted from the KEK A256KW algorithm.

• 因此,上述輸出示例中顯示的 KEK 或包裝密鑰,即“eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0”不具有可以提取 CEK 的有效密鑰長度。 此外,在您的情況下,加密腳本中的“get_key_wrap_algorithm”命令返回“A256KW”的值,從該值中提取 256 位 CEK,如上所示。 因此,請根據收到的錯誤檢查存儲在 Azure Key Vault 中的密鑰長度。 它應符合上述 256 位規范。

請找到以下鏈接以獲取更多信息:-

https://docs.microsoft.com/en-us/azure/storage/common/storage-client-side-encryption-python?tabs=python2

https://security.stackexchange.com/questions/80966/what-is-the-point-of-aes-key-wrap-with-json-web-encryption

“使用 azure key Vault 加密 Azure blob 存儲”功能從今天起不可用

存儲 Python 庫似乎尚不支持與 Azure Key Vault 的集成。 將來會添加此支持,因此為什么此時沒有發布示例。

此功能僅適用於 C#/.NET

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault?WT.mc_id=Portal-Microsoft_Azure_Support&tabs=dotnet11#use-key-vault-secrets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM