

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon Quick 中使用資料列層級安全性
<a name="row-level-security"></a>


|  | 
| --- |
|  適用於：企業版  | 

在 Amazon Quick 企業版中，您可以透過在資料集上設定資料列層級安全性 (RLS) 來限制對資料集的存取。您可以在共用資料集之前或之後這樣做。當您與資料集擁有者共用 RLS 資料集時，他們仍然可以看到所有資料。然而，當您與讀者共用時，他們只能看到許可資料集規則許可的資料。

此外，當您為 Quick 的未註冊使用者在應用程式中嵌入 Amazon Quick 儀表板時，您可以使用資料列層級安全性 (RLS) 來篩選/限制具有標籤的資料。標籤是使用者指定的字串，可識別應用程式中的工作階段。您可以使用標籤來實作資料集的 RLS 控制項。透過在資料集中設定以 RLS 為基礎的限制，快速根據與使用者身分/工作階段繫結的工作階段標籤來篩選資料。

您可以使用以使用者名稱或群組為基礎的規則，或以標籤為基礎的規則，或結合兩者來限制對資料集的存取。

如果您想要保護在 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>


|  | 
| --- |
|  適用於：企業版  | 

在 Amazon Quick 企業版中，您可以透過在資料集上設定資料列層級安全性 (RLS) 來限制對資料集的存取。您可以在共用資料集之前或之後這樣做。當您與資料集擁有者共用 RLS 資料集時，他們仍然可以看到所有資料。然而，當您與讀者共用時，他們只能看到許可資料集規則許可的資料。透過新增資料列層級安全，您可以進一步控制其存取權。

**注意**  
對 SPICE 資料集套用資料列層級安全時，資料集中的每個欄位最多可以包含 2,047 個 Unicode 字元。超過此限制的欄位將在擷取過程中被截斷。若要進一步了解 SPICE 資料配額，請參閱 [匯入資料的 SPICE 配額](data-source-limits.md#spice-limits)。

若要這樣做，您可以建立一個查詢或檔案，其中包含一個資料欄供使用者或群組識別。您可以使用 `UserName`和 `GroupName`，或者使用 `UserARN`和 `GroupARN`。您可以想像這是為該使用者或群組*新增規則*。然後，針對您要授與或限制存取的每一個欄位，您可以在查詢或檔案中新增一欄。針對您新增的每個使用者或群組名稱，請加入各欄位的值。您可以使用 NULL (無值) 來表示所有值。若要查看資料集規則的範例，請參閱 [建立資料列層級安全的資料集規則](#create-data-set-rules-for-row-level-security)。

若要套用資料集規則，請將該規則當做許可資料集，新增到您的資料集。請謹記以下幾點：
+ 許可資料集不得包含重複的值。評估如何套用規則時將會忽略重複項目。
+ 指定的每個使用者或群組只能看到與資料集規則中的欄位值*相符的*資料列。
+ 如果您為使用者或群組新增規則，並保持所有其他資料欄都沒有值 (NULL)，即表示您授權其存取所有資料。
+ 如果您不為使用者或群組新增規則，該使用者或群組將無法看到任何資料。
+ 每個使用者套用的完整規則紀錄集不得超過 999 個。此限制適用於直接指派給使用者名稱的總規則數，加上透過群組名稱指派給使用者的任何規則。
+ 如果欄位包含逗號 (，)，Amazon Quick 會將每個以逗號分隔的單字視為篩選條件中的個別值。例如，在 `('AWS', 'INC')` 中，`AWS,INC` 被視為兩個字串：`AWS` 和 `INC`。若要使用 `AWS,INC` 進行篩選，請在許可資料集中用雙引號將字串括起來。

  如果受限資料集是 SPICE 資料集，則每個使用者對每個受限欄位所套用的篩選條件值的數量不能超過 192,000 個。這適用於直接指派給使用者名稱的總篩選條件值數，加上透過群組名稱指派給使用者的任何篩選條件值。

  如果受限資料集是直接查詢資料集，則每個使用者可套用的篩選條件值的數量會因資料來源而異。

  超過篩選條件值限制可能會導致視覺化效果渲染失敗。建議在受限資料集中新增額外的資料欄，以根據原始受限資料欄將資料列分組，從而縮短篩選條件清單。

Amazon Quick 會將空格視為常值。如果您限制的欄位中有空格，則資料集規則將會套用到這些資料列。Amazon Quick 會將 NULLs和空白 （空字串 "") 視為「無值」。NULL 是空欄位值。

視您的資料集源自哪個資料來源而定，您可以設定直接查詢來存取許可表。以空格分隔的字詞不需要用引號分隔。如果您使用直接查詢，您可以在原始資料來源中輕鬆變更查詢。

或者，您可以從文字檔案或試算表上傳資料集規則。如果您使用逗號分隔值 (CSV) 檔案，指定的行切勿包含空格。包含空格的字詞需要用引號分隔。如果您是使用檔案形式的資料集規則，請由資料集的許可設定中覆寫現有的規則，以套用任何變更。

受限制的資料集會在資料****畫面中以 **RESTRICTED** 一詞標示。

從具有作用中 RLS 規則的父資料集建立的子資料集，其保留父資料集的 RLS 規則。您可以為子資料集新增更多 RLS 規則，但無法移除其從父資料集繼承的 RLS 規則。

若要從具有作用中 RLS 規則的父資料集建立的子資料集，您只能使用直接查詢。SPICE 不支援繼承父資料集 RLS 規則的子資料集。

資料列層級安全只適用於包含文字資料 (string、char、varchar 等) 的欄位。目前不適用於日期或數值欄位。使用資料列層級安全 (RLS) 的資料集不支援異常偵測。

## 建立資料列層級安全的資料集規則
<a name="create-data-set-rules-for-row-level-security"></a>

透過以下程序，建立許可檔案或查詢作為資料集規則。

**建立許可檔案或查詢作為資料集規則**

1. 建立包含資料列層級安全之資料集規則 (許可) 的檔案或查詢。

   欄位的排列順序並不重要。不過，所有欄位區分大小寫。確保它們完全符合欄位名稱和值。

   結構看起來應該類似下列其中之一。確保至少有一個欄位可識別使用者或群組。您可以同時包含兩者，但只需要一個，而且一次只能使用一個。您用於使用者或群組的欄位可以使用您選擇的任何名稱。
**注意**  
如果您要指定群組，請僅使用 Amazon Quick 群組或 Microsoft AD 群組。

   以下範例顯示具有群組的資料表。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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/zh_tw/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   以下範例顯示一個包含使用者和群組 Amazon Resource Name (ARN) 的資料表。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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 日之前未套用至一般資料集，則會將其分類為一般資料集。若要將其用作規則資料集，請複製該許可資料集，並在建立資料集時在主控台上將其標記為規則資料集。選取編輯資料集，然後在選項下，選擇複製為規則資料集。

若要成功將其複製為規則資料集，請確保原始資料集具有：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. 在開啟的資料集詳細資訊頁面上，針對**資料列層級安全**，選擇**設定**。

1. 在開啟的**設定資料列層級安全**頁面上，選擇**以使用者為基礎的規則**。

1. 從顯示的資料集清單中，選擇您的許可資料集。

   如果您的許可資料集沒有出現在此畫面上，請回到您的資料集，並重新整理頁面。

1. 針對**許可政策**，選擇**授予對資料集的存取**。每個資料集只有一個作用中的許可資料集。如果您嘗試新增第二個許可資料集，則會覆寫現有的資料集。
**重要**  
使用資料列層級安全時，有一些限制會套用至 NULL 和空字串值。  
如果您的資料集在受限制欄位中有 NULL 值或空字串 ("")，則套用限制時會忽略這些資料列。
在許可資料集內，NULL 值和空字串將視為相同。如需詳細資訊，請參閱下表。
為了防止意外暴露敏感資訊，Amazon Quick 會略過將存取權授予每個人的空白 RLS 規則。當一個資料列的所有欄都沒有值時，就會出現*空 RLS 規則*。Quick RLS 會將 NULL、空字串 ("") 或空逗號分隔字串 （例如 "、、") 視為無值。  
略過空規則後，其他非空 RLS 規則仍然會套用。
如果許可資料集只有空規則且所有規則都被略過，則任何人都將無法存取受此許可資料集限制的任何資料。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/quick/latest/userguide/restrict-access-to-a-data-set-using-row-level-security.html)

   您與之共用儀表板的任何人都可以看到其中的所有資料，除非資料集受到資料集規則所限制。

1. 選擇**套用資料集**以儲存變更。然後，在「**儲存資料集規則？**」頁面上，選擇**套用並啟動**。許可的變更會立即套用到現有的使用者。

1. (選用) 若要移除許可，首先請從資料集移除資料集規則。

   確定已移除資料集規則。然後，選擇許可資料集，再選擇**移除資料集**。

   若要覆寫許可，請選擇新的許可資料集並套用。您可以重複使用相同的資料集名稱。若要讓這些新許可發揮作用，務必在**許可**畫面中套用它們。SQL 查詢會動態更新，因此這些查詢可以在 Amazon Quick 外部進行管理。對於查詢，當直接查詢快取自動重新整理時，許可也會更新。

在從目標資料集移除以檔案為基礎的許可資料集之前，如果您先移除此資料集，則受限制的使用者無法存取資料集。資料集處於此狀態時會維持標示為**受限**。不過，當您檢視該資料集的**許可**時，您可以看到它沒有已選取的資料集規則。

若要修正此問題，可以指定新的資料集規則。以相同名稱建立資料集仍不足以修正此問題。您必須在**許可**畫面中選擇新的許可資料集。此限制不適用於直接 SQL 查詢。

# 在為匿名使用者嵌入儀表板時，透過以標籤為基礎的規則使用資料列層級安全來限制對資料集的存取
<a name="quicksight-dev-rls-tags"></a>


|  | 
| --- |
|  適用於：企業版  | 


|  | 
| --- |
|    目標對象：Amazon Quick Administrators 和 Amazon Quick Developer  | 

當您為未在 Quick 中佈建 （註冊） 的使用者在應用程式中嵌入 Amazon Quick 儀表板時，您可以使用資料列層級安全性 (RLS) 來篩選/限制具有標籤的資料。標籤是使用者指定的字串，可識別應用程式中的工作階段。您可以使用標籤來實作資料集的 RLS 控制項。透過在資料集中設定以 RLS 為基礎的限制，快速根據與使用者身分/工作階段繫結的工作階段標籤來篩選資料。

例如，假設貴公司是一家物流公司，提供面向各個零售商客戶的應用程式。這些零售商的數千名使用者存取該應用程式，以查看與訂單從倉庫發貨相關的指標。

您不想在 Quick 中管理數千名使用者，因此您可以使用匿名內嵌，在您的應用程式中嵌入已驗證和授權使用者可以看到的所選儀表板。但是，您希望零售商只能看到與其業務相關的資料，而不能看到其他公司的資料。您可以透過標籤使用 RLS，以確保客戶只看到與自己相關的資料。

若要這樣做，請完成下列步驟：

1. 新增 RLS 標籤至資料集。

1. 使用 `GenerateEmbedUrlForAnonymousUser` API 操作在執行期為這些標籤指派值。

   如需使用 `GenerateEmbedUrlForAnonymousUser` API 操作為匿名使用者內嵌儀表板的詳細資訊，請參閱 [為匿名 （未註冊） 使用者嵌入 Amazon Quick Sight 儀表板](embedded-analytics-dashboards-for-everyone.md)。

在透過標籤使用 RLS 之前，請記住以下幾點：
+ 透過標籤使用 RLS 目前僅支援匿名內嵌，特別是使用 `GenerateEmbedUrlForAnonymousUser` API 操作實現的內嵌式儀表板。
+ 使用 `GenerateEmbedURLForRegisteredUser` API 操作或舊的 `GetDashboardEmbedUrl` API 操作的內嵌式儀表板不支援透過標籤使用 RLS。
+  AWS Identity and Access Management (IAM) 或快速身分類型不支援 RLS 標籤。
+ 對 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)。

使用下列程序將 RLS 標籤新增至 Quick 中的資料集。

**將 RLS 標籤新增至資料集**

1. 從快速入門頁面，選擇左側**的資料**。

1. 選擇您要新增 RLS 的資料集。

1. 在開啟的資料集詳細資訊頁面上，針對**資料列層級安全**，選擇**設定**。

1. 在開啟的**設定資料列層級安全**頁面上，選擇**以標籤為基礎的規則**。

1. 針對**資料欄**，選擇要新增標籤規則的資料欄。

   例如，在這個物流公司的案例中，使用的是 `retailer_id` 資料欄。

   僅列出資料類型為字串的資料欄。

1. 針對**標籤**，輸入標籤索引鍵。您可以輸入任何您想要的標籤名稱。

   例如，在這個物流公司的案例中，使用的標籤索引鍵是 `tag_retailer_id`。執列此操作會根據存取應用程式的零售商設定資料列層級安全。

1. (選用) 針對**分隔符號**，從清單中選擇分隔符號，或輸入所需分隔符號。

   為標籤指派多個值時，可以使用分隔符號分隔文字字串。分隔符號的值最長可為 10 個字元。

1. (選用) 針對**全部相符**，選擇**\$1**，或輸入所需的一個或多個字元。

   當您想要按資料集中該資料欄的所有值進行篩選時，此選項可以是您想要使用的任何字元。您可以使用這個字元，而不用一一列出值。如果指定此值，則可以是至少一個字元，或長度上限為 256 個字元。

1. 選擇**新增**。

   標籤規則已新增至資料集並列在底部，但尚未套用。若要將另一個標籤規則新增至資料集，請重複步驟 5-9。若要編輯標籤規則，請選擇規則後面的鉛筆圖示。若要刪除標籤規則，請選擇規則後面的刪除圖示。您最多可以為每個資料集新增 50 個標籤。

1. 當您準備好將標籤規則套用到資料集時，請選擇**套用規則**。

1. 在開啟的「**開啟以標籤為基礎的安全？**」頁面上，選擇**套用並啟動**。

   以標籤為基礎的規則現在處於作用中狀態。在**設定資料列層級安全**頁面上，會出現一個切換開關，可用於開啟和關閉資料集的標籤規則。

   若要關閉資料集的所有以標籤為基礎的規則，請關閉**以標籤為基礎的規則**開關，然後在出現的文字方塊中輸入 "confirm"。

   在**資料**頁面上，資料集列中會出現鎖定圖示，指出已啟用標籤規則。

   現在您可以使用標籤規則在執行期設定標籤值，如 [步驟 2：在執行期為 RLS 標籤指派值](#quicksight-dev-rls-tags-assign-values) 中所述。這些規則只會在作用中時影響快速讀取器。
**重要**  
在資料集上指派和啟用標籤後，請務必在編寫儀表板時，授予 Quick 作者查看資料集中任何資料的許可。  
若要授予快速作者在資料集中查看資料的許可，請建立許可檔案或查詢以用作資料集規則。如需詳細資訊，請參閱[建立資料列層級安全的資料集規則](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 條件與標籤型規則搭配使用時，如果規則中定義的至少一個標籤有效，則 Quick 中的視覺效果會顯示。

**對以標籤為基礎的規則新增 OR 條件**

1. 在**管理規則**表中，選擇**新增 OR 條件**。

1. 在出現的**選取標籤**下拉式清單中，選取要對其建立 OR 條件的標籤。您最多可以在**管理規則**表中新增 50 個 OR 條件。您可以將多個標籤新增至資料集中的單一資料欄，但至少有一個資料欄標籤需要包含在規則中。

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` 部分中定義。在此範例中，基於兩欄定義了兩個標籤：
+ `tag_retailer_id` 標籤索引鍵是為 `retailer_id` 資料欄定義的。在本例中，針對物流公司而言，這會根據存取應用程式的零售商設定資料列層級安全。
+ `tag_role` 標籤索引鍵是為 `role` 資料欄定義的。在本例中，針對物流公司而言，這會根據從特定零售商存取應用程式的使用者角色設定額外的資料列層級安全層。例如 `store_supervisor` 或 `manager`。

針對每個標籤，您可以定義 `TagMultiValueDelimiter` 和 `MatchAllValue`。這些是選用選項。
+ `TagMultiValueDelimiter`：此選項可以是您在執行期傳遞值時用來分隔值的任何字串。值最長可為 10 個字元。本例使用逗號作為分隔符號值。
+ `MatchAllValue`：當您想要按資料集中該資料欄的所有值進行篩選時，此選項可以是您想要使用的任何字元。您可以使用這個字元，而不用一一列出值。如果指定該值，則長度需至少為 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 作者查看資料集中任何資料的許可。  
若要授予快速作者在資料集中查看資料的許可，請建立許可檔案或查詢以用作資料集規則。如需詳細資訊，請參閱[建立資料列層級安全的資料集規則](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"
	}
```

只有在 `GenerateEmbedUrlForAnonymousUser` API 操作中才支援在 Quick 中註冊使用者的 RLS 支援。在此操作中，您可以在 `SessionTags` 下定義與資料集資料欄關聯的標籤的值。

本例定義下列指派：
+ 值 `West`、`Central` 和 `South` 在執行期指派給 `tag_retailer_id` 標籤。逗號用作分隔符號，這在資料集中的 `TagMultipleValueDelimiter` 中定義。若要使用資料欄中的全部值，您可以將該值設為 *\$1*，該值在建立標籤時定義為 `MatchAllValue`。
+ 指派值 `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) 