使用 Microsoft Entra ID 服务主体登录 PowerShell

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

重要

Azure Databricks 托管服务主体直接在 Azure Databricks 中进行管理。 Microsoft Entra ID 托管服务主体在 Microsoft Entra ID 中进行管理,这需要其他权限。 Databricks 建议在大多数用例中使用 Azure Databricks 托管服务主体。 但是,Databricks 建议在必须同时向 Azure Databricks 和其他 Azure 资源进行身份验证的情况下使用 Microsoft Entra ID 托管服务主体。

若要创建 Azure Databricks 托管服务主体而不是 Microsoft Entra ID 托管服务主体,请参阅管理服务主体

  1. 收集以下信息:

    参数 说明
    Tenant ID 在 Microsoft Entra ID 中注册的相关应用程序的 Directory (tenant) ID
    Client ID 在 Microsoft Entra ID 中注册的相关应用程序的 Application (client) ID
    Client secret 在 Microsoft Entra ID 中注册的相关应用程序的客户端密码的 Value
  2. 使用 PowerShell 运行以下代码行(一次一行)将服务主体登录到 Azure,最后调用 Connect-AzAccount -Environment AzureChinaCloud cmdlet。

    $SecurePassword = ConvertTo-SecureString -String "<Client-secret>" -AsPlainText -Force
    $TenantId = "<Tenant-ID>"
    $ApplicationId = "<Client-ID>"
    $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecurePassword
    Connect-AzAccount -Environment AzureChinaCloud -ServicePrincipal -TenantId $TenantId -Credential $Credential
    

    注意

    如果错误消息指出无法识别 Connect-AzAccount -Environment AzureChinaCloud cmdlet,请通过运行以下 cmdlet 来安装它:

    Install-Module -Name Az -Repository PSGallery -Force
    
  3. 确认你已登录到已登录服务主体的正确订阅。 要获取已登录订阅的名称和 ID 以及订阅的相关租户 ID,请运行以下 cmdlet:

    Get-AzContext | Select-Object -ExpandProperty Subscription
    

    例如,如果不确定正确的订阅应该是什么,可通过在工作区导航栏中单击用户名>“Azure 门户”来获取 Azure Databricks 工作区的订阅 ID。 在显示的 Azure Databricks 工作区资源页上,单击边栏中的“概述”。 然后查找“订阅 ID”字段,其中包含订阅 ID。

    如果无法访问 Azure 门户,但有权访问 Azure Databricks 帐户控制台,则可以获取 Azure Databricks 工作区的正确订阅,如下所示:

    1. 记下工作区的编程名称,该名称位于工作区导航栏中用户名旁边。
    2. 在工作区导航栏中单击你的用户名 >“管理帐户”。
    3. 在边栏中单击“工作区”。
    4. 在“筛选工作区”框中,输入工作区的编程名称,然后按 Enter
    5. 在结果列表中单击工作区的编程名称。
    6. 记下包含订阅 ID 的“订阅”字段。

    如果需要切换到其他订阅,请运行 Set-AzContext cmdllet,并使用 -Name-Subscription 参数来指定正确的订阅名称或 ID。

    Set-AzContext -Name "<subscription-name>"
    
    # Or ...
    
    Set-AzContext -Subscription <subscription-id>
    

    如果显示了以下消息,则表示登录到了错误的租户:The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. 若要登录到正确的租户,必须再次运行 Connect-AzAccount -Environment AzureChinaCloud cmdlet,并使用 -Tenant 选项指定正确的租户 ID。

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

    Connect-AzAccount -Environment AzureChinaCloud -Tenant <tenant-id>