尝试通过 Active Directory 访问 Azure Databricks API 时出现错误 403 用户未获授权
Error 403 User not authorized when trying to access Azure Databricks API through Active Directory
我一直在关注文档:https://docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token
创建服务主体并使用它来访问 Databricks。我已经配置了一个 databricks 工作区,并用它创建了一个集群。然后我按照文档中提到的过程,创建了一个服务主体并获得了两个令牌:AD 访问令牌和管理访问令牌。但是,我无法使用 API.
配置后最终调用cURL命令:
curl -X GET \
-H 'Authorization: Bearer <access-token>' \
-H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
-H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
https://<databricks-instance>/api/2.0/clusters/list
代币和其他信息提供了以下结果:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 User not authorized.</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /api/2.0/clusters/list. Reason:
<pre> User not authorized.</pre></p>
</body>
</html>
我尝试了一些方法来解决这个问题,即将原始访问令牌请求更改为使用 authorization_code
授权类型的交互式流程等等,但这只是给了我一个 Invalid access token
错误。
是不是上面的配置有问题?我是否缺少某些权限?
更新:来到访问控制(IAM)页面,应用程序似乎没有包含在那里。
您必须向服务主体授予角色。
这是我没有给服务主体授予角色的测试结果。错误和你的一样:
接下来,按照以下流程为服务主体授予角色:
Azure 门户>Azure Databricks>Azure Databricks 服务>访问控制(IAM)>添加角色分配>Select您要授予的角色并找到您的服务主体>保存
最后,使用服务主体获取令牌。(不要忘记向服务主体授予权限并授予管理员同意)
获取 Azure Active Directory 访问令牌:
获取 Azure 管理资源端点令牌:
使用管理端点访问令牌访问 Databricks REST API:
我一直在关注文档:https://docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token
创建服务主体并使用它来访问 Databricks。我已经配置了一个 databricks 工作区,并用它创建了一个集群。然后我按照文档中提到的过程,创建了一个服务主体并获得了两个令牌:AD 访问令牌和管理访问令牌。但是,我无法使用 API.
配置后最终调用cURL命令:
curl -X GET \
-H 'Authorization: Bearer <access-token>' \
-H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
-H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
https://<databricks-instance>/api/2.0/clusters/list
代币和其他信息提供了以下结果:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 User not authorized.</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /api/2.0/clusters/list. Reason:
<pre> User not authorized.</pre></p>
</body>
</html>
我尝试了一些方法来解决这个问题,即将原始访问令牌请求更改为使用 authorization_code
授权类型的交互式流程等等,但这只是给了我一个 Invalid access token
错误。
是不是上面的配置有问题?我是否缺少某些权限?
更新:来到访问控制(IAM)页面,应用程序似乎没有包含在那里。
您必须向服务主体授予角色。
这是我没有给服务主体授予角色的测试结果。错误和你的一样:
接下来,按照以下流程为服务主体授予角色:
Azure 门户>Azure Databricks>Azure Databricks 服务>访问控制(IAM)>添加角色分配>Select您要授予的角色并找到您的服务主体>保存
最后,使用服务主体获取令牌。(不要忘记向服务主体授予权限并授予管理员同意)
获取 Azure Active Directory 访问令牌: