

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

# 透過以使用者為基礎的規則使用資料列層級安全來限制對資料集的存取
<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 查詢。