分享方式:


使用受控識別向 Power BI 驗證 Azure 串流分析作業

Power BI 輸出的受控識別驗證可讓串流分析作業直接存取您 Power BI 帳戶中的工作區。 此功能可讓串流分析作業的部署完全自動化,因為使用者不再需要透過 Azure 入口網站,以互動方式登入 Power BI。 此外,現在支援寫入 Power BI 的長時間執行作業,因為您將不需要定期重新授權作業。

本文示範如何透過 Azure 入口網站與 Azure Resource Manager 部署,針對串流分析作業的 Power BI 輸出啟用受控識別。

注意

Power BI 輸出僅支援系統指派的受控識別。 目前不支援將使用者指派的受控識別與 Power BI 輸出搭配使用。

必要條件

使用這項功能之前,您必須先具備下列必要條件:

使用 Azure 入口網站建立串流分析作業

  1. 建立新的串流分析作業,或在 Azure 入口網站中開啟現有作業。

  2. 從畫面左側的功能表列,選取位於 [設定] 下的 [受控識別]

    Screenshot showing the Managed Identity page with Select identity button selected.

  3. 在 [選取身分識別] 頁面上,選取 [系統指派的身分識別]*。 如果您選取後一個選項,請指定您想要使用的受控識別。 然後選取 [儲存]。

    Screenshot showing the Select identity page with System assigned identity selected.

  4. 在 [受控識別] 頁面上,確認您看到指派給串流分析作業的主體識別碼主體名稱。 主體名稱應該與您的串流分析作業的名稱相同。

  5. 在設定輸出之前,請遵循本文授與串流分析作業存取權給 Power BI 工作區一節中的指示,授與串流分析作業存取權給 Power BI 工作區。

  6. 請巡覽至串流分析作業的 [輸出] 區段,並選取 [+ 新增],然後選擇 [Power BI]。 然後,選取 [授權] 按鈕,並使用您的 Power BI 帳戶登入。

    Authorize with Power BI account

  7. 獲得授權之後,下拉式清單就會填入您可以存取的所有工作區。 選取您在上一步獲得授權的工作區。 然後選取 [受控識別] 作為 [驗證模式]。 最後,選取 [儲存] 按鈕。

    Screenshot showing the Power BI output configuration with Managed identity authentication mode selected.

Azure Resource Manager 部署

Azure Resource Manager 可讓您將串流分析作業的部署完全自動化。 您可以使用 Azure PowerShell 或 Azure CLI 來部署 Resource Manager 範本。 下列範例使用 Azure CLI。

  1. 您可以藉由在 Resource Manager 範本的資源區段中包括下列屬性來建立具有受控識別的 Microsoft.StreamAnalytics/streamingjobs 資源:

    "identity": {
        "type": "SystemAssigned",
    }
    

    此屬性告知 Azure Resource Manager 為您的串流分析作業建立身分識別並加以管理。 以下為範例 Resource Manager 範本,可部署已啟用受控識別的串流分析作業,以及使用受控識別的 Power BI 輸出接收:

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
            {
                "apiVersion": "2017-04-01-preview",
                "name": "pbi_managed_id",
                "location": "[resourceGroup().location]",
                "type": "Microsoft.StreamAnalytics/StreamingJobs",
                "identity": {
                    "type": "systemAssigned"
                },
                "properties": {
                    "sku": {
                        "name": "standard"
                    },
                    "outputs":[
                        {
                            "name":"output",
                            "properties":{
                                "datasource":{
                                    "type":"PowerBI",
                                    "properties":{
                                        "dataset": "dataset_name",
                                        "table": "table_name",
                                        "groupId": "01234567-89ab-cdef-0123-456789abcdef",
                                        "authenticationMode": "Msi"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    您可以使用下列 Azure CLI 命令,將上述作業部署至資源群組 ExampleGroup

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. 建立該作業之後,使用 Azure Resource Manager 擷取作業的完整定義。

    az resource show --ids /subscriptions/<subsription-id>/resourceGroups/<resource-group>/providers/Microsoft.StreamAnalytics/StreamingJobs/<resource-name>
    

    上述命令將傳回如下的回應:

    {
        "id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.StreamAnalytics/streamingjobs/<resource-name>",
        "identity": {
            "principalId": "<principal-id>",
            "tenantId": "<tenant-id>",
            "type": "SystemAssigned",
            "userAssignedIdentities": null
        },
        "kind": null,
        "location": "West US",
        "managedBy": null,
        "name": "<resource-name>",
        "plan": null,
        "properties": {
            "compatibilityLevel": "1.0",
            "createdDate": "2019-07-12T03:11:30.39Z",
            "dataLocale": "en-US",
            "eventsLateArrivalMaxDelayInSeconds": 5,
            "jobId": "<job-id>",
            "jobState": "Created",
            "jobStorageAccount": null,
            "jobType": "Cloud",
            "outputErrorPolicy": "Stop",
            "package": null,
            "provisioningState": "Succeeded",
            "sku": {
                "name": "Standard"
            }
        },
        "resourceGroup": "<resource-group>",
        "sku": null,
        "tags": null,
        "type": "Microsoft.StreamAnalytics/streamingjobs"
    }
    

    若您打算使用 Power BI REST API 將串流分析作業新增至 Power BI 工作區,請記下傳回的 principalId

  3. 現在已建立作業,請繼續閱讀本文的將 Power BI 工作區的存取權授與串流分析作業一節。

將 Power BI 工作區的存取權授與串流分析作業

既然已建立串流分析作業,即獲得 Power BI 工作區的存取權。 獲得作業存取權之後,請讓身分識別散佈幾分鐘。

使用 Power BI UI

注意

為了使用 UI 將串流分析作業新增至 Power BI 工作區,您也必須在 Power BI 管理入口網站的 [開發人員設定] 中啟用服務主體存取。 如需詳細資訊,請參閱開始使用服務主體

  1. 請巡覽至工作區的存取設定。 如需詳細資訊,請參閱授與工作區的存取權

  2. 在文字方塊中鍵入串流分析作業的名稱,然後選取 [參與者] 作為存取層級。

  3. 選取 [新增] 並關閉窗格。

    Add Stream Analytics job to Power BI workspace

使用 Power BI PowerShell Cmdlet

  1. 安裝 Power BI MicrosoftPowerBIMgmt PowerShell Cmdlet。

    重要

    請務必使用 1.0.821 版或更新版本的 Cmdlet。

    Install-Module -Name MicrosoftPowerBIMgmt
    
  2. 登入 Power BI。

    Login-PowerBI
    
  3. 將串流分析作業新增為工作區的參與者。

    Add-PowerBIWorkspaceUser -WorkspaceId <group-id> -PrincipalId <principal-id> -PrincipalType App -AccessRight Contributor
    

使用 Power BI REST API

串流分析作業也可以直接使用「新增群組使用者」REST API,新增為工作區的參與者。 如需此 API 的完整文件,請參閱此處:群組 - 新增群組使用者

範例要求

POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/users

要求本文

{
    "groupUserAccessRight": "Contributor",
    "identifier": "<principal-id>",
    "principalType": "App"
}

使用服務主體授與 ASA 作業受控識別的權限

針對自動化部署,無法使用互動式登入將 Power BI 工作區的存取權授與 ASA 作業。 此作業可藉由使用服務主體授與 ASA 作業受控識別的權限來完成。 可以使用 PowerShell:

Connect-PowerBIServiceAccount -ServicePrincipal -TenantId "<tenant-id>" -CertificateThumbprint "<thumbprint>" -ApplicationId "<app-id>"
Add-PowerBIWorkspaceUser -WorkspaceId <group-id> -PrincipalId <principal-id> -PrincipalType App -AccessRight Contributor

移除受控識別

只有在刪除作業時,才會刪除針對串流分析作業而建立的受控識別。 刪除受控識別時,無法不刪除作業。 若不想再使用該受控識別,可變更輸出的驗證方法。 刪除該作業之前,受控識別將繼續存在,並在您決定再次使用受控識別驗證時提供使用。

限制

以下是此功能的限制:

  • 不支援傳統 Power BI 工作區。

  • 沒有 Microsoft Entra ID 的 Azure 帳戶。

  • 不支援多租用戶存取。 針對指定串流分析作業建立的服務主體必須位於建立該作業所在的相同 Microsoft Entra 租用戶中,而且不能與位於不同 Microsoft Entra 租用戶的資源搭配使用。

  • 不支援使用者指派的身分識別。 這表示您無法進入自己的服務主體,以供串流分析作業使用。 服務主體必須由 Azure 串流分析產生。

下一步