

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データセットへのアクセスを制限するためのユーザーベースのルールでの行レベルのセキュリティの使用
<a name="restrict-access-to-a-data-set-using-row-level-security"></a>


|  | 
| --- |
|  適用対象: Enterprise Edition  | 

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

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

これを行うには、ユーザーまたはグループを識別するための 1 つの列を持つクエリまたはファイルを作成します。`UserName` と を使用するか`GroupName`、または `UserARN`と を使用できます`GroupARN`。そのユーザーまたはグループに*ルールを追加する*と考えることもできます。次に、アクセスを付与または制限するフィールドごとに、クエリまたはファイルに 1 列追加します。追加したユーザーまたはグループ名ごとに、各フィールドの値を追加します。NULL (値なし) を、すべての値を意味するものとして使用できます。データセットのルールの例は、「[行レベルのセキュリティに対するデータセットルールの作成](#create-data-set-rules-for-row-level-security)」を参照してください。

データセットのルールを適用するには、ルールをアクセス許可データセットとしてデータセットに追加します。次のポイントに注意が必要です。
+ アクセス許可のデータセットに重複する値を含めることはできません。ルールの適用方法を評価する際、重複は無視されます。
+ 指定された各ユーザーまたはグループには、データセットルールのフィールド値に*一致する*行のみが表示されます。
+ ユーザーまたはグループにルールを追加し、他のすべての列を値なし (NULL) のままにすると、すべてのデータへのアクセスが付与されます。
+ ユーザーまたはグループにルールを追加しない場合、そのユーザーまたはグループにデータが一切表示されません。
+ ユーザーごとに適用されるルールレコードの完全なセットは、999 を超えないようにしてください。この制限は、ユーザーネームに直接割り当てられるルールと、グループ名を使用してユーザーに割り当てられるルールの総数に適用されます。
+ フィールドにカンマ (,) が含まれている場合、Amazon Quick はカンマで区切られた各単語をフィルター内の個々の値として扱います。例えば、`('AWS', 'INC')` の中で、`AWS,INC` は2つの文字列、`AWS` および `INC` とみなされます。`AWS,INC` を使用してフィルタリングするには、アクセス許可データセット内の文字列を二重引用符で囲みます。

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

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

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

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

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

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

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

RLS ルールがアクティブな親データセットから作成された子データセットでは、親データセットの RLS ルールと同じ RLS ルールが保持されます。子データセットにはさらに RLS ルールを追加できますが、データセットが親データセットから継承する RLS ルールを削除することはできません。

RLS ルールがアクティブな親データセットから作成された子データセットは、直接クエリでのみ作成できます。親データセットの RLS ルールを継承する子データセットは SPICE ではサポートされていません。

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

## 行レベルのセキュリティに対するデータセットルールの作成
<a name="create-data-set-rules-for-row-level-security"></a>

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

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

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

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

   構成は次のいずれかのようになります。ユーザーまたはグループを特定するフィールドが少なくとも 1 つあることを確認してください。両方を含めることができますが、必須は 1 つのみで、一度に 1 つのみ使用されます。ユーザーまたはグループに使用するフィールドには、任意の名前を付けることができます。
**注記**  
グループを指定する場合は、Amazon Quick グループまたは Microsoft AD グループのみを使用します。

   次の例は、グループを含むテーブルを示しています。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   次の例は、ユーザー名を含むテーブルを示しています。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   以下は、ユーザーおよびグループの Amazon リソースネーム (ARN) が含まれるテーブルの例です。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   .csv ファイルを使用する場合は、構造が以下のいずれかのようになっている必要があります。

   ```
   UserName,SalesRegion,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,SalesRegion,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,SalesRegion
   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, SalesRegion, Segment
   	from tps-permissions;
   
   	/* for groups*/
   	select Group as GroupName, SalesRegion, Segment
   	from tps-permissions;
   ```

1. データセットルールのデータセットを作成します。簡単に検索できるようにするために、意味のある名前を付けます（**Permissions-Sales-Pipeline**）。

## 行レベルのセキュリティのためのルールデータセットのフラグ付け
<a name="rules-dataset-flagging-for-row-level-security"></a>

特定のデータセットをルールデータセットとして適切にフラグ付けするには、次の手順を使用します。

ルールデータセットは、行レベルのセキュリティに使用されるアクセス許可データセットを通常のデータセットと区別するフラグです。アクセス許可データセットが 2025 年 3 月 31 日より以前に通常のデータセットに適用された場合、**[データセット]** のランディングページに [ルールデータセット] のフラグが表示されます。

アクセス許可データセットが 2025 年 3 月 31 日までに通常のデータセットに適用されなかった場合、通常のデータセットとして分類されます。ルールデータセットとして使用するには、アクセス許可データセットを複製し、データセット作成時にコンソールでルールデータセットとしてフラグを付けます。EDIT DATASET を選択し、オプションで DUPLICATE AS RULES DATASET を選択します。

ルールデータセットとして正常に複製するには、元のデータセットが以下の両方の条件を満たしていることを確認します: 1. 必須のユーザーメタデータ列またはグループメタデータ列を含むこと。2. データ型が文字列型である列のみを含むこと。

コンソールで新しいルールデータセットを作成するには、[新しいデータセット] ドロップダウンで [新しいルールデータセット] を選択します。プログラムでルールデータセットを作成するときは、次のパラメータを追加します: [UseAs: RLS\_RULES](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_CreateDataSet.html#API_CreateDataSet_RequestSyntax)。これは、ルールデータセットの作成にのみ使用されるオプションのパラメータです。コンソールまたはプログラムでデータセットが作成され、ルールデータセットまたは通常のデータセットとしてフラグ付けされると、変更することはできなくなります。

データセットがルールデータセットとしてフラグ付けされると、Amazon Quick は厳格な SPICE 取り込みルールを適用します。データ整合性を確保するために、長さ制限を超える無効な行またはセルがある場合、ルールデータセットの SPICE 取り込みは失敗します。正常な取り込みを再開するには、取り込みの問題を修正する必要があります。厳格な取り込みルールは、ルールデータセットにのみ適用されます。行のスキップや文字列の切り捨てがあっても、通常のデータセットではデータセットの取り込みが失敗することはありません。

## 行レベルのセキュリティの適用
<a name="apply-row-level-security"></a>

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

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

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

1. **データ**ページで、データセットを選択します。

1. [Dataset details] (データセットの詳細) ページが開くので、**[Row-level security]** (行レベルのセキュリティ) で、**[Set up]** (セットアップ) を選択します。

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

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

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

1. **[Permissions policy]** (アクセス許可ポリシー) で **[Grant access to dataset]** (データセットへのアクセス権を付与する) をオンにします。各データセットにはただ 1 つのアクティブなアクセス許可データセットがあります。2 つ目のアクセス許可データセットを追加しようとすると、既存のものが上書きされます。
**重要**  
行レベルのセキュリティを使用するときは、NULL 値および空の文字列値にいくつかの制限が適用されます。  
データセットの制限されたフィールドに NULL 値または空の文字列 ("") がある場合、制限の適用時にこれらの行が無視されます。
アクセス許可のデータセット内で、NULL 値および空の文字列は同じように扱われます。詳細については、以下のテーブルを参照してください。
機密情報が誤って公開されないように、Amazon Quick はすべてのユーザーにアクセス権を付与する空の RLS ルールをスキップします。*空の RLS ルール*は、行のすべての列が値を持たない場合に発生します。Quick RLS は、NULL、空の文字列 (")、または空のカンマ区切り文字列 (",," など) を値なしとして扱います。  
空のルールのスキップ後も、他の非空の RLS ルールは引き続き適用されます。
許可データセットに空のルールしかなく、それらのルールがすべてスキップされた場合、この許可データセットによって制限されているデータには誰もアクセスできません。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

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

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

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

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

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

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

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