トークンベースの ID (SSO) を使用してレポートを埋め込む

適用対象: アプリ所有データ ユーザー所有データ

トークン ベースの ID を使用すると、ISV は Microsoft Entra アクセス トークンを使用して、顧客の ID を顧客のテナントで管理されている Azure SQL データベースに渡すことができます。

Azure SQL Database でデータを保持および管理する ISV の顧客は、ISV アプリで Power BI Embedded と統合すると、テナント内でデータを安全に保つことができます。

埋め込みトークンを生成する際は、Azure SQL サーバー用のユーザーの Microsoft Entra アクセス トークンを渡すことで、Azure SQL のユーザーの ID を指定します。 このアクセス トークンは、その特定のセッションにおいて、Azure SQL からそのユーザーに関連するデータだけをプルするために使用されます。

ISV が有効な ID を SQL テナントに渡し、顧客が埋め込みトークンを返す様子を表す概要図。

Important

App-owns-data SSO の制限事項:

  • アプリ所有データのシナリオ (サービス プリンシパルまたはマスター ユーザー認証) では、DirectQuery データソースの SSO は Azure SQL Database でのみサポートされます。
  • SSO を使用して埋め込みトークンを生成する場合は、SSO が有効IdentityBlobデータソースにを指定する必要があります。 IdentityBlob を省略すると、トークンの生成またはクエリの実行が失敗します。

トークンベースの ID を設定する

トークンベース ID が動作するのは、Microsoft Entra 認証を許可するように構成された Azure SQL Database に接続されている容量上の DirectQuery モデルに対してのみです。 トークン ベースの ID を使用するには、エンド ユーザーの OAuth2 資格情報を使用するように、セマンティック モデルのデータ ソースを構成する必要があります。 Azure SQL Database の Microsoft Entra 認証の詳細について学習します

トークン ベースの ID を構成する前に、次のことを確認します。

  • DirectQuery データ ソースは Azure SQL Database (App-owns-data シナリオでサポートされている唯一の SSO データソース) です。
  • Azure SQL Databaseは、Microsoft Entra 認証用に構成されます。
  • Azure SQL サーバーで使用するためのユーザーのMicrosoft Entraアクセス トークンを所有しており、IdentityBlobとして渡すことができます。
  1. Power BI ポータルで、[セマンティック モデル] > その他のオプション (3 つのドット) > [設定] > [データ ソースの資格情報] > [資格情報の編集] を選択します。

    Power BI ポータルのデータセット設定オプションのスクリーンショット。

  2. [OAuth2] オプション ボックスをオンにします。

    Azure SQL サーバーの構成スクリーンショット。

ID トークンを生成する

Azure SQL のアクセス トークンを作成するためには、Azure portal の Microsoft Entra アプリ登録構成において、Azure SQL Database API に対して "Azure SQL DB と Data Warehouse へアクセスする" ための委任されたアクセス許可をアプリが持っている必要があります。

Azure portal の Microsoft Entra アプリ登録構成設定のスクリーンショット。 Azure AD v2 エンドポイントからスコープ に対してユーザーのトークンを認証して取得します。

支援が必要な場合は、次の MSAL コード サンプルを参照してください。

埋め込みトークンを生成する

レポートにトークン ベースの ID を埋め込むには、目的の ISV ユーザーのトークン ベース ID を含む埋め込みトークンを生成します。 さまざまなシナリオでの埋め込みトークンの生成については、次の例を参照してください。

Note

SSO が有効化されているそれぞれの Azure SQL データソースに対して、有効な identityBlob を含む datasourceIdentities エントリを必ず追加してください。 SSO 対応データソースに identityBlobがない場合、埋め込みトークン生成呼び出しは失敗するか、クエリの実行でエラーが返されます。

{
  "datasets": [
    {
      "id": "66ba5010-xxxx-xxxx-xxxx-f2bf0125abeb",
    }
  ],
  "reports": [
    {
      "allowEdit": false,
      "id": "9e6da541-xxxx-xxxx-xxxx-7d9442827cce"
    }
  ],
  "datasourceIdentities": [
    {
      "identityBlob": "eyJ…",
      "datasources": [
        {
          "datasourceType": "Sql",
          "connectionDetails": {
            "server": "YourServerName.database.windows.net",
            "database": "YourDataBaseName"
          }
        }
      ]
    }
  ]
}

次の例は、SSO と RLS がデータセットに適用された埋め込み Power BI レポートを示しています。

データセットに対して SSO と RLS が適用された埋め込み Power BI レポートのスクリーンショット。