数据库API 2.0-不能使用SPN凭据创建KEYVAULT机密作用域 [英] Databricks API 2.0 - Can't create KEYVAULT secrets scopes using SPN credentials
本文介绍了数据库API 2.0-不能使用SPN凭据创建KEYVAULT机密作用域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想通过Databricks REST API 2.0创建一个秘密作用域。
使用SPN进行az登录时出现下一个错误运行请求/API/2.0/Secrets/Scope/Create
{"error_code":"CUSTOMER_UNAUTHORIZED","message":"Unable to grant read/list permission to Databricks service principal to KeyVault 'https://dtbrcks-kvxxx.vault.azure.net/': key not found: https://management.core.windows.net/"}%
但当我使用用户登录时,相同的代码运行正常!
SPN和用户对数据库(所有者/管理员)和密钥库(所有者)资源具有相同的权限。
使用SPN执行此操作需要做些什么?
对于获取访问令牌,我使用命令
az login --service-principal
access_token=$(az account get-access-token
--resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
--query "accessToken"
--output tsv)
和使用Azure密钥库创建秘密作用域的下一个代码:
curl -X POST -H "Authorization: Bearer $access_token"
-H 'Content-Type: application/json'
-d '{"scope":"keyvault-scope","scope_backend_type":"AZURE_KEYVAULT","backend_azure_keyvault":{"resource_id":"/subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.KeyVault/vaults/$kvname","dns_name":"$kv_url"}}'
"$dtbrcks_url/api/2.0/secrets/scopes/create"
推荐答案
如果您的服务主体是数据库工作区的Owner
,并且满足以下任一条件,
调用API时,必须为Azure资源管理终结点提供X-Databricks-Azure-Workspace-Resource-Id
标头和管理访问令牌。
若要获取管理访问令牌,只需将resource
更改为https://management.core.windows.net
。
management_access_token=$(az account get-access-token
--resource 'https://management.core.windows.net'
--query "accessToken"
--output tsv)
然后在请求中传递它,如下所示link。
curl -X POST -H "Authorization: Bearer $access_token"
-H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>'
-H 'Content-Type: application/json'
-d '{"scope":"keyvault-scope","scope_backend_type":"AZURE_KEYVAULT","backend_azure_keyvault":{"resource_id":"/subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.KeyVault/vaults/$kvname","dns_name":"$kv_url"}}'
"$dtbrcks_url/api/2.0/secrets/scopes/create"
或者您可以使用Non-admin user login,在此登录之前,必须将服务主体作为admin user login的一部分或使用Add service principal终结点添加到工作区,然后您可以直接use the AAD token to call the API。
这篇关于数据库API 2.0-不能使用SPN凭据创建KEYVAULT机密作用域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文