python - 使用 Rest Api 和 DataBricks CLI 创建 DataBricks Azure Key Vault secret 范围后端

标签 python azure azure-databricks azure-keyvault

我正在尝试创建由 azure key Vault 后端的 secret 范围,因此当我尝试使用 secret api 时,出现错误

输入:

response = requests.post(
    'https://%s/api/2.0/secrets/scopes/create' % (DOMAIN),
    headers={'Authorization': 'Bearer %s' % TOKEN,},
    json={"scope": "my-simple-azure-keyvault-scope",
    "scope_backend_type": "AZURE_KEYVAULT",
  "backend_azure_keyvault":
  {
    "resource_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/azure-rg/providers/Microsoft.KeyVault/vaults/my-azure-kv",
    "dns_name": "https://my-azure-kv.vault.azure.net/"
  },
  "initial_manage_principal": "users"
})

输出:

{
  "error_code": "INVALID_PARAMETER_VALUE",
  "message": "Scope with Azure KeyVault must have userAADToken defined!"
}

我尝试了不同的方法,即 Databricks Cli,因为我遇到了错误,因此我使用 databricks UI 创建了一个 secret 范围并尝试通过 cli 进行访问

输入:

databricks configure --token
Databricks Host (should begin with https://): https://adb-...azuredatabricks.net/
Token: 

D:\Users\>databricks secrets list-scopes

输出:

Error: b'Bad Request'

在 Cmd 提示符中

有没有办法获取AAD token,我已经实现了Microsoft documents用于获取 token 但不起作用

最佳答案

2023 年 5 月更新:现在可以使用服务主体从 azure keyvault 创建 secret 范围:https://learn.microsoft.com/en-us/azure/databricks/release-notes/product/2023/april#create-an-azure-key-vault-backed-secret-scope-with-a-service-principal

这是 documentation 中描述的众所周知的限制评论中链接 - 您必须使用用户的 AAD token 来创建由 Azure KeyVault 烘焙的 secret 范围。

创建 secret 范围的最简单方法不是使用 API,而是使用 Databricks CLI - 有一个命令可以创建 secret 范围:

databricks secrets create-scope --scope <scope-name> \  
  --scope-backend-type AZURE_KEYVAULT --resource-id <azure-keyvault-resource-id> \
  --dns-name <azure-keyvault-dns-name>

您甚至不需要配置 CLI - 指定 DATABRICKS_HOSTDATABRICKS_TOKEN 环境变量,如下所示:

export DATABRICKS_TOKEN=$(az account get-access-token -o tsv --query accessToken --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d)
export DATABRICKS_HOST=https://adb-.....azuredatabricks.net

请注意,这里我们通过使用 Azure CLI 中的 az account get-access-token 命令获取用户的 AAD token (确保您之前执行过az login)

关于python - 使用 Rest Api 和 DataBricks CLI 创建 DataBricks Azure Key Vault secret 范围后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73743299/

相关文章:

来自回调函数的Python进度条

asp.net-mvc - "Login failed for user ' <用户> '."在 SQL Azure 上的 MVC 5 中使用 DefaultConnection 时

sql - 如何从 azure databricks SQL 中的日期中提取工作日名称(例如,moday、tuesday)?

azure-active-directory - 如何将 ACL 集成到基于 Azure Databricks 的 Azure AD 组

azure - 使用 Databricks 连接到 Azure SQL

python - 导入虚拟环境中anaconda安装的包

Python 程序不记得变量

python - 如何在 Pygame 中更改图像的颜色而不改变其透明度?

SQL:如何最好地查询历史表以创建特定日期的快照概述

azure - 从传统的用户名/密码身份验证迁移到 WIF