マネージド ID を使用して、Power BI に対して Azure Stream Analytics ジョブを認証する

Power BI への出力のマネージド ID 認証により、Stream Analytics ジョブは Power BI アカウント内のワークスペースに直接アクセスできるようになります。 ユーザーが Azure portal 経由で Power BI に対話形式でログインする必要がなくなったため、この機能を使用すると、Stream Analytics ジョブのデプロイを完全に自動化できます。 さらに、ジョブを定期的に再承認する必要がなくなるため、Power BI に書き込む長期ジョブのサポートが強化されるようになりました。

この記事では、Azure portal を通じて、および Azure Resource Manager デプロイを通じて、Stream Analytics ジョブの Power BI 出力に対してマネージド ID を有効にする方法を示します。

Note

Power BI 出力では、システム割り当てマネージド ID のみがサポートされています。 現在、Power BI 出力でのユーザー割り当てマネージド ID の使用はサポートされていません。

前提条件

この機能を使用するには、次の前提条件が必要です。

Azure portal を使用して Stream Analytics ジョブを作成する

  1. Azure portal で、新しい Stream Analytics ジョブを作成するか、既存のジョブを開きます。

  2. 画面の左側にあるメニュー バーから、[設定] の下にある [マネージド ID] を選択します。

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

  3. [ID の選択] ページで、[システム割り当て ID]* を選択します。 後者のオプションを選択する場合は、使用したいマネージド ID を指定します。 次に、 [保存] を選択します。

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

  4. [マネージド ID] ページで、Stream Analytics ジョブに割り当てられているプリンシパル IDプリンシパル名が表示されることを確認します。 プリンシパル名は、Stream Analytics ジョブ名と同じである必要があります。

  5. 出力を構成する前に、この記事の「Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する」の手順に従って、Power BI ワークスペースへの Stream Analytics ジョブのアクセス権を付与します。

  6. Stream Analytic のジョブの [出力] セクションに移動し、 [+ 追加] を選択し、 [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 を使用すると、Stream Analytics ジョブのデプロイを完全に自動化できます。 Azure PowerShell または Azure CLI を使用して、Resource Manager テンプレートをデプロイできます。 次の例では、Azure CLI を使用しています。

  1. Resource Manager テンプレートのリソース セクションに次のプロパティを含めることで、マネージド ID を持つ Microsoft.StreamAnalytics/streamingjobs リソースを作成できます。

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

    このプロパティにより、Stream Analytics ジョブの ID を作成し、管理するように Azure Resource Manager に通知されます。 次に示すのは、マネージド ID が有効になった Stream Analytics ジョブと、マネージド ID を使用する Power BI 出力シンクをデプロイする Resource Manager テンプレートの例です。

    {
        "$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 を使用して Stream Analytics ジョブを Power BI ワークスペースに追加する予定である場合は、返された principalId をメモしておきます。

  3. ジョブが作成されたので、この記事の「Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する」セクションを参照してください。

Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する

Stream Analytics ジョブが作成されたので、Power BI ワークスペースへのアクセス権を付与することができます。 ジョブにアクセス権を付与したら、ID が伝達されるまで数分待ちます。

Power BI UI を使用する

注意

UI を使用して Stream Analytics ジョブを Power BI ワークスペースに追加するには、Power BI 管理ポータルの [開発者向け設定] でサービス プリンシパル アクセスを有効にする必要もあります。 詳細については、「サービス プリンシパルの利用開始」を参照してください。

  1. ワークスペースのアクセス設定に移動します。 詳細については、「ワークスペースへのアクセスの付与」を参照してください。

  2. テキストボックスに Stream Analytics ジョブの名前を入力し、アクセス レベルとして [Contributor]\(共同作成者\) を選択します。

  3. [追加] を選択し、ペインを閉じます。

    Add Stream Analytics job to Power BI workspace

Power BI PowerShell コマンドレットを使用する

  1. Power BI MicrosoftPowerBIMgmt PowerShell コマンドレットをインストールします。

    重要

    バージョン 1.0.821 以降のコマンドレットを使用していることを確認してください。

    Install-Module -Name MicrosoftPowerBIMgmt
    
  2. Power BI にサインインします。

    Login-PowerBI
    
  3. 共同作成者として Stream Analytics ジョブをワークスペースに追加します。

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

Power BI REST API を使用する

"グループ ユーザーの追加" REST API を直接使用して、Stream Analytics ジョブを共同作成者としてワークスペースに追加することもできます。 この API の完全なドキュメントは次の場所にあります。グループ - グループ ユーザーの追加

要求のサンプル

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

要求本文

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

サービス プリンシパルを使用して ASA ジョブのマネージド Id にアクセス許可を付与する

自動化されたデプロイのために、対話型サインインを使用して ASA ジョブのアクセス権を Power BI ワークスペースに付与するはできません。 これはサービス プリンシパルを使用して ASA ジョブのマネージド ID のアクセス許可を付与することで行えます。 これは PowerShell を使用して行うことができます。

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

マネージド ID を削除する

Stream Analytics ジョブに対して作成されたマネージド ID は、ジョブが削除されたときにのみ削除されます。 そのジョブを削除せずにマネージド ID を削除する方法はありません。 マネージド ID を使用する必要がなくなった場合は、出力の認証方法を変更できます。 マネージド ID は、ジョブが削除されるまで存在し続け、マネージド ID の認証を再度使用する場合に使用されます。

制限事項

この機能の制限は次のとおりです。

  • クラシック Power BI ワークスペースはサポートされていません。

  • Microsoft Entra ID のない Azure アカウント。

  • マルチテナント アクセスは、サポートされていません。 特定の Stream Analytics ジョブに対して作成されたサービス プリンシパルは、ジョブが作成された同じ Microsoft Entra テナントに配置する必要があり、別の Azure Microsoft Entra テナントに配置されたリソースでは使用できません。

  • ユーザー割り当て ID はサポートされていません。 つまり、それらの Stream Analytics ジョブで使用される、独自のサービス プリンシパルを入力することはできません。 サービス プリンシパルは、Azure Stream Analytics で生成する必要があります。

次のステップ