使用 Microsoft Entra ID 服务主体进行 Azure CLI 登录

按照以下步骤,通过 Microsoft Entra ID 服务主体使用 Azure CLI 登录到 Azure Databricks。 有关 Azure Databricks 服务主体的信息,请参阅管理服务主体

  1. 收集以下信息:

    参数 说明
    Tenant ID 在 Microsoft Entra ID 中注册的相关应用程序的 Directory (tenant) ID
    Client ID 在 Microsoft Entra ID 中注册的相关应用程序的 Application (client) ID
    Client secret 在 Microsoft Entra ID 中注册的相关应用程序的客户端密码的 Value
  2. 请通过执行以下操作之一获取 Microsoft Entra ID 服务主体的正确 Azure 订阅 ID(如果你尚不知道此 ID):

    • 在 Azure Databricks 工作区的顶部导航栏中,单击你的用户名,然后单击“Azure 门户”。 在显示的 Azure Databricks 工作区资源页上,单击边栏中的“概述”。 然后查找“订阅 ID”字段,其中包含订阅 ID。

    • 使用 Azure CLI 运行 az databricks workspace list 命令,使用 --query-o--output 选项缩小结果范围。 将 adb-0000000000000000.0.azuredatabricks.net 替换为你的工作区实例的名称,不包括 https://。 在此示例中,输出中 /subscriptions/ 后的 00000000-0000-0000-0000-000000000000 是订阅 ID。

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      如果显示了以下消息,则表示你登录到了错误的租户:The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. 要登录到正确的租户,必须再次运行 az login 命令,使用 -t--tenant 选项指定正确的租户 ID。

      可以通过运行命令 curl -v <per-workspace-URL>/aad/auth 并查看输出 < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000 来获取 Azure Databricks 工作区的租户 ID,其中的 00000000-0000-0000-0000-000000000000 是租户 ID。 另请参阅在 Azure 门户中获取订阅和租户 ID

      az login -t <tenant-id>
      
  3. 获得 Microsoft Entra ID 服务主体的正确 Azure 租户 ID、客户端 ID、客户端密码和订阅 ID 后,请使用 Azure CLI 运行 az login 命令来登录到 Azure。 使用 --service-principal 选项,同时为在 Microsoft Entra ID 中注册的相关应用程序指定 Tenant ID (Directory (tenant) ID)、Client ID (Application (client) ID) 和 Client secret (Value) 参数的值。

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. 确认你已登录到已登录 Microsoft Entra ID 服务主体的正确订阅。 为此,请运行 az account set 命令,使用 -s--subscription 选项来指定正确的订阅 ID。

    az account set -s <subscription-id>