

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

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


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

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

また、Quick の登録されていないユーザー用に Amazon Quick ダッシュボードをアプリケーションに埋め込む場合、行レベルのセキュリティ (RLS) を使用して、タグでデータをフィルタリング/制限できます。タグは、アプリケーション内のセッションを識別するユーザー指定の文字列です。タグを使用して、データセットの RLS コントロールを実装できます。データセットで RLS ベースの制限を設定することで、Quick はユーザー ID/セッションに関連付けられたセッションタグに基づいてデータをフィルタリングします。

データセットへのアクセスは、ユーザー名ベースもしくはグループベースのルール、タグベースのルール、またはそれらの両方を使用して制限することができます。

Quick でプロビジョニング (登録) されたユーザーまたはグループのデータを保護する場合は、ユーザーベースのルールを選択します。これを実行するには、データにアクセスする各ユーザーまたはグループに対して、列ごとに設定されたルールが含まれる許可データセットを選択します。データにアクセスできるのは、これらのルールで特定されたユーザーまたはグループのみです。

埋め込みダッシュボードを使用していて、Quick でプロビジョニングされていないユーザー (未登録ユーザー) のデータを保護する場合にのみ、タグベースのルールを選択します。これを実行するには、列にタグを定義してデータをセキュア化します。ダッシュボードを埋め込むときは、タグに対する値を渡す必要があります。

**Topics**
+ [データセットへのアクセスを制限するためのユーザーベースのルールでの行レベルのセキュリティの使用](restrict-access-to-a-data-set-using-row-level-security.md)
+ [匿名ユーザー用のダッシュボードの埋め込み時におけるデータセットへのアクセスを制限するためのタグベースのルールでの行レベルのセキュリティの使用](quicksight-dev-rls-tags.md)

# データセットへのアクセスを制限するためのユーザーベースのルールでの行レベルのセキュリティの使用
<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\$1RULES](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 クエリには適用されません。

# 匿名ユーザー用のダッシュボードの埋め込み時におけるデータセットへのアクセスを制限するためのタグベースのルールでの行レベルのセキュリティの使用
<a name="quicksight-dev-rls-tags"></a>


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


|  | 
| --- |
|    対象者:  Amazon Quick Administrators と Amazon Quick Developer  | 

Quick でプロビジョニング (登録) されていないユーザー用に Amazon Quick ダッシュボードをアプリケーションに埋め込む場合、行レベルのセキュリティ (RLS) を使用して、タグでデータをフィルタリング/制限できます。タグは、アプリケーション内のセッションを識別するユーザー指定の文字列です。タグを使用して、データセットの RLS コントロールを実装できます。データセットで RLS ベースの制限を設定することで、Quick はユーザー ID/セッションに関連付けられたセッションタグに基づいてデータをフィルタリングします。

例えば、さまざまな小売業者のための顧客向けアプリケーションを所有する物流会社があるとしましょう。これらの小売業者の何千人ものユーザーが、アプリケーションにアクセスし、倉庫からの注文の出荷状況に関する指標を確認します。

Quick で何千人ものユーザーを管理する必要がないため、匿名埋め込みを使用して、認証および承認されたユーザーが表示できる選択したダッシュボードをアプリケーションに埋め込みます。ただし、小売業者にはビジネス用のデータのみが表示され、他のデータは表示されないようにする必要があります。タグによる RLS を使用すると、顧客に関連するデータのみが表示されるようにできます。

そのためには、以下のステップを実行します。

1. RLS タグをデータセットに追加します。

1. `GenerateEmbedUrlForAnonymousUser` API オペレーションを使用して、実行時にこれらのタグに値を割り当てます。

   `GenerateEmbedUrlForAnonymousUser` API オペレーションを使用した匿名ユーザー向けダッシュボードの埋め込みに関する詳細については、[匿名 (未登録) ユーザー向けの Amazon Quick Sight ダッシュボードの埋め込み](embedded-analytics-dashboards-for-everyone.md) を参照してください。

タグによる RLS を使用するには、次の点に注意してください。
+ タグによる RLS の使用は、現在、匿名埋め込み (特に、`GenerateEmbedUrlForAnonymousUser` API オペレーションを使用する埋め込みダッシュボード) でのみサポートされています。
+ タグによる RLS の使用は、`GenerateEmbedURLForRegisteredUser` API オペレーションまたは古い `GetDashboardEmbedUrl` API オペレーションを使用する埋め込みダッシュボードではサポートされていません。
+ RLS タグは、 AWS Identity and Access Management (IAM) またはクイック ID タイプではサポートされていません。
+ SPICE データセットを行レベルのセキュリティに適用する場合、データセット内の各フィールドに最大 2,047 文字の Unicode 文字を含めることができます。このクォータを超えるフィールドは、取り込み中に切り捨てられます。SPICE データクォータの詳細については、「[インポートされたデータに対する SPICE クォータ](data-source-limits.md#spice-limits)」を参照してください。

## ステップ 1: データセットに RLS タグを追加する
<a name="quicksight-dev-rls-tags-add"></a>

Amazon Quick のデータセットにタグベースのルールを追加できます。または、`CreateDataSet` または `UpdateDataSet` API オペレーションを呼び出すことによってタグベースのルールを追加することもできます。詳細については、「[API を使用してデータセットに RLS タグを追加する](#quicksight-dev-rls-tags-add-api)」を参照してください。

Quick のデータセットに RLS タグを追加するには、次の手順に従います。

**RLS タグをデータセットに追加する**

1. クイックスタートページから、左側の**データ**を選択します。

1. RLS を追加するデータセットを選択します。

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

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

1. **[Column]** (列) では、タグルールを追加する列を選択します。

   例えば、この物流会社の場合は、`retailer_id` 列が使用されます。

   文字列データ型の列のみがリストされます。

1. **[Tag]** (タグ) には、タグキーを入力します。任意のタグ名を入力できます。

   例えば、この物流会社の場合は、タグキー `tag_retailer_id` が使用されます。こうすることで、アプリケーションにアクセスする小売業者に基づいた行レベルのセキュリティが設定されます。

1. (オプション) **[Delimiter]** (区切り記号) には、リストから区切り記号を選択するか、独自の区切り記号を入力します。

   タグに複数の値を割り当てるときは、区切り記号を使用してテキスト文字列を区切ることができます。区切り記号の値は、最長で 10 文字にすることができます。

1. (オプション) **[Match all]** (すべて一致) には、**[\$1]** を選択するか、独自の文字 (1 つ、または複数) を入力します。

   このオプションは、データセット内のその列にあるすべての値でフィルタリングしたいときに使用する任意の文字にすることができます。値を 1 つずつリストする代わりに、この文字を使用できます。この値を指定する場合、少なくとも 1 文字、または最大 256 文字の長さにすることができます。

1. **[Add]** (追加) を選択します。

   タグルールがデータセットに追加されて最下部にリストされますが、まだ適用はされていません。データセットに別のタグルールを追加するには、ステップ 5～9 を繰り返します。タグルールを編集するには、ルールの後の鉛筆アイコンを選択します。タグルールを削除するには、ルールの後の削除アイコンを選択します。データセットには最大 50 個のタグを追加できます。

1. データセットにタグルールを適用する準備ができたら、**[Apply rules]** (ルールを適用) をクリックします。

1. **[Turn on tag-based security?]** (タグベースのセキュリティをオンにしますか?) で **[Apply and activate]** (適用とアクティベート) をクリックします。

   これでタグベースのルールがアクティブになりました。**[Set up row-level security]** (行レベルのセキュリティを設定) ページに、データセットのタグルールをオンとオフに切り替えるためのトグルが表示されます。

   データセット用のすべてのタグベースのルールを無効にするには、**[タグベースのルール]** トグルをオフにし、表示されるテキストボックスに「確認」と入力します。

   **データ**ページには、タグルールが有効になっていることを示すロックアイコンがデータセット行に表示されます。

   これで、[ステップ 2: ランタイム時に値を RLS タグに割り当てる](#quicksight-dev-rls-tags-assign-values) で説明されているように、ランタイム時にタグルールを使用してタグ値を設定できるようになりました。ルールは、アクティブな場合にのみクイックリーダーに影響します。
**重要**  
データセットでタグが割り当てられ、有効になったら、ダッシュボードの作成時にデータセット内のデータを表示するアクセス許可を Quick authors に付与してください。  
Quick authors にデータセット内のデータを表示するアクセス許可を付与するには、データセットルールとして使用するアクセス許可ファイルまたはクエリを作成します。詳細については、「[行レベルのセキュリティに対するデータセットルールの作成](restrict-access-to-a-data-set-using-row-level-security.md#create-data-set-rules-for-row-level-security)」を参照してください。

タグベースのルールを作成すると、タグベースのルールが相互にどのように関連しているかを示す新しい **[ルールを管理]** テーブルが表示されます。**[ルールを管理]** テーブルにリストされているルールを変更するには、ルールの後の鉛筆アイコンを選択します。その後、タグを追加または削除し、**[更新]** を選択します。更新したルールをデータセットに適用するには、**[適用]** を選択します。

### (オプション) RLS タグに OR 条件を追加する
<a name="quicksight-dev-rls-tags-or"></a>

タグベースのルールに OR 条件を追加して、クイックアカウントユーザーにデータを表示する方法をさらにカスタマイズすることもできます。タグベースのルールで OR 条件を使用すると、ルールで定義された少なくとも 1 つのタグが有効であれば、Quick のビジュアルが表示されます。

**タグベースのルールに OR 条件を追加するには**

1. **[ルールを管理]** テーブルで、**[OR 条件を追加]** を選択します。

1. 表示される **[タグを選択]** ドロップダウンリストで、OR 条件を作成するタグを選択します。**[ルールを管理]** テーブルには、最大 50 個の OR 条件を追加できます。データセット内の 1 つの列に複数のタグを追加できますが、1 つのルールには少なくとも 1 つの列タグが含まれている必要があります。

1. **[更新]** を選択してルールに条件を追加し、**[適用]** を選択して更新されたルールをデータセットに適用します。

### API を使用してデータセットに RLS タグを追加する
<a name="quicksight-dev-rls-tags-add-api"></a>

別の手段として、`CreateDataSet` または `UpdateDataSet` API オペレーションを呼び出すことによって、データセットにタグベースの行レベルのセキュリティを設定し、有効化することもできます。以下の例を使って説明します。

**重要**  
API コールでセッションタグを設定する場合、  
セッションタグをセキュリティ認証情報として扱います。セッションタグをエンドユーザーまたはクライアント側のコードに公開しないでください。
サーバー側のコントロールを実装します。セッションタグは、エンドユーザーが変更できるパラメータではなく、信頼できるバックエンドサービスによってのみ設定されていることを確認してください。
セッションタグを列挙から保護します。あるテナントのユーザーが、他のテナントに属する sessionTag 値を検出または推測できないようにします。
アーキテクチャを確認します。ダウンストリームの顧客またはパートナーが API を直接呼び出すことが許可されている場合は、アクセスすべきでないテナントに sessionTag 値を指定できるかどうかを評価します。

------
#### [ CreateDataSet ]

以下は、タグによる RLS を使用するデータセットを作成する例です。これは、前述の物流会社のシナリオを想定しています。タグは、`row-level-permission-tag-configuration` 要素で定義されています。タグは、データを保護する列に対して定義されています。このオプション要素の詳細については、*Amazon Quick API リファレンス*の[RowLevelPermissionTagConfiguration](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RowLevelPermissionTagConfiguration.html)」を参照してください。

```
create-data-set
		--aws-account-id <value>
		--data-set-id <value>
		--name <value>
		--physical-table-map <value>
		[--logical-table-map <value>]
		--import-mode <value>
		[--column-groups <value>]
		[--field-folders <value>]
		[--permissions <value>]
		[--row-level-permission-data-set <value>]
		[--column-level-permission-rules <value>]
		[--tags <value>]
		[--cli-input-json <value>]
		[--generate-cli-skeleton <value>]
		[--row-level-permission-tag-configuration 
	'{
		"Status": "ENABLED",
		"TagRules": 
			[
				{
					"TagKey": "tag_retailer_id",
					"ColumnName": "retailer_id",
					"TagMultiValueDelimiter": ",",
					"MatchAllValue": "*"
				},
				{
					"TagKey": "tag_role",
					"ColumnName": "role"
				}
			],
		"TagRuleConfigurations":
			[
				tag_retailer_id
			],
			[
				tag_role
			]
	}'
]
```

この例のタグは、要素の `TagRules` 部分で定義されています。この例では、2 つの列に基づいて 2 つのタグが定義されています。
+ `tag_retailer_id` タグキーは `retailer_id` 列に対して定義されています。この物流会社の場合は、アプリケーションにアクセスしている小売業者に基づいて行レベルのセキュリティが設定されます。
+ `tag_role` タグキーは `role` 列に対して定義されています。この物流会社の場合は、特定の小売業者からアプリケーションにアクセスしているユーザーのロールに基づいて、行レベルのセキュリティの追加レイヤーが設定されます。例として、`store_supervisor` または `manager` があります。

タグごとに、`TagMultiValueDelimiter` および `MatchAllValue` を定義できます。これらはオプションです。
+ `TagMultiValueDelimiter` - このオプションは、ランタイム時に値を渡すときにそれらを区切るために使用する任意の文字列にすることができます。値の最大長は 10 文字です。この場合、区切り文字の値としてカンマが使用されます。
+ `MatchAllValue` - このオプションは、データセット内のその列にあるすべての値でフィルタリングしたいときに使用する任意の文字にすることができます。値を 1 つずつリストする代わりに、この文字を使用できます。指定する場合、この値は 1 文字から 256 文字までの長さにすることができます。この場合、すべての値の一致としてアスタリスクが使用されます。

データセット列のタグを設定するときに、必須プロパティの `Status` を使用して、それらを有効または無効にします。タグルールを有効にするには、このプロパティに対して値 `ENABLED` を使用します。タグルールを有効にすることによって、[ステップ 2: ランタイム時に値を RLS タグに割り当てる](#quicksight-dev-rls-tags-assign-values) で説明されているように、ランタイム時にタグルールを使用してタグ値を設定できます。

以下は、応答の定義の例です。

```
{
			"Status": 201,
			"Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset",
			"DataSetId": "RLS-Dataset",
			"RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2"
		}
```

------
#### [ UpdateDataSet ]

**UpdateDataSet**

`UpdateDataSet` API オペレーションを使用して、既存のデータセットの RLS タグを追加または更新できます。

以下は、RLS タグを持つデータセットを更新する例です。これは、前述の物流会社のシナリオを想定しています。

```
update-data-set
		--aws-account-id <value>
		--data-set-id <value>
		--name <value>
		--physical-table-map <value>
		[--logical-table-map <value>]
		--import-mode <value>
		[--column-groups <value>
		[--field-folders <value>]
		[--row-level-permission-data-set <value>]
		[--column-level-permission-rules <value>]
		[--cli-input-json <value>]
		[--generate-cli-skeleton <value>]
				[--row-level-permission-tag-configuration 
	'{
		"Status": "ENABLED",
		"TagRules": 
			[
				{
					"TagKey": "tag_retailer_id",
					"ColumnName": "retailer_id",
					"TagMultiValueDelimiter": ",",
					"MatchAllValue": "*"
				},
				{
					"TagKey": "tag_role",
					"ColumnName": "role"
				}
			],
		"TagRuleConfigurations":
			[
				tag_retailer_id
			],
			[
				tag_role
			]
	}'
]
```

以下は、応答の定義の例です。

```
{
			"Status": 201,
			"Arn": "arn:aws:quicksight:us-west-2:11112222333:dataset/RLS-Dataset",
			"DataSetId": "RLS-Dataset",
			"RequestId": "aa4f3c00-b937-4175-859a-543f250f8bb2"
		}
```

------

**重要**  
データセットでタグが割り当てられ、有効になったら、ダッシュボードの作成時にデータセット内のデータを表示するアクセス許可を Quick authors に付与してください。  
Quick authors にデータセット内のデータを表示するアクセス許可を付与するには、データセットルールとして使用するアクセス許可ファイルまたはクエリを作成します。詳細については、「[行レベルのセキュリティに対するデータセットルールの作成](restrict-access-to-a-data-set-using-row-level-security.md#create-data-set-rules-for-row-level-security)」を参照してください。

`RowLevelPermissionTagConfiguration` 要素の詳細については、*Amazon Quick API リファレンス*の[RowLevelPermissionTagConfiguration](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_RowLevelPermissionTagConfiguration.html)」を参照してください。

## ステップ 2: ランタイム時に値を RLS タグに割り当てる
<a name="quicksight-dev-rls-tags-assign-values"></a>

RLS のタグは、匿名埋め込みにのみ使用できます。`GenerateEmbedUrlForAnonymousUser` API オペレーションを使用してタグの値を設定できます。

**重要**  
API コールでセッションタグを設定する場合、  
セッションタグをセキュリティ認証情報として扱います。セッションタグをエンドユーザーまたはクライアント側のコードに公開しないでください。
サーバー側のコントロールを実装します。セッションタグは、エンドユーザーが変更できるパラメータではなく、信頼できるバックエンドサービスによってのみ設定されていることを確認してください。
セッションタグを列挙から保護します。あるテナントのユーザーが、他のテナントに属する sessionTag 値を検出または推測できないようにします。
アーキテクチャを確認します。ダウンストリームの顧客またはパートナーが API を直接呼び出すことが許可されている場合は、アクセスすべきでないテナントに sessionTag 値を指定できるかどうかを評価します。

以下の例は、前のステップでデータセットで定義された RLS タグに値を割り当てる方法を示しています。

```
POST /accounts/AwsAccountId/embed-url/anonymous-user
	HTTP/1.1
	Content-type: application/json
	{
		“AwsAccountId”: “string”,
		“SessionLifetimeInMinutes”: integer,
		“Namespace”: “string”, // The namespace to which the anonymous end user virtually belongs
		“SessionTags”:  // Optional: Can be used for row-level security
			[
				{
					“Key”: “tag_retailer_id”,
					“Value”: “West,Central,South”
				}
				{
					“Key”: “tag_role”,
					“Value”: “shift_manager”
				}
			],
		“AuthorizedResourceArns”:
			[
				“string”
			],
		“ExperienceConfiguration”:
			{
				“Dashboard”:
					{
						“InitialDashboardId”: “string”
						// This is the initial dashboard ID the customer wants the user to land on. This ID goes in the output URL.
					}
			}
	}
```

以下は、応答の定義の例です。

```
HTTP/1.1 Status
	Content-type: application/json

	{
	"EmbedUrl": "string",
	"RequestId": "string"
	}
```

Quick でユーザーを登録しない RLS サポートは、 `GenerateEmbedUrlForAnonymousUser` API オペレーションでのみサポートされます。このオペレーションでは、`SessionTags` で、データセット列に関連付けられたタグの値を定義できます。

この場合、以下の割り当てが定義されています。
+ `West`、`Central`、および `South` の各値は、ランタイム時に `tag_retailer_id` タグに割り当てられます。区切り文字には、データセットの `TagMultipleValueDelimiter` で定義されたカンマが使用されます。列でコール値を使用するには、値を、タグの作成時に `MatchAllValue` として定義された *\$1* に設定します。
+ 値 `shift_manager` は `tag_role` タグに割り当てられます。

生成された URL を使用するユーザーは、`role` 列に値 `shift_manager` がある行のみを表示できます。このユーザーは、`retailer_id` 列の `West`、`Central`、または `South` 値のみを表示できます。

`GenerateEmbedUrlForAnonymousUser` API オペレーションを使用した匿名ユーザーのダッシュボードの埋め込みの詳細については、[匿名 (未登録) ユーザー向けの Amazon Quick Sight ダッシュボードの埋め込み](embedded-analytics-dashboards-for-everyone.md)「」または*「Amazon Quick API リファレンス*」の[GenerateEmbedUrlForAnonymousUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html)」を参照してください。