マネージド 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 の使用はサポートされていません。
前提条件
この機能を使用するには、次の前提条件が必要です。
- Pro ライセンスを持つ Power BI アカウント。
- Power BI アカウント内のアップグレードされたワークスペース。 詳細については、「Power BI に関するお知らせ」を参照してください。
Azure portal を使用して Stream Analytics ジョブを作成する
Azure portal で、新しい Stream Analytics ジョブを作成するか、既存のジョブを開きます。
画面の左側にあるメニュー バーから、[設定] の下にある [マネージド ID] を選択します。
[ID の選択] ページで、[システム割り当て ID]* を選択します。 後者のオプションを選択する場合は、使用したいマネージド ID を指定します。 次に、 [保存] を選択します。
[マネージド ID] ページで、Stream Analytics ジョブに割り当てられているプリンシパル ID とプリンシパル名が表示されることを確認します。 プリンシパル名は、Stream Analytics ジョブ名と同じである必要があります。
出力を構成する前に、この記事の「Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する」の手順に従って、Power BI ワークスペースへの Stream Analytics ジョブのアクセス権を付与します。
Stream Analytic のジョブの [出力] セクションに移動し、 [+ 追加] を選択し、 [Power BI] を選択します。 次に、[承認] ボタンを選択し、Power BI アカウントでサインインします。
承認されると、アクセス権のあるすべてのワークスペースがドロップダウン リストに取り込まれます。 前の手順で承認したワークスペースを選択します。 次に、 [認証] で "認証モード" を選択します。 最後に、 [保存] ボタンを選択します。
Azure Resource Manager デプロイ
Azure Resource Manager を使用すると、Stream Analytics ジョブのデプロイを完全に自動化できます。 Azure PowerShell または Azure CLI を使用して、Resource Manager テンプレートをデプロイできます。 次の例では、Azure CLI を使用しています。
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
ジョブが作成された後、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
をメモしておきます。ジョブが作成されたので、この記事の「Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する」セクションを参照してください。
Stream Analytics ジョブに Power BI ワークスペースへのアクセス権を付与する
Stream Analytics ジョブが作成されたので、Power BI ワークスペースへのアクセス権を付与することができます。 ジョブにアクセス権を付与したら、ID が伝達されるまで数分待ちます。
Power BI UI を使用する
注意
UI を使用して Stream Analytics ジョブを Power BI ワークスペースに追加するには、Power BI 管理ポータルの [開発者向け設定] でサービス プリンシパル アクセスを有効にする必要もあります。 詳細については、「サービス プリンシパルの利用開始」を参照してください。
ワークスペースのアクセス設定に移動します。 詳細については、「ワークスペースへのアクセスの付与」を参照してください。
テキストボックスに Stream Analytics ジョブの名前を入力し、アクセス レベルとして [Contributor]\(共同作成者\) を選択します。
[追加] を選択し、ペインを閉じます。
Power BI PowerShell コマンドレットを使用する
Power BI
MicrosoftPowerBIMgmt
PowerShell コマンドレットをインストールします。重要
バージョン 1.0.821 以降のコマンドレットを使用していることを確認してください。
Install-Module -Name MicrosoftPowerBIMgmt
Power BI にサインインします。
Login-PowerBI
共同作成者として 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 で生成する必要があります。