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

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

 適用先: Enterprise Edition 

Amazon QuickSight Enterprise Edition では、行レベルのセキュリティ (RLS) を設定してデータセットへのアクセスを制限することができます。これは、データセットを共有する前または後に行います。RLS が設定されたデータセットをデータセット所有者と共有する場合、所有者は引き続きすべてのデータを表示できます。しかし、それを閲覧者と共有する場合、閲覧者は許可データセットのルールによって制限されたデータしか表示できません。行レベルのセキュリティを追加することで、アクセスをさらに管理できます。

注記

SPICE データセットを行レベルのセキュリティに適用する場合、データセット内の各フィールドに最大 2,047 文字の Unicode 文字を含めることができます。このクォータを超えるフィールドは、取り込み中に切り捨てられます。SPICE データクォータの詳細については、「インポートされたデータに対する SPICE クォータ」を参照してください。

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

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

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

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

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

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

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

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

    制限されたデータセットが SPICE データセットである場合は、ユーザーあたりの適用されたフィルター値の数を、制限されたフィールドごとに 192,000 個以下にする必要があります。これは、ユーザー名に直接割り当てられるフィルター値と、グループ名を通じてユーザーに割り当てられるフィルター値の総数に適用されます。

    制限されたデータセットが直接クエリデータセットである場合、ユーザーごとに適用されるフィルター値の数はデータソースに応じて異なります。

    フィルター値の制限を超えると、視覚化レンダリングが失敗する原因になる場合があります。フィルターリストを短縮できるように、制限されたデータセットに列を追加して、元の制限された列に基づいて行を複数グループに分割することをお勧めします。

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

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

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

制限されているデータセットには、[Datasets] (データセット) 画面で [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 アジアパシフィック エンタープライズ、スタートアップ

    以下は、ユーザーおよびグループの Amazon リソースネーム (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] (データセット) ページでデータセットを選択してから、[Row-level security] (行レベルのセキュリティ) をクリックします。

  3. 開いた [Set up row-level security] (行レベルのセキュリティ) ページで、[User-based rules] (ユーザーベースのルール) を選択します。

  4. 表示されるデータセットのリストから、許可データセットを選択します。

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

  5. [Permissions policy] (アクセス許可ポリシー) で [Grant access to dataset] (データセットへのアクセス権を付与する) をオンにします。各データセットにはただ 1 つのアクティブなアクセス許可データセットがあります。2 つ目のアクセス許可データセットを追加しようとすると、既存のものが上書きされます。

    重要

    行レベルのセキュリティを使用するときは、NULL 値および空の文字列値にいくつかの制限が適用されます。

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

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

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

      • 空のルールのスキップ後も、他の非空の RLS ルールは引き続き適用されます。

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

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

    データセットがデータセットのルールによって制限されている場合を除き、ダッシュボードを共有しているユーザーなら誰でもダッシュボード内の全データを表示できます。

  6. [Apply data set] (データセットの適用) をクリックして変更を保存します。次に、[Save data set rules?] (データセットのルールを保存しますか?) ページで [Apply and activate] (適用とアクティベート) をクリックします。既存のユーザーへのアクセス許可の変更はすぐに適用されます。

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

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

    アクセス許可を上書きするには、新しいアクセス許可データセットを選択して適用します。同じデータセット名を再利用できます。ただし、Permissions (アクセス許可) 画面で新しい許可を適用して、これらの許可がアクティブになるようにしてください。SQL クエリは動的に更新されるため、Amazon QuickSight の外で管理できます。クエリの場合、直接クエリのキャッシュが自動更新されるときに、アクセス許可が更新されます。

ファイルベースのアクセス許可データセットを、対象のデータセットから削除する前に削除すると、制限されているユーザーはデータセットにアクセスすることができません。このデータセットがこの状態の間は、[RESTRICTED] (制限対象) のマークが付いたままになります。しかし、そのデータセットの [Permission] (アクセス許可) を表示すると、データセットのルールが選択されていないことがわかります。

この問題を修正するには、新しいデータセットルールを指定します。同じ名前のデータセットを作成するだけではこの問題は解決されません。[Permissions] (アクセス許可) 画面で新しい許可データセットを選択する必要があります。この制限は、ダイレクト SQL クエリには適用されません。