透過以使用者為基礎的規則使用資料列層級安全 (RLS) 限制對資料集的存取 - Amazon QuickSight

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

透過以使用者為基礎的規則使用資料列層級安全 (RLS) 限制對資料集的存取

 適用於:企業版 

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

注意

對 SPICE 資料集套用資料列層級安全時,資料集中的每個欄位最多可以包含 2,047 個 Unicode 字元。超過此限制的欄位將在擷取過程中被截斷。若要進一步了解 SPICE 資料配額,請參閱 匯入資料的 SPICE 配額

為此,請建立查詢或檔案,其中包含一個名為 UserName 和/或 GroupName 的資料欄。或建立查詢或檔案,其中包含一個名為 UserARN 和/或 GroupARN 的資料欄。您可以想像這是為該使用者或群組新增規則。然後,針對您要授與或限制存取的每一個欄位,您可以在查詢或檔案中新增一欄。針對您新增的每個使用者或群組名稱,請加入各欄位的值。您可以使用 NULL (無值) 來表示所有值。若要查看資料集規則的範例,請參閱 建立資料列層級安全的資料集規則

若要套用資料集規則,請將該規則當做許可資料集,新增到您的資料集。請謹記以下幾點:

  • 許可資料集不得包含重複的值。評估如何套用規則時將會忽略重複項目。

  • 指定的每個使用者或群組只能看到與資料集規則中的欄位值相符的資料列。

  • 如果您為使用者或群組新增規則,並保持所有其他資料欄都沒有值 (NULL),即表示您授權其存取所有資料。

  • 如果您不為使用者或群組新增規則,該使用者或群組將無法看到任何資料。

  • 每個使用者套用的完整規則紀錄集不得超過 999 個。此限制適用於直接指派給使用者名稱的總規則數,加上透過群組名稱指派給使用者的任何規則。

  • 如果欄位包含逗號 (,),Amazon 會 QuickSight 將每個單字以逗號分隔為篩選條件中的個別值來處理。例如,在 ('AWS', 'INC') 中,AWS,INC 被視為兩個字串:AWSINC。若要使用 AWS,INC 進行篩選,請在許可資料集中用雙引號將字串括起來。

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

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

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

Amazon QuickSight 將空格視為文字值。如果您限制的欄位中有空格,則資料集規則將會套用到這些資料列。Amazon QuickSight 將空值和空白(空字符串「」)視為「無值」。NULL 是空欄位值。

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

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

受限的資料集在資料集畫面中標有單字受限

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

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

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

建立資料列層級安全的資料集規則

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

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

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

    結構看起來應該類似下列其中之一。確保至少有一個欄位可識別使用者或群組。您可以同時包含兩者,但只需要一個,而且一次只能使用一個。您用於使用者或群組的欄位可以使用您選擇的任何名稱。

    注意

    如果您要指定群組,請僅使用 Amazon QuickSight 群組或 Microsoft AD 群組。

    以下範例顯示具有群組的資料表。

    GroupName 區域 區段
    EMEA-Sales EMEA Enterprise, SMB, Startup
    US-Sales 美國 Enterprise
    US-Sales 美國 SMB, Startup
    US-Sales 美國 啟動
    APAC-Sales APAC Enterprise, SMB
    Corporate-Reporting
    APAC-Sales APAC Enterprise, Startup

    以下範例顯示具有使用者名稱的資料表。

    UserName 區域 區段
    AlejandroRosalez EMEA Enterprise, SMB, Startup
    MarthaRivera 美國 Enterprise
    NikhilJayashankar 美國 SMB, Startup
    PauloSantos 美國 啟動
    SaanviSarkar APAC Enterprise, SMB
    sales-tps@example.com
    ZhangWei APAC Enterprise, Startup

    以下範例顯示一個包含使用者和群組 Amazon Resource Name (ARN) 的資料表。

    UserARN GroupARN 區域
    arn:aws:quicksight:us-east-1:123456789012:user/default/Bob arn:aws:quicksight:us-east-1:123456789012:group/default/group-1 APAC
    arn:aws:quicksight:us-east-1:123456789012:user/default/Sam arn:aws:quicksight:us-east-1:123456789012:group/default/group-2 美國

    或者,如果您使用 .csv 檔案,結構看起來應該類似下列其中之一。

    UserName,Region,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,Region,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,Region 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, Region, Segment from tps-permissions; /* for groups*/ select Group as GroupName, Region, Segment from tps-permissions;
  2. 為資料集規則建立資料集。為了確保您能輕鬆找到它,請提供一個意義的名稱,例如 Permissions-Sales-Pipeline

建立資料列層級安全

利用檔案或查詢做為包含許可規則的資料集,以透過以下程序來套用資料列層級安全 (RLS)。

使用檔案或查詢套用資料列層級安全
  1. 確認您已將規則新增為新的資料集。如果已新增,但在資料集清單下方沒看到,請重新整理畫面。

  2. 資料集頁面上,選擇相應資料集

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

    針對資料列層級安全選擇「設定」。
  4. 在開啟的設定資料列層級安全頁面上,選擇以使用者為基礎的規則

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

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

  6. 針對許可政策,選擇授予對資料集的存取。每個資料集只有一個作用中的許可資料集。如果您嘗試新增第二個許可資料集,則會覆寫現有的資料集。

    重要

    使用資料列層級安全時,有一些限制會套用至 NULL 和空字串值。

    • 如果您的資料集在受限制欄位中有 NULL 值或空字串 (""),則套用限制時會忽略這些資料列。

    • 在許可資料集內,NULL 值和空字串將視為相同。如需詳細資訊,請參閱下表。

    • 為了防止意外暴露敏感資訊,Amazon 會 QuickSight 略過將存取權授予所有人存取權的空白 RLS 規則。當資料列的所有資料行都沒有值時,就會發生空的 RLS 規則。 QuickSight RLS 會將 NULL、空字串 (「」) 或空白逗號分隔字串 (例如「,,,」) 視為無值。

      • 略過空規則後,其他非空 RLS 規則仍然會套用。

      • 如果許可資料集只有空規則且所有規則都被略過,則任何人都將無法存取受此許可資料集限制的任何資料。

    、、區域 UserName GroupName、區段的規則 授予的存取權限
    AlejandroRosalez, 歐洲、中東和非洲地區 (EMEA) 銷售,「企業、中小企業、新創公司」 看到所有 EMEA Enterprise、SMB 和 Startup
    sales-tps@example.com,Corporate-Reporting,"","" 看到所有列
    使用者或群組沒有項目 看不到任何列
    “”,“”,“”,“” 略過;如果所有其他規則都為空,則看不到任何資料列。
    NULL,“”,“”,NULL 略過;如果所有其他規則都為空,則看不到任何資料列。

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

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

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

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

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

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

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