Power BI モデル オブジェクトへのアクセスを制限する

完了

データ モデラーは、Power BI モデル オブジェクトへのユーザー アクセスを制限することを検討できます。 オブジェクト レベル セキュリティ (OLS) を使うと、特定のテーブルと列およびそれらのメタデータへのアクセスを制限できます。 通常は、OLS を適用して、従業員の個人データのような機密データが格納されているオブジェクトをセキュリティで保護します。

Power BI で OLS を適用するときは、テーブルと列へのアクセスを制限するだけでなく、メタデータをセキュリティ保護することもできます。 メタデータをセキュリティで保護すると、セキュリティ保護されたテーブルと列に関する情報を、動的管理ビュー (DMV) を使って取得できなくなります。

重要

表形式のモデルでは、パースペクティブを使って、テーブルと列 (およびその他のオブジェクト) を隠すことができます。 モデル オブジェクトの表示可能なサブセットをパースペクティブで定義すると、レポート作成者に特定のフォーカスを提供するのに役立ちます。 パースペクティブは、モデルの複雑さを軽減し、レポート作成者が関心のあるリソースを見つけやすくするためのものです。 ただし、パースペクティブはオブジェクトをセキュリティで保護しないため、セキュリティ機能ではありません。 ユーザーは、テーブルまたは列が表示されない場合でもそのクエリを実行できます。

Adventure Works の例について考えます。 この組織のデータ ウェアハウスには、DimEmployee という名前のディメンション テーブルがあります。 そのテーブルには、従業員名、電話番号、メール アドレス、給与を格納する列が含まれています。 一般的なレポート コンシューマーは、従業員の名前と連絡先の詳細を表示できますが、給与の値を見ることはできません。 給与の値を見ることができるのは、人事部の上級スタッフのみです。 そのため、データ モデラーは OLS を使って、特定の人事スタッフにのみ給与列へのアクセスを許可しました。

スクリーンショットには、制限付きの Salary 列を含む Employee テーブルのモデル図ビューが示されています。

OLS は、Azure Analysis Services (AAS) と SQL Server Analysis Services (SSAS) から継承される機能です。 Power BI Premium でこの機能を使うと、Power BI に移行されたモデルの下位互換性を提供できます。 このため、Power BI Desktop で OLS を完全に設定することはできません。

OLS を設定する

OLS を設定するには、まずロールを作成します。 RLS を設定するときと同じ方法で、Power BI Desktop を使ってロールを作成できます。 次に、OLS ルールをロールに追加する必要があります。 この機能は Power BI Desktop ではサポートされていないため、別の方法を使う必要があります。

Power BI Desktop のモデルに OLS ルールを追加するには、XML for Analysis (XMLA) エンドポイントを使います。 XMLA エンドポイントは、Power BI Premium で使用でき、Power BI サービス内の Analysis Services エンジンへのアクセスを提供します。 読み取り/書き込みエンドポイントでは、データセット管理、アプリケーション ライフサイクル管理、高度なデータ モデリングなどがサポートされています。 スクリプトの作成には、表形式モデル スクリプト言語 (TMSL)PowerShell SqlServer モジュールなどの XMLA エンドポイント対応 API を使用できます。 または、SSMS などのクライアント ツールを使うこともできます。 サード パーティ製ツールのオプションもあります。たとえば Tabular Editor は、モデルを作成、保守、管理するためのオープンソース ツールです。

既定では、モデルのすべてのテーブルと列は制限されません。 それらを [なし] または [読み取り] に設定できます。 [なし] に設定すると、ロールに関連付けられているユーザーはオブジェクトにアクセスできません。 [読み取り] に設定すると、ロールに関連付けられているユーザーはオブジェクトにアクセスできます。 特定の列を制限する場合は、テーブルが [なし] に設定されていないことを確認してください。

OLS ルールを追加したら、モデルを Power BI サービスに発行できます。 RLS と同じプロセスを使って、アカウントとセキュリティ グループをロールにマップします。

考慮事項

Power BI レポートでは、ユーザーがテーブルまたは列にアクセスするためのアクセス許可を持っていないと、エラー メッセージが表示されます。 メッセージでは、オブジェクトが存在しないことが通知されます。

スクリーンショットには、レポートのビジュアルが制限された列のクエリを実行しようとしたときの Power BI Desktop のエラー メッセージが示されています。

OLS がプロジェクトに適したソリューションであるかどうかを慎重に検討してください。 ユーザーが (自分に対して) 制限されているオブジェクトのクエリを実行する Power BI レポートを開くと、エラー メッセージが紛らわしく、エクスペリエンスが低下する可能性があります。 ユーザーには、レポートが壊れているように見えます。 より良い方法は、異なるレポート コンシューマー要件に対して個別にモデルまたはレポートのセットを作成することです。

制限

OLS を実装するときに注意の必要な制限があります。

RLS と OLS を同じロールに混在させることはできません。 同じモデルで RLS と OLS を適用する必要がある場合は、種類ごとに個別のロールを作ります。 また、リレーションシップ チェーンが壊れるようなテーブル レベルのセキュリティを設定することはできません。 たとえば、テーブル A と B および B と C の間にリレーションシップがある場合、テーブル B をセキュリティ保護することはできません。テーブル B がセキュリティ保護されている場合、テーブル A でのクエリはテーブル A と B および B と C の間のリレーションシップを転送できません。この場合、テーブル A と C の間に個別のリレーションシップを設定できます。

図には、前の段落で説明したリレーションシップの例が示されています。

ただし、列のテーブルがセキュリティ保護されていなければ、セキュリティ保護された列を参照するモデル リレーションシップは機能します。

最後に、メジャーをセキュリティ保護することはできませんが、セキュリティ保護されたオブジェクトを参照するメジャーは自動的に制限されます。

詳しくは、「オブジェクト レベルのセキュリティ」をご覧ください。