Explore の行レベルセキュリティ

Explore 管理者は、各 Explore ユーザーが表示できるデータ行を制限できます。基礎となるデータテーブルに行レベルセキュリティ(RLS)ルールを作成し、ユーザーをアクセスグループに編成してから、テストユーザーでアクセスを確認します。

行レベルセキュリティ(RLS)の概要

Explore の行レベルセキュリティ(RLS)ルールでは、各ユーザーが表示できるデータ行を、個人の ID またはグループメンバーシップに基づいて制限します。次に例を示します。
  • ユーザーは、自身がアサインされた引受担当者である行のみを表示できます。
  • ユーザーは、自身の種目の行のみを表示できます(これらは種目グループに属します)。
Explore 管理者が基礎となる Explore テーブルに RLS ルールを 1 回適用するだけで、そのテーブルを使用するすべてのモデル、検索結果、Liveboards にルールが自動的に適用されます。

RLS ルールのアクセスパターンの例

行レベルセキュリティ(RLS)ルールでは、次のシステム変数を参照してグループとユーザーを識別します。

  • ts_username:Explore ユーザー名(通常は電子メール)
  • ts_groups:ユーザーが属する Explore ユーザーグループのリスト

これらの変数は、次の例に示すように 2 つの主要な RLS アクセスパターン内で使用します。

個別:ユーザーには電子メールアドレスに一致する行のみが表示される
個別のユーザーアクセスでは、ユーザーは自身に属する行のみを表示できます。例えば、各引受担当者は自身の保険契約のみを表示できれば十分です。「ユーザーは、引受担当者の電子メールアドレスが Explore ユーザーの電子メールアドレスと一致する行のみを表示できる」という RLS ルールを作成するとします。この場合、ts_username() は、Exploreユーザーの電子メールアドレスのシステム変数です。また、underwriter_email は、電子メールアドレスの値を含むテーブル列の名前です。
[underwriter_email] = ts_username()
グループ:ユーザーには、自身が属しているグループに一致する行のみが表示される
ユーザーのグループに同じ行を表示する必要がある場合は、Explore ユーザーグループを作成します。例えば、種目( LOB )内のすべての引受担当者が、その LOB のデータを表示する必要があるとします。この場合、「自動車」や「住宅所有者」など、LOB の値ごとにユーザーグループを作成します。グループ名は、データ内の対応する列の値と完全に一致する必要があります。各引受担当者をそれぞれの LOB グループに追加します。
続いて、「ユーザーは、自身が属する Explore グループに LOB 値が一致する行のみを表示できる」という次の RLS ルールを作成します。ts_groups は、Exploreグループ名のシステム変数です。また、lineofbusiness は、LOB 値を含むテーブル列の名前です。
[lineofbusiness] = ts_groups()

1 つのテーブルでの複数の RLS ルール

同じテーブルにある複数の行レベルセキュリティ(RLS)ルールは、OR ロジックを使用します。AND ロジックが必要な場合(「引受担当者と種目の両方で同時に制限する」など)は、代わりにアクセス制御リスト(ACL)テーブルによるアプローチを使用します。ガイダンスについては、Guidewire にお問い合わせください。

行レベルセキュリティのバイパス

Row-Level Security (RLS) Bypass 役割を持つ Explore ユーザーは、RLS ルールによって制限されている場合でもすべてのデータを表示できます。この役割は、Explore 管理者が RLS ルールを作成およびテストする際に役立ちます。

Liveboard への行レベルセキュリティの追加

このトピックを読むと、次のことができるようになります。
  • データへのアクセスを制御するディメンションを特定する
  • Explore で RLS グループを作成し、ユーザーを追加する
  • Explore テーブルで RLS ルールを作成する
  • RLS のコンフィギュレーションを確認する

開始する前に

Explore で次の役割を持っている必要があります。
  • Group Administration
  • Row-Level Security (RLS) Bypass

手順

ステップ 1:アクセスディメンションを特定する

このタスクについて
アクセスを制御するために使用するデータ内の列を決定します。例えば、更改されたインサイトの埋め込み Liveboard の場合、一般的なパターンは次のとおりです。
ユースケース テーブル名と列名
ユーザーには自身の種目の行のみが表示される

GW_EfP_Submission_Processing_Table

lineofbusiness

ユーザーには自身の電子メールアドレスに一致する行のみが表示される

GW_EfP_Submission_Processing_Table

underwriterusername

ユーザーには自身の都道府県に対応する行のみが表示される

GW_EfP_Activity_Table

primarystate

手順
Liveboard のソーステーブルと列を特定するには、次の手順に従います。
  1. 基盤となる Explore モデルを特定します。Liveboard のタイトルの横にある[Liveboard details]を選択します。
  2. [データソース]にモデル名が表示されます。
  3. [データ] データベースアイコンワークスペースに移動し、モデルを開いて、[モデルを編集]を選択します。
  4. [列]で、列のソーステーブル名とソース列名を特定します。

ステップ 2:RLS グループを作成してユーザーを追加する

このタスクについて
個別ベースの RLS ルールの場合は、このステップをスキップできます。グループベースの RLS ルールの場合は、アクセス列の値ごとにグループを作成し、ユーザーを追加します。ユーザーは複数の RLS グループに所属できます。Explore は複数のルールを OR ロジックで評価するため、2 つのグループに属するユーザーには、いずれかのグループの値に一致する行が表示されます。
手順
  1. Exploreで、[管理] 管理アイコンワークスペースに移動し、[グループ] > [グループの作成]を選択します。
  2. [グループ名]([表示名]ではない)を設定します。auto などの列の値と完全に一致していることを確認します。既存のユーザーグループをこの目的のために再利用しないでください。これらの名前はデータ列の値に一致せず、正しくフィルタされません。
  3. 目的を明確にするために[説明]を設定します。例えば、「RLS グループ。自動車種目用の更改されたインサイトへのアクセス。オブジェクトの共有には使用しない。」と入力します。
  4. [表示名]をわかりやすい名前に設定します。例えば、「RLS グループ:自動車種目」と入力します。
  5. このグループに Explore の役割を付与しないでください。
  6. グループに追加するユーザーを選択します。
  7. [保存]を選択します。
  8. 個別のアクセス境界を必要とする個々の値ごとに、この手順を繰り返します。

ステップ 3:Explore テーブルで RLS ルールを作成する

このタスクについて
ソースの Explore テーブルに RLS ルールを定義します。このルールは、このテーブルを使用する Explore モデル、検索結果、Liveboards に自動的に適用されます。
手順
  1. Explore で、[データ] データベースアイコンワークスペースに移動します。
  2. [テーブル]を選択し、アクセスディメンションを含むテーブルを開きます。
    例えば、GW_EfP_Submission_Processing_Table テーブルです。
  3. [Row Security] > [+ Add row security]を選択します。
  4. ルール名を入力します。
    例:lineofbusiness_rls
  5. アクセスパターンに基づいてルール式を入力します。 column_name は実際の列名に置き換えます。例:[lineofbusiness] = ts_groups()
    オプション説明
    個別アクセス [column_name] = ts_username()
    グループアクセス

    アクセス列が文字列データ型の場合:[column_name] = ts_groups()

    アクセス列が数値データ型の場合は、文字列にキャスト: to_string([column_name]) = ts_groups()

  6. [保存]を選択します。
  7. RLS ルールごとにこの手順を繰り返します。

ステップ 4:RLS のコンフィギュレーションを確認する

手順
すべてのデータをテストします。
  1. Row-Level Security (RLS) Bypass 役割を持つユーザーとしてログインします。
  2. Liveboard を開き、すべてのデータが正しく読み込まれ、すべて表示されていることを確認します。
RLS ルールをテストします。
  1. テストユーザーを作成します。テストユーザーは、厳密に 1 つの RLS グループに属するユーザーか、または特定の行にマップされるユーザー名を持つユーザーにします。
  2. テストユーザーとしてログインします。
  3. Liveboard を開きます。
  4. 割り当てられた値に一致する行のみが表示されていることを確認します。
  5. 他の値の行が表示されていないことを確認します。

RLS ルールのトラブルシューティング

ユーザーにデータがまったく表示されない
ユーザーがどの RLS グループにも属していないか、グループ名が列の値と完全に一致していません。
ユーザーにすべてのデータが表示される
RLS ルールが誤ったテーブルに適用されているか、ルール式に入力ミスがあります。
保存時にルール式エラーが発生する
列が数値型です。文字列にキャストします。 to_string([column_name]) = ts_groups()

RLS ルールの削除

手順

RLS ルールをテーブルから削除するには、以下の手順に従います。
  1. [データ] データベースアイコンワークスペースに移動し、テーブルを開いて、[Row Security]タブを選択します。
  2. ルールの横にある[削除]アイコンを選択します。
  3. 即座に、すべてのユーザーにすべての行が表示されます。
RLS グループからユーザーを削除するには、以下の手順に従います。
  1. [管理] > [ユーザー]に移動し、ユーザーを選択します。
  2. グループをグループメンバーシップから削除します。
  3. [保存]を選択します。変更は、ユーザーが次回データを表示したときに有効になります。