无法通过Azure SDK for python设置TDE

bxfogqkk  于 2023-05-29  发布在  Python
关注(0)|答案(1)|浏览(267)

我正在尝试在我的Azure SQL Server上设置透明数据加密,并使用存储在密钥库中的客户管理密钥。我正在通过Azure SDK for python完成这一切。我提供了相同的代码。

def enable_transparent_data_encryption(server_name: str):
    key_client = KeyClient(vault_url=KEY_VAULT_URL, credential=credentials)
    key_name = create_sql_cmk(server_name)
    key = key_client.get_key(name=key_name)
    key_version = key.properties.version
    server_key_name = f'{KEY_VAULT_URL.split("//")[-1].split(".")[0]}_{key_name}_{key_version}'
    tde = ServerKey(
        auto_rotation_enabled=True,
        server_key_type=ServerKeyType.AZURE_KEY_VAULT,
        uri=f'{KEY_VAULT_URL}keys/{key_name}/{key_version}'
    )

    sql_client.server_keys.begin_create_or_update(RESOURCE_GROUP_NAME, server_name, server_key_name, tde).wait()
    print(f'Enabled - Transparent Data Encryption using CMK on `{server_name}` SQL server.')

我已经尝试了我的代码,但它不启用透明的数据加密我的SQL服务器上。

toiithl6

toiithl61#

我尝试了下面的代码,并成功地在Azure SQL中从密钥库启用了CMK透明数据加密。

验证码:-

from azure.identity import AzureCliCredential
from azure.keyvault.keys import KeyClient
from azure.mgmt.sql import SqlManagementClient
from azure.mgmt.sql.models import ServerKeyType, ServerKey

credential = AzureCliCredential()

key_vault_url = "https://kamalival.vault.azure.net"
key_client = KeyClient(vault_url=key_vault_url, credential=credential)

key_name = "kamalikeyvault"
key_version = "ba4979e3ef934a3e919e392942c0b42a"
key = key_client.get_key(name=key_name, version=key_version)

sql_client = SqlManagementClient(credential=credential, subscription_id="b83c1ed3-c5b6-44fb-b5ba-2b83a074c23f")

server_name = "kamaserver"
server_key_name = "kamalival_kamalikeyvault_ba4979e3ef934a3e919e392942c0b42a"
tde = ServerKey(
    auto_rotation_enabled=True,
    server_key_type=ServerKeyType.AZURE_KEY_VAULT,
    uri=key.id
)
sql_client.server_keys.begin_create_or_update(
    "Vyshu", server_name, server_key_name, tde).wait()
print(f"Enabled Transparent Data Encryption using CMK on '{server_name}' SQL server.")

请确保您的server_key_name的格式为-KeyVaultName_KeyVaultKeyName_KeyVaultKeyVersion您可以从门户中的密钥ID获取密钥库名称、密钥名称和密钥版本的信息,如下所示:-

我已使用AzureCliCredential对我的Azure帐户进行身份验证。通过运行下面的命令登录到我的VS Code终端:
命令Reference1Reference2

az login
az account set --subscription "azure-subscription-name"

请确保您在登录到Azure Portal时登录的用户帐户已分配足够的角色来访问密钥库密钥和SQL Server。

输出:-

门户TDE开启:-

相关问题