匿名ユーザー用のダッシュボードの埋め込み時におけるデータセットへのアクセスを制限するためのタグベースのルールでの行レベルのセキュリティ (RLS) の使用 - Amazon QuickSight

重要: Amazon QuickSight 分析ワークスペースを再設計しました。 QuickSight コンソールの新しい外観を反映していないスクリーンショットや手順テキストが表示されることがあります。現在、スクリーンショットと手順のテキストを更新しています。

機能または項目を検索するには、クイック検索バーを使用します。

の新しい外観の詳細については、 QuickSight「Amazon での新しい分析エクスペリエンスの紹介 QuickSight」を参照してください。

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

匿名ユーザー用のダッシュボードの埋め込み時におけるデータセットへのアクセスを制限するためのタグベースのルールでの行レベルのセキュリティ (RLS) の使用

 適用対象: Enterprise Edition 
   対象者: Amazon QuickSight 管理者と Amazon QuickSight デベロッパー 

でプロビジョニング (登録) されていないユーザー向けに Amazon QuickSight ダッシュボードをアプリケーションに埋め込む場合 QuickSight、タグで行レベルのセキュリティ (RLS) を使用できます。この場合は、タグを使用して、ユーザーが誰であるかに基づいてダッシュボードに表示できるデータを指定します。

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

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

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

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

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

    GenerateEmbedUrlForAnonymousUser API オペレーションを使用した匿名ユーザー向けダッシュボードの埋め込みに関する詳細については、匿名 (未登録) ユーザー向けのデータダッシュボードの埋め込み QuickSight を参照してください。

タグによる RLS を使用するには、次の点に注意してください。

  • タグによる RLS の使用は、現在、匿名埋め込み (特に、GenerateEmbedUrlForAnonymousUser API オペレーションを使用する埋め込みダッシュボード) でのみサポートされています。

  • タグによる RLS の使用は、GenerateEmbedURLForRegisteredUser API オペレーションまたは古い GetDashboardEmbedUrl API オペレーションを使用する埋め込みダッシュボードではサポートされていません。

  • RLS タグは、 AWS Identity and Access Management (IAM) または QuickSight ID タイプではサポートされていません。

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

ステップ 1: データセットに RLS タグを追加する

Amazon のデータセットにタグベースのルールを追加できます QuickSight。または、CreateDataSet または UpdateDataSet API オペレーションを呼び出すことによってタグベースのルールを追加することもできます。詳細については、「API を使用してデータセットに RLS タグを追加する」を参照してください。

以下の手順を使用して、 のデータセットに RLS タグを追加します QuickSight。

RLS タグをデータセットに追加する
  1. QuickSight スタートページから、左側のデータセットを選択します。

  2. [Datasets] (データセット) ページで、RLS を追加するデータセットを選択します。

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

    
										データセットページでデータセットを選択した際の、行レベルのセキュリティのオプション。
  4. 開いた [Set up row-level security] (行レベルのセキュリティを設定) ページで、[Tag-based rules] (タグベースのルール) を選択します。

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

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

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

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

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

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

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

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

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

    
							[タグを管理] テーブル。
  9. [追加] を選択します。

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

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

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

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

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

    
							行レベルセキュリティを設定するには、[タグベースのルール] を [オン] に切り替えます。

    [Datasets] (データセット) ページでは、タグルールが有効であることを示すロックアイコンがデータセット行に表示されます。

    これで、ステップ 2: ランタイム時に値を RLS タグに割り当てる で説明されているように、ランタイム時にタグルールを使用してタグ値を設定できるようになりました。ルールは、アクティブな場合にのみ QuickSight リーダーに影響します。

    重要

    データセットでタグが割り当てられ、有効になったら、ダッシュボードの作成時にデータセット内のデータを表示するアクセス許可を QuickSight 作成者に付与してください。

    データセット内のデータを表示するアクセス許可を QuickSight 作成者に付与するには、データセットルールとして使用するアクセス許可ファイルまたはクエリを作成します。詳細については、「行レベルのセキュリティに対するデータセットルールの作成」を参照してください。

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


					編集および削除アイコンがある [ルールを管理] テーブル。

(オプション) RLS タグに OR 条件を追加する

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

タグベースのルールに OR 条件を追加するには
  1. [ルールを管理] テーブルで、[OR 条件を追加] を選択します。

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

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

    
								RLS ルールと [適用] ボタンのある [ルールを管理] ダイアログボックス。

API を使用してデータセットに RLS タグを追加する

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

CreateDataSet

以下は、タグによる RLS を使用するデータセットを作成する例です。これは、前述の物流会社のシナリオを想定しています。タグは、row-level-permission-tag-configuration 要素で定義されています。タグは、データを保護する列に対して定義されています。このオプション要素の詳細については、「Amazon QuickSight API リファレンス」のRowLevelPermissionTagConfiguration「」を参照してください。

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 タグに割り当てる で説明されているように、ランタイム時にタグルールを使用してタグ値を設定できます。

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

{ "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" }
重要

データセットでタグが割り当てられ、有効になったら、ダッシュボードの作成時にデータセット内のデータを表示するアクセス許可を QuickSight 作成者に付与してください。

データセット内のデータを表示するアクセス許可を QuickSight 作成者に付与するには、データセットルールとして使用するアクセス許可ファイルまたはクエリを作成します。詳細については、「行レベルのセキュリティに対するデータセットルールの作成」を参照してください。

RowLevelPermissionTagConfiguration 要素の詳細については、「Amazon QuickSight API リファレンス」のRowLevelPermissionTagConfiguration「」を参照してください。

ステップ 2: ランタイム時に値を RLS タグに割り当てる

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

以下の例は、前のステップでデータセットで定義された 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" }

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

この場合、以下の割り当てが定義されています。

  • WestCentral、および South の各値は、ランタイム時に tag_retailer_id タグに割り当てられます。区切り文字には、データセットの TagMultipleValueDelimiter で定義されたカンマが使用されます。列でコール値を使用するには、値を、タグの作成時に MatchAllValue として定義された * に設定します。

  • shift_managertag_role タグに割り当てられます。

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

GenerateEmbedUrlForAnonymousUser API オペレーションを使用した匿名ユーザー向けのダッシュボードの埋め込みの詳細については、「Amazon QuickSight API リファレンス」の匿名 (未登録) ユーザー向けのデータダッシュボードの埋め込み QuickSight 「」または「」を参照してくださいGenerateEmbedUrlForAnonymousUser