在 Python 中使用 Azure-key-vault 中的密钥加密 azure blob
Encrypt azure blob using Key in Azure-key-vault in Python
Microsoft 在 C# 中有一个使用 azure-key-vault 中的密钥加密 azure blob 的示例
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault?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 key 时出现错误
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:包装密钥必须是有效的 AES 密钥长度
• 在您用于在 python 的 Azure Blob 存储中使用客户端加密的“encryptionusage.py”脚本中,“KEK”,即密钥加密密钥或包装密钥加密算法在下面的快照中被称为“A256KW”,这是一种使用 AES256 位密钥的密钥包装加密算法。
• A256KW 算法的输出如下,从中提取了用于加密 Azure Blob 存储内容并存储在 Azure Key Vault 中的“CEK,即内容加密密钥”的详细信息.
‘eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA.X5ZL8yaOektXmfny.brz-Lg.xG-EvM-9hrw0XRiuRW7HrA' --> 提取 CEK 的 A256KW 算法的输出。
‘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”命令 returns “A256KW”的值,如上所述从中提取 256 位 CEK。因此,请根据收到的错误检查存储在 azure key vault 中的密钥长度。它应该符合上述 256 位规格。
请找到以下链接以获取更多信息:-
“使用 Azure Key Vault 加密 Azure Blob 存储”功能从今天起不可用
存储 Python 库似乎还不支持与 Azure Key Vault 的集成。将来会添加此支持,因此目前没有针对它发布的示例。
此功能仅适用于 C#/.NET
Microsoft 在 C# 中有一个使用 azure-key-vault 中的密钥加密 azure blob 的示例 https://docs.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault?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 key 时出现错误
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:包装密钥必须是有效的 AES 密钥长度
• 在您用于在 python 的 Azure Blob 存储中使用客户端加密的“encryptionusage.py”脚本中,“KEK”,即密钥加密密钥或包装密钥加密算法在下面的快照中被称为“A256KW”,这是一种使用 AES256 位密钥的密钥包装加密算法。
• A256KW 算法的输出如下,从中提取了用于加密 Azure Blob 存储内容并存储在 Azure Key Vault 中的“CEK,即内容加密密钥”的详细信息.
‘eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA.X5ZL8yaOektXmfny.brz-Lg.xG-EvM-9hrw0XRiuRW7HrA' --> 提取 CEK 的 A256KW 算法的输出。
‘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”命令 returns “A256KW”的值,如上所述从中提取 256 位 CEK。因此,请根据收到的错误检查存储在 azure key vault 中的密钥长度。它应该符合上述 256 位规格。
请找到以下链接以获取更多信息:-
“使用 Azure Key Vault 加密 Azure Blob 存储”功能从今天起不可用
存储 Python 库似乎还不支持与 Azure Key Vault 的集成。将来会添加此支持,因此目前没有针对它发布的示例。
此功能仅适用于 C#/.NET