Power BI での行レベルのセキュリティ (RLS)

Power BI で行レベル セキュリティ (RLS) を使用すると、特定のユーザーのデータ アクセスを制限できます。 フィルターでは行レベルでデータ アクセスが制限され、ロール内でフィルターを定義することができます。 Power BI サービスでは、ワークスペースのメンバーがそのワークスペース内のデータセットにアクセスすることができます。 RLS では、このデータ アクセスは制限されません。

Power BI Desktop で Power BI にインポートされたデータ モデルの RLS を構成できます。 SQL Server などの DirectQuery を使用しているデータセットに RLS を構成することもできます。 Analysis Services または Azure Analysis Services のライブ接続では、Power BI Desktop 内ではなく、モデル内の行レベルのセキュリティを構成します。 このセキュリティ オプションは、ライブ接続データセットには表示されません。

Power BI Desktop 内でロールとルールを定義する

Power BI Desktop 内でロールとルールを定義できます。 Power BI に発行するとき、ロールの定義も発行されます。

セキュリティ ロールを定義するには、次の手順に従います。

  1. Power BI Desktop レポートにデータをインポートするか、DirectQuery 接続を構成します。

    注意

    Analysis Services ライブ接続の場合、Power BI Desktop 内でロールを定義することはできません。 Analysis Services モデル内で定義する必要があります。

  2. [モデリング] タブから [ロールの管理] を選択します。

    [ロールの管理] を選択する

  3. [ロールの管理] ウィンドウから [作成] を選択します。

    [作成] を選択します

  4. [ロール] でロールの名前を指定します。

    Note

    たとえば、London,ParisRole のように、コンマを使ってロールを定義することはできません。

  5. [テーブル] で、DAX ルールを適用するテーブルを選択します。

  6. [テーブル フィルターの DAX 式] ボックスに DAX 式を入力します。 この式からは値として true または false が返されます。 たとえば、[Entity ID] = “Value” です。

    [ロールの管理] ウィンドウ

    注意

    この式の中では username() を使用できます。 Power BI Desktop 内では username() の形式は DOMAIN\username になることにご注意ください。 Power BI サービスと Power BI Report Server 内では、それはユーザーのユーザー プリンシパル名 (UPN) の形式になります。 また、必ずユーザー プリンシパル名 (username@contoso.com) の形式でユーザーを返す userprincipalname() を使用することもできます。

  7. DAX 式を作成した後、式ボックスの上にあるチェックマークを選択し、式を評価します。

    DAX 式を評価する

    注意

    この式ボックスでは、コンマを使用して DAX 関数の引数を区切ります。これは、通常はセミコロンが区切り文字として使用されるロケール (フランス語やドイツ語など) にも当てはまります。

  8. [保存] を選択します。

Power BI Desktop 内でロールにユーザーを割り当てることはできません。 その割り当ては、Power BI サービスで行います。 username() または userprincipalname() DAX 関数を使用し、適切な関係を構成することで、Power BI Desktop 内で動的セキュリティを有効にできます。

既定では、リレーションシップが一方向と双方向のいずれに設定されているかに関係なく、行レベルのセキュリティ フィルターで一方向のフィルターが使用されます。 行レベルのセキュリティで双方向のクロス フィルターを手動で有効にすることができます。その場合は、リレーションシップを選択して、 [両方向にセキュリティ フィルターを適用する] チェック ボックスをオンにします。 サーバー レベルで、動的な行レベルのセキュリティも実装した場合 (行レベルのセキュリティはユーザー名またはログイン ID に基づく) は、このオプションをオンにします。

詳細については、「Power BI Desktop での DirectQuery を使用する双方向のクロス フィルタリング」と「表形式の BI セマンティック モデルの保護」の技術記事を参照してください。

セキュリティ フィルターの適用

Power BI Desktop 内でロールを検証する

ロールを作成したら、Power BI Desktop 内でロールの結果をテストします。

  1. [モデリング] タブから [ロールとして表示] を選択します。

    [ロールとして表示] を選択する

    [ロールとして表示] ウィンドウが表示されます。このウィンドウには、作成したロールが表示されます。

    [ロールとして表示] ウィンドウ

  2. 作成したロールを選択し、 [OK] を選択してそのロールを適用します。

    レポートでは、そのロールに関連するデータがレンダリングされます。

  3. その他のユーザーを選択し、特定のユーザーを指定することもできます。

    [その他のユーザー] を選択する

    ユーザー プリンシパル名 (UPN) を、Power BI サービスおよび Power BI Report Server で使用されるものとして指定することをお勧めします。

    Power BI Desktop の [その他のユーザー] には、DAX 式に基づいた動的セキュリティを使用している場合にのみ、異なる結果が表示されます。

  4. [OK] を選択します。

    そのユーザーに対して表示できる内容に基づいてレポートがレンダリングされます。

    注意

    [ロールとして表示] 機能は、シングル サインオン (SSO) が有効になっている DirectQuery モデルでは機能しません。

Power BI Desktop でのロールの検証が完了したので、レポートを Power BI サービスに発行します。

モデルのセキュリティの管理

データ モデルのセキュリティを管理するには、レポートを保存したワークスペースを Power BI サービスで開き、次の手順のようにします。

  1. Power BI サービスで、データセットの [その他のオプション] メニューを選択します。 このメニューは、ナビゲーション メニューまたはワークスペース ページのどちらから選択した場合でも、データセット名にカーソルを合わせると表示されます。

    ワークスペースの [その他のオプション] メニュー

    ナビゲーション メニューの [その他のオプション] メニュー

  2. [セキュリティ] を選択します。

    [その他のオプション] メニューから [セキュリティ] を選択する

[セキュリティ] を選択すると、移動先のロール レベルのセキュリティ ページで、Power BI Desktop で作成したロールにメンバーを追加できます。 共同作成者 (および上位のワークスペース ロール) には [セキュリティ] が表示され、ユーザーをロールに割り当てることができます。

Power BI Desktop 内でのみ、役割を作成または変更できます。

メンバーの操作

メンバーの追加

Power BI サービスでは、ユーザーまたはセキュリティ グループのメール アドレスまたは名前を入力することにより、ロールにメンバーを追加できます。 Power BI で作成されたグループを追加することはできません。 組織外部のメンバーを追加できます。

次のグループを使用して、行レベル セキュリティを設定できます。

  • 配布グループ
  • メールが有効なグループ
  • セキュリティ グループ

ただし、Office 365 グループはサポートされておらず、どのロールにも追加できないことに注意してください。

メンバーの追加

ロール名または [メンバー] の横のかっこ内の数字は、そのロールに属しているメンバーの数を示します。

役割に属しているメンバー

メンバーの削除

メンバーを削除するには、メンバー名の横の [X] を選択します。

メンバーの削除

Power BI サービス内でのロールの検証

役割をテストすることで、定義した役割が Power BI サービスで正しく動作することを検証することができます。

  1. ロールの横にあるその他のオプション (...) を選択します。
  2. [ロールとしてデータをテスト] を選択します。

ロールとしてテスト

このロールで使用できるレポートが表示されます。 ダッシュボードは、このビューには表示されません。 ページ ヘッダーには、適用されているロールが表示されます。

[現在のレポートの表示方法: 米国北部] のスクリーンショット。

[次のユーザーとして表示中] を選択することで、その他のロール、またはロールの組み合わせをテストすることができます。

その他の役割のテスト

特定のユーザーとしてデータを表示できます。または、ロールの組み合わせを選択してそれらの動作を検証できます。

通常の表示に戻るには、 [行レベルのセキュリティに戻る] を選択します。

注意

[ロールとして表示] 機能は、シングル サインオン (SSO) が有効になっている DirectQuery モデルでは機能しません。

username() または userprincipalname() DAX 関数の使用

データセット内で DAX 関数 username() または userprincipalname() を利用できます。 Power BI Desktop の式の中で使用することができます。 モデルを発行するときに、Power BI サービス内で使用されます。

Power BI Desktop 内で、username()DOMAIN\User の形式でユーザーを返し、userprincipalname()user@contoso.com の形式でユーザーを返します。

Power BI サービス内で、username()userprincipalname() は両方とも、ユーザーのユーザー プリンシパル名 (UPN) を返します。 これはメール アドレスに似ています。

Power BI での RLS とワークスペースの使用

Power BI Desktop のレポートを Power BI サービスの新しいワークスペース エクスペリエンスに発行する場合、そのワークスペースで閲覧者ロールに割り当てられているメンバーに、RLS のロールが適用されます。 閲覧者にデータセットのビルド アクセス許可が与えられている場合でも、RLS が適用されます。 たとえば、ビルド アクセス許可が与えられているビューアーが [Excel で分析] を使用する場合、データの表示は RLS によって保護されます。 管理者メンバー共同作成者が割り当てられているワークスペース メンバーには、データセットの編集アクセス許可が与えられます。そのため、RLS はこれらのメンバーに適用されません。 RLS をワークスペース内のユーザーに適用する場合は、そのユーザーに閲覧者ロールのみを割り当てることができます。 詳細については、「新しいワークスペースのロール」を参照してください。

警告

メンバーが編集アクセス許可を持つように "クラシック" ワークスペースを構成している場合、RLS ロールは適用されません。 ユーザーはすべてのデータを表示できます。 詳細については、クラシック ワークスペースに関する記事を参照してください。

グループ設定

考慮事項と制限事項

クラウド モデルの行レベル セキュリティにおける現在の制限事項は次のようになります。

  • Power BI サービスでロールおよびルールを以前に定義している場合、Power BI Desktop 内で再作成する必要があります。
  • RLS は、Power BI Desktop を使用して作成されたデータセットにのみ定義できます。 Excel で作成されたデータセットに対して RLS を有効にするには、最初にファイルを Power BI Desktop (PBIX) ファイルに変換する必要があります。 詳細については、こちらを参照してください
  • サービス プリンシパルを RLS ロールに追加することはできません。 したがって、サービス プリンシパルを最終的な有効な ID として使用する場合、RLS はアプリには適用されません。
  • Import と DirectQuery 接続のみサポートされます。 Analysis Services へのライブ接続は、オンプレミス モデルで処理されます。
  • [ロールとしてテスト] と [ロールとして表示] 機能は、シングル サインオン (SSO) が有効になっている DirectQuery モデルでは機能しません。

イシュー: RLS が構成されている場合の再発行

Power BI Desktop から既に発行されているレポートを発行しようとすると、エラー メッセージが出るという既知の問題があります。 シナリオは次のようになります。

  1. Anna には Power BI サービスに発行されたデータセットが与えられており、RLS を構成しています。

  2. Anna は Power BI Desktop でレポートを更新し、再発行します。

  3. Anna は、エラーを受け取ります。

回避策

この問題が解決されるまで、Power BI サービスから Power BI Desktop ファイルを再発行します。 これを行うには、 [データの取得]>[ファイル] を選択します。

よく寄せられる質問

質問: 以前に、Power BI サービスでデータセットのロールおよびルールを作成している場合はどうなりますか。 何もしなくても動作しますか。
回答: いいえ。ビジュアルは正しく表示されません。 Power BI Desktop 内でロールおよびルールを再作成し、Power BI サービスに発行する必要があります。

質問: Analysis Services データ ソースにこれらのロールを作成できますか。
回答: Power BI Desktop にデータをインポートした場合は作成できます。 ライブ接続を使用している場合、Power BI サービス内で RLS を構成できなくなります。 これは Analysis Services モデルのオンプレミス内で定義されます。

質問: RLS を使って、ユーザーがアクセスできる列またはメジャーを制限できますか。
回答: いいえ。ユーザーは、特定のデータ行にアクセスできる場合は、その行のすべてのデータ列を見ることができます。

質問: RLS を使って、詳細なデータは表示されないようにしながら、ビジュアルの集計データにはアクセスできるようにすることができますか。
回答: いいえ、個々のデータ行は保護されますが、ユーザーは常に詳細データまたは集計データを見ることができます。

質問: データ ソースにセキュリティ ロールが既に定義されています (SQL Server のロールや SAP BW のロールなど)。 これらと RLS の関係はどのようなものですか。
回答: 答えは、データをインポートしているか、DirectQuery を使用しているかによって変わります。 Power BI データセットにデータをインポートしている場合、データ ソースのセキュリティ ロールは使用されません。 この場合、Power BI でつながるユーザーにセキュリティ規則を適用するには、RLS を定義する必要があります。 DirectQuery を使用している場合、データ ソースのセキュリティ ロールが使用されます。 ユーザーがレポートを開くと、Power BI から基礎データ ソースにクエリが送信され、ユーザーの資格情報に基づいてデータにセキュリティ規則が適用されます。

次の手順