数据库API 2.0-不能使用SPN凭据创建KEYVAULT机密作用域 [英] Databricks API 2.0 - Can't create KEYVAULT secrets scopes using SPN credentials

查看:0
本文介绍了数据库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屋!

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