実効 ID を設定する

完了

"顧客向け" シナリオの場合、埋め込みトークンを生成するときに実効 ID を設定できます。

アプリのロジックで、最初に 1 つ以上の effectiveidentity オブジェクトのリストを作成します。 各オブジェクトに、次のパラメーターを含めることができます。

  • Datasets: (必須) DatasetID の一覧。

  • Username: (省略可能) 内部ホスト型モデルの場合は、USERNAME 関数または USERPRINCIPALNAME 関数によって返されるテキスト値になります。 外部ホスト型モデルの場合は、モデルに接続するためのユーザー名になります。

  • Roles: (省略可能) ロール名の一覧。

  • CustomData: (省略可能) CUSTOMDATA 関数によって返されるテキスト値。

  • IdentityBlob: (省略可能) Microsoft Azure SQL Database への DirectQuery 接続でトークン ベースの ID に使用される Azure AD アクセス トークン。 これにより、データ モデルの RLS を使用せずにデータのアクセス許可を適用できます。 このトピックについては、このユニットで後ほど説明します。

データセットの一覧を渡す理由は、異なるデータセットに接続する多数の Power BI 成果物を埋め込むために埋め込みトークンを使用するため、またはダッシュボードが複数のデータセットに接続するタイルで構成されているためです。 複数のロールの一覧を渡すと、すべてのロールが同時に適用されます。つまり、ユーザーはロールによって許可されるデータの和集合を見ることができます。

次の例では、1 つの effectiveidentity オブジェクトを含むリストを作成します。 現在のアプリ ユーザーのユーザー名、Region ロール、およびワークスペースで見つかった最初の (そして、おそらく唯一の) データセットを渡します。

// Create effective identity for the first dataset
var datasetId = datasets[0].Id.ToString();
var effectiveIdentities = new List<EffectiveIdentity>() {
	new EffectiveIdentity(
		username: userProfile.Username,
		roles: new List<string> {"Region"},
		datasets: new List<string> {datasetId})
};

次に、埋め込みトークンを生成するために、アプリで GenerateTokenRequestV2 メソッドの identities パラメーターにリストを渡します。 埋め込みトークンを生成するメソッドは他にもあり、どれでも実効 ID の一覧を渡すことができます。

// Bundle token requests for the reports, datasets, and the workspace
var tokenRequest = new GenerateTokenRequestV2(
    reports: reportTokenRequests,
    datasets: datasetTokenRequests,
    targetWorkspaces: workspaceRequests,
    identities: effectiveIdentities
) ;

次のトピックでは、Power BI データセットの種類ごとに実効 ID を設定する方法について詳しく説明します。

内部ホスト型インポート テーブルの実効 ID を設定する

インポート テーブルを含む内部ホスト型モデルに接続するために実効 ID を渡すときは、次のパラメーターを検討します。

  • 少なくとも 1 つのロールをモデルで定義する必要があります。

  • ユーザー名は渡す必要がありますが、実際のユーザー名にする必要はありません。 渡される値は、USERNAME 関数または USERPRINCIPALNAME 関数によって返されます。

  • 少なくとも 1 つのロールを実効 ID によって定義する必要があります。

内部ホスト型 DirectQuery テーブルの実効 ID を設定する

内部ホスト型 DirectQuery テーブルの実効 ID を設定するには、内部ホスト型インポート テーブルの場合と同じガイダンスを使います。

さらに、"トークンベースの ID" を使用できます。 トークンベースの ID を使用すると、Azure AD アクセス トークンを使用して埋め込みトークンの実効 ID を指定できますが、ソースが Azure SQL Database の場合に限られます。 埋め込みトークンを生成するときに、アプリで IdentityBlob パラメーターにアクセス トークンを渡します。 この場合、username パラメーターに値を渡す必要はありません。

トークン ベースの ID を使用するには、データセット所有者がエンド ユーザーの OAuth2 資格情報を使用するようにデータ ソースをセットアップする必要があります。 こうして、Power BI は、実行 ID ユーザー名を使用してデータ ソースに接続します。 これは、データ モデルの代わりにデータベースで RLS を適用できることを意味します。

トークン ベースの ID について詳しくは、「Power BI Embedded のセキュリティ機能」を参照してください。

Azure Analysis Services の実効 ID を設定する

Azure Analysis Services モデルを使用するときに実効 ID を設定するには、埋め込み ID (サービス プリンシパルまたはマスター ユーザー アカウント) に少なくともモデルに対する読み取りアクセス許可があることを確認する必要があります。

実効 ID が渡されず、埋め込み ID アカウントが Analysis Services 管理者の場合は、すべてのアプリ ユーザーがすべてのモデル データを表示できます。 埋め込み ID アカウントが Analysis Services 管理者でない場合は、データの可視性がそのアカウントの割り当てられたロールによって制限されます。

注意

Azure Analysis Services モデルでサービス プリンシパルを使うときは、サービス プリンシパルに Azure Analysis Services インスタンスのアクセス許可を付与する必要があります。 このために、サービス プリンシパルを含むセキュリティ グループを使用することはできません。

Azure Analysis Services モデルを使用するために実効 ID を渡すときは、次のパラメーターを検討します。

  • 少なくとも 1 つのロールをモデルで定義する必要があります。

  • ユーザー名は、マスター ユーザー アカウント (UPN 形式) またはサービス プリンシパル (ObjectID) にする必要があります。

  • 実効 ID の一部を形成するロールがない場合は、実効 ID のアカウントに割り当てられたロールが適用されます。

  • USERNAME 関数は、実効 ID ユーザー名を返します。

SQL Server Analysis Services の実効 ID を設定する

SQL Server Analysis Services モデルを使用するときに実効 ID を設定するには、ゲートウェイ データ ソースの資格情報を Analysis Services 管理者として設定する必要があります。

実効 ID (サービス プリンシパルまたはマスター ユーザー アカウント) は、ゲートウェイ管理者であるか、ゲートウェイ データ ソースに対する ReadOverrideEffectiveIdentity アクセス許可を持っている必要があります。 このアクセス許可は、Power BI REST API を使用することによってのみ設定できます。

実効 ID が渡されず、埋め込み ID アカウントが Analysis Services 管理者の場合は、すべてのユーザーがすべてのモデル データを表示できます。 埋め込み ID アカウントが Analysis Services 管理者でない場合は、データの可視性がそのアカウントの割り当てられたロールによって制限されます。

SQL Server Analysis Services モデルを使用するために実効 ID を渡すときは、次のパラメーターを検討します。

  • 少なくとも 1 つのロールをモデルで定義する必要があります。

  • ユーザー名は、UPN または DOMAIN\username 形式を使用した、Windows アカウントにする必要があります。

  • ユーザー名には、モデルに対する読み取りアクセス許可が必要です。

  • 実効 ID の一部を形成するロールがない場合は、実効 ID のユーザー名に割り当てられたロールが適用されます。

  • USERNAME 関数は、実効 ID ユーザー名を返します。

  • CUSTOMDATA 関数の使用はサポートされていません。

データセットの種類を比較する

次の表に、4 種類のデータセットの実効 ID パラメーター設定の比較を示します。

パラメーター 内部ホスト型インポート テーブル 内部ホスト型 DirectQuery テーブル Azure Analysis Services SQL Server Analysis Services
ユーザー名 USERNAME 関数と USERPRINCIPALNAME 関数によって返されるテキスト値 USERNAME 関数と USERPRINCIPALNAME 関数によって返されるテキスト値 これは、サービスで認証するために使用されます。 マスター ユーザー アカウント (UPN 形式) またはサービス プリンシパル (ObjectID) にする必要があります。 これは、サービスで認証するために使用されます。 UPN または DOMAIN\username 形式を使用した、Windows アカウントにする必要があります。
CustomData サポートされています サポートされています サポートされています サポートされていません
ロール 少なくとも 1 つのロールを実効 ID によって定義する必要があります 少なくとも 1 つのロールを実効 ID によって定義する必要があります ロールを渡さないと、実効 ID のアカウントに割り当てられたロールが適用されます ロールを渡さないと、実効 ID のアカウントに割り当てられたロールが適用されます
IdentityBlob いいえ はい。ソース データが Azure SQL Database の場合 (RLS 要件を適用する必要があります) いいえ いいえ
関連情報 ゲートウェイが必要です。 実効 ID アカウントがゲートウェイ管理者である必要があります。