行レベルのセキュリティ (RLS) を使用したデータセットへのアクセスの制限 - Amazon QuickSight

行レベルのセキュリティ (RLS) を使用したデータセットへのアクセスの制限

Amazon QuickSight Enterprise Edition では、行レベルのセキュリティ (RLS) を設定してデータセットへのアクセスを制限することができます。これは、データセットを共有する前または後に行います。共有したユーザーのみが、データを表示できます。行レベルのセキュリティを追加することで、アクセスをさらに管理できます。

これを行うには、UserNameGroupName またはその両方の名前の 1 つの列を持つクエリまたはファイルを作成します。あるいは、UserARNGroupARN、またはその両方を名前とする列を持つクエリまたはファイルを作成します。そのユーザーまたはグループにルールを追加すると考えることもできます。次に、アクセスを付与または制限するフィールドごとに、クエリまたはファイルに 1 列追加します。追加したユーザーまたはグループ名ごとに、各フィールドの値を追加します。NULL (値なし) を、すべての値を意味するものとして使用できます。データセットのルールの例は、行レベルのセキュリティのデータセットのルールを作成する を参照してください。

データセットのルールを適用するには、ルールをアクセス許可データセットとしてデータセットに追加します。次のポイントに注意が必要です。

  • アクセス許可のデータセットに重複する値を含めることはできません。ルールの適用方法を評価する際、重複は無視されます。

  • 指定された各ユーザーまたはグループには、データセットルールのフィールド値に一致する行のみが表示されます。

  • ユーザーまたはグループにルールを追加し、他のすべての列を値なし (NULL) のままにすると、すべてのデータへのアクセスが付与されます。

  • ユーザーまたはグループにルールを追加しない場合、そのユーザーまたはグループにデータが一切表示されません。

  • ユーザーごとに適用されるルールレコードの完全なセットは、999 を超えないようにしてください。これは、ユーザー名に直接割り当てられるルールの総数と、グループ名を使用してユーザーに割り当てられるルールの総数に適用されます。

  • フィールドにカンマ (,) が含まれる場合、Amazon QuickSight はカンマで区切られた各単語をフィルタ内の個別の値として扱います。例えば、('AWS', 'INC') の中で、AWS,INC は2つの文字列、AWS および INC とみなされます。AWS,INC を使用してフィルタリングするには、アクセス許可データセット内の文字列を二重引用符で囲みます。

Amazon QuickSight ではスペースはリテラル値として処理されます。したがって、制限しているフィールドにスペースがある場合、その行にはデータセットルールが適用されます。Amazon QuickSight では、NULL と空白 (空の文字列 “”) の両方が「値なし」として処理されます。NULL は空のフィールドの値です。

データセットがどのデータソースから来ているかに応じて、直接クエリを設定し、アクセス許可のテーブルへアクセスすることができます。用語内にスペースが含まれている場合、引用符で区切る必要はありません。直接クエリを使用する場合は、元のデータソースでクエリを簡単に変更できます。

もしくは、テキストファイルまたはスプレッドシートからデータセットのルールをアップロードすることもできます。カンマ区切り値 (CSV) ファイルを使用している場合は、指定された行にスペースを含めないでください。用語内にスペースが含まれている場合、引用符で区切る必要があります。ファイルベースのデータセットのルールを使用する場合は、データセットのアクセス許可設定にある既存のルールを上書きすることで、変更を適用する必要があります。

制限されているデータセットは、データセット画面で [RESTRICTED (制限対象)] という単語でマークされています。

行レベルのセキュリティはテキストデータ (文字列、char、varchar など) を含むフィールドでのみ機能します。現状、日付または数値フィールドでは機能しません。行レベルのセキュリティ (RLS) を使用するデータセットでは、異常検出はサポートされていません。

行レベルのセキュリティのデータセットのルールを作成する

データセットのルールとして使用する、アクセス許可のファイルまたはクエリを作成するには、次の手順に従います。

データセットのルールとして使用するアクセス許可ファイルまたはクエリを作成するには

  1. 行レベルのセキュリティ (RLS) のデータセットルール (アクセス許可) を含むファイルまたはクエリを作成します。

    フィールドの順序は関係ありません。ただし、すべてのフィールドでは、大文字と小文字が区別されます。フィールド名と値は完全に一致している必要があります。

    構成は次のいずれかのようになります。ユーザーまたはグループを識別する、少なくとも 1 つのフィールドが必要です。両方を含めることができますが、必須は 1 つのみで、一度に 1 つのみ使用されます。ユーザーまたはグループに使用するフィールドには、任意の名前を付けることができます。

    注記

    グループを指定する場合は、Amazon QuickSight グループまたは Microsoft AD グループのみを使用します。

    次の例は、グループを含むテーブルを示しています。

    GroupName リージョン Segment
    EMEA 販売チーム ヨーロッパ、中東、およびアフリカ エンタープライズ、SMB、スタートアップ
    米国販売チーム 米国 エンタープライズ版
    米国販売チーム 米国 SMB、スタートアップ
    米国販売チーム 米国 スタートアップ
    APAC 販売チーム アジアパシフィック エンタープライズ、SMB
    企業報告
    APAC 販売チーム アジアパシフィック エンタープライズ、スタートアップ

    次の例は、ユーザー名を含むテーブルを示しています。

    ユーザーネーム リージョン セグメント
    AlejandroRosalez ヨーロッパ、中東、およびアフリカ エンタープライズ、SMB、スタートアップ
    MarthaRivera 米国 エンタープライズ版
    NikhilJayashankar 米国 SMB、スタートアップ
    PauloSantos 米国 スタートアップ
    SaanviSarkar アジアパシフィック エンタープライズ、SMB
    sales-tps@example.com
    ZhangWei アジアパシフィック エンタープライズ、スタートアップ

    以下は、ユーザーとグループ ARN を含むテーブルの一例です。

    UserARN GroupArn リージョン
    arn:aws:quicksight:us-east-1:123456789012:user/Bob arn:aws:quicksight:us-east-1:123456789012:group/group-1 アジアパシフィック
    arn:aws:quicksight:us-east-1:123456789012:user/Sam arn:aws:quicksight:us-east-1:123456789012:group/group-2 米国

    または、.csv ファイルを使用する場合、構造は次のいずれかのようになります。

    UserName,Region,Segment AlejandroRosalez,EMEA,"Enterprise,SMB,Startup" MarthaRivera,US,Enterprise NikhilJayashankars,US,SMB PauloSantos,US,Startup SaanviSarkar,APAC,"SMB,Startup" sales-tps@example.com,"","" ZhangWei,APAC-Sales,"Enterprise,Startup"
    GroupName,Region,Segment EMEA-Sales,EMEA,"Enterprise,SMB,Startup" US-Sales,US,Enterprise US-Sales,US,SMB US-Sales,US,Startup APAC-Sales,APAC,"SMB,Startup" Corporate-Reporting,"","" APAC-Sales,APAC,"Enterprise,Startup"
    UserARN,GroupARN,Region arn:aws:quicksight:us-east-1:123456789012:user/Bob,arn:aws:quicksight:us-east-1:123456789012:group/group-1,APAC arn:aws:quicksight:us-east-1:123456789012:user/Sam,arn:aws:quicksight:us-east-1:123456789012:group/group-2,US

    SQL の例を次に示します。

    /* for users*/ select User as UserName, Region, Segment from tps-permissions; /* for groups*/ select Group as GroupName, Region, Segment from tps-permissions;
  2. データセットルールのデータセットを作成します。簡単に検索できるようにするために、わかりやすい名前を付けます (例: Permissions-Sales-Pipeline) 。

行レベルのセキュリティの作成

ファイルまたはクエリを、アクセス許可のルールを含むデータセットとして使用し、行レベルのセキュリティ (RLS) を適用するには、次の手順に従います。

ファイルまたはクエリを使用して行レベルのセキュリティを適用するには

  1. ルールを新しいデータセットとして追加したことを確認します。追加してもデータセットのリストに表示されない場合は、画面を更新します。

  2. [Datasets (データセット)] のページでデータセットを選択し、[Permissions (アクセス許可)] を選択します。

  3. データセットの一覧から、アクセス許可のデータセットを選択します。

    アクセス許可のデータセットがこの画面に表示されない場合は、データセットに戻り、ページを更新します。

  4. アクセス許可ポリシーを選択します。各データセットにはただ 1 つのアクティブなアクセス許可データセットがあります。2 つ目のアクセス許可データセットを追加しようとすると、既存のものが上書きされます。

    重要

    行レベルのセキュリティで作業しているときに、NULL 値および空の文字列の値に適用される制限があります。

    • データセットの制限フィールドに NULL 値または空の文字列 ("") があると、制限が適用される時にこれらの行は無視されます。

    • アクセス許可のデータセット内で、NULL 値および空の文字列は同じように扱われます。詳細については、以下のテーブルを参照してください。

    • 機密情報が誤って公開されるのを防ぐため、QuickSight は、すべてのユーザーにアクセスを許可する空の RLS ルールをスキップします。空の RLS ルールは、行のすべての列が値を持たない場合に発生します。QuickSight RLS は、NULL、空の文字列 ("")、または空のカンマ区切り文字列 (",,," など) を値なしとして扱います。

      • 空のルールをスキップした後も、他の空でない RLS ルールが適用されます。

      • 許可データセットに空のルールしかなく、それらのルールがすべてスキップされた場合、この許可データセットによって制限されているデータには誰もアクセスできません。

    ユーザーネーム、グループ名、リージョン、セグメントのルール 付与されたアクセス許可
    AlejandroRosalez,EMEA-Sales,EMEA,"Enterprise,SMB,Startup" すべての EMEA エンタープライズ、SMB、およびスタートアップが表示される
    sales-tps@example.com,Corporate-Reporting,"","" すべての行が表示される
    ユーザーまたはグループにエントリがありません 行は表示されない
    “”,“”,“”,“” スキップされます。他のすべてのルールが空の場合、行は表示されません。
    NULL、“”、“”、NULL スキップされます。他のすべてのルールが空の場合、行は表示されません。

    データセットがデータセットのルールにより制限されていない限り、ダッシュボードを共有している人はだれでもその中のすべてのデータを表示できます。

  5. 変更を保存するには [Apply data set (データセットの適用)] を選択します。次に、[Confirm: saving data set rules (確認: データセットルールの保存)] 画面で、[Apply data set (データセットの適用)] を選択します。既存のユーザーへのアクセス許可の変更はすぐに適用されます。

  6. (オプション) アクセス許可を削除するには、まずデータセットからデータセットのルールを削除します。

    データセットのルールが削除されたことを確認します。次に、アクセス許可データセットを選択してから、[Remove data set (データセットの削除)] を選択します。

    アクセス許可を上書きするには、新しいアクセス許可データセットを選択して適用します。同じデータセット名を再利用できますが、これらのアクセス許可を有効にするには、[Permission (アクセス許可)] 画面で新しいアクセス許可を適用する必要があります。SQL クエリは動的に更新されるため、Amazon QuickSight の外で管理できます。クエリの場合、直接クエリのキャッシュが自動更新されるときに、アクセス許可が更新されます。

ファイルベースのアクセス許可データセットを、対象のデータセットから削除する前に削除すると、制限されているユーザーはデータセットにアクセスすることができません。このデータセットがこの状態の間は、[RESTRICTED (制限対象)] のマークが付いたままになります。ただし、そのデータセットの [Permission (アクセス許可)] を表示すると、データセットのルールが選択されていないことを確認できます。この問題を修正するには、新しいデータセットのルールを指定します。同じ名前のデータセットを作成するだけではこの問題は解決されません。[Permission (アクセス許可)] 画面で新しいアクセス許可データセットを選択する必要があります。この制限は、直接 SQL クエリには適用されません。