使用AAD令牌在数据库中创建Azure密钥库支持的秘密作用域 [英] Create Azure Key Vault backed secret scope in Databricks with AAD Token

查看:0
本文介绍了使用AAD令牌在数据库中创建Azure密钥库支持的秘密作用域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的最终目标是在Azure服务主体的支持下,将ADLS Gen2容器安装到我的Databricks工作区中,作为我的Terraform托管部署的一部分。这是创建所有Azure资源(网络、防火墙、存储帐户、数据库工作区等)的单一部署。然后使用Databricks Terraform提供程序配置Databricks工作区。

This answer表示我不能使用服务主体进行AAD通过挂载,这意味着我必须使用OAuth2身份验证。为此,我需要在数据库中使用Azure密钥库支持的秘密作用域。Terraform documentation表示我只能使用基于用户的身份验证来执行此操作,而不能使用我的服务主体。

因此,我想也许我可以实现一个Hack:在Terraform中创建一个Databricks PAT(同样,始终作为服务主体),然后使用Terraform资源将";shell out";到Databricks CLI,并使用此PAT进行身份验证。我手动尝试执行此操作,但收到以下错误:

{
  "error_code": "INVALID_PARAMETER_VALUE",
  "message": "Scope with Azure KeyVault must have userAADToken defined!"
}
这是合理的,因为PAT是为服务主体创建的。然而,作为替代方案,this answer建议使用Azure AD令牌身份验证,而不是PAT。所以,下了那个兔子洞,我要走了!

我可以按照Microsoft's documentation获取Azure AD令牌,然后使用它来验证Databricks CLI:

export ARM_TENANT_ID="..."
export ARM_CLIENT_ID="..."
export ARM_CLIENT_SECRET="..."

export DATABRICKS_AAD_TOKEN="$(curl -X POST 
                                    -H 'Content-Type: application/x-www-form-urlencoded' 
                                    -d "client_id=${ARM_CLIENT_ID}" 
                                    -d 'grant_type=client_credentials' 
                                    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' 
                                    -d "client_secret=${ARM_CLIENT_SECRET}" 
                                    https://login.microsoftonline.com/${ARM_TENANT_ID}/oauth2/v2.0/token 
                             | jq -r .access_token)"

databricks configure --aad-token --host https://my-databricks-host.com
此身份验证有效:我可以运行返回预期结果的各种CLI命令(例如,databricks tokens list)。然而,现在当我尝试创建秘密作用域时,它给出了一个完全不同的错误:

databricks secrets create-scope --scope "test" 
                                --scope-backend-type AZURE_KEYVAULT 
                                --resource-id "/subscriptions/my/key/vault/resource/id" 
                                --dns-name "https://my-vault-name.vault.azure.net/"

Error: Your authentication information may be incorrect. Please reconfigure with ``dbfs configure``

我的第一个问题是:我的黑客攻击会奏效吗?如果是,那么我在AAD令牌身份验证方面出了什么问题?如果它不起作用,我的最终目标还可能实现吗?或者我是否必须在不同的AAD身份(服务主体和普通用户)下分阶段运行几个Terraform部署--每个部署都有自己的状态?

推荐答案

可以,您不能使用为服务主体颁发的AAD令牌来执行此操作-它只能与真实用户的AAD令牌一起使用。这是Azure众所周知且有文档记录的限制,希望它在未来会得到修复。

这是实施Azure Databricks工作区端到端自动资源调配的主要障碍之一

这篇关于使用AAD令牌在数据库中创建Azure密钥库支持的秘密作用域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆