如何對 QuickSight 中的資料列層級安全問題進行疑難排解?

上次更新日期:2022 年 7 月 12 日

我在 Amazon QuickSight 中將 RLS 套用至我的資料集,但是我遇到資料存取方面的問題。

簡短描述

以下是您在 Amazon QuickSight 資料集上使用資料列層級安全 (RLS) 時,可能會遇到的常見問題:

  • 您無法在 QuickSight 內嵌入儀表板中看到匿名 QuickSight 使用者的任何資料。
  • 受限使用者仍然可以看到所有資料。
  • 不受限使用者看不到任何資料。
  • 在您套用 RLS 時,您會收到錯誤碼 DatasetRulesInvalidColType
  • 在您建立分析時,您會收到錯誤碼 DatasetRulesUserDenied

注意:使用 RLS 時,請考慮下列事項:

  • RLS 僅適用於企業版 QuickSight。
  • RLS 僅支援文字資料,如資料集規則中欄位的字串、char 和 varchar。目前,RLS 不適用於日期或數字欄位。
  • 每位使用者套用的完整規則記錄集不得超過 999。具有 999 個以上規則的資料集可能無法將 RLS 規則套用至資料集。
  • 您無法將 RLS 套用至具有預設 null 值的空白資料列,因為 QuickSight 會將 null 值視為空白欄位值。不過,欄位中的空格會被視為常值,因此資料集規則會套用至這些資料列。
  • 只有新增至資料集規則的使用者,才能根據定義的規則查看資料。其他使用者看不到資料。
  • 在資料集規則中使用多個欄位時,規則會以 AND 運算子運作。目前不支援 OR 運算子。
  • 僅針對具有 GenerateEmbedUrlForAnonymousUser API 的匿名使用者的內嵌儀表板,支援 RLS 以標籤為基礎的規則。若是針對具有 GenerateEmbedUrlForRegisteredUser API 的已註冊使用者的內嵌式儀表板,請考慮使用者層級的規則。

解決方案

我無法在 QuickSight 內嵌入儀表板中看到匿名使用者的任何資料

如果您針對匿名內嵌儀表板使用以標籤為基礎的規則,則無法查看或修改資料。若要查看資料,必須將以使用者為基礎的 RLS 規則新增至資料集。

在下列範例資料集規則中,John Stiles 只能看到物流部門的資料,而 Martha Rivera 則可以看到資料集中的所有資料。

UserName,Department 
JohnStiles,Logistics 
MarthaRivera,

注意:您可以在資料集上套用以標籤為基礎的規則和以使用者為基礎的 RLS 規則。

受限使用者仍然可以看到所有資料

如果資料集包含太多規則,即使您已成功套用 RLS,受限使用者仍然可以看到所有資料。若要解決此問題,請確定您的資料集只包含 999 個或更少規則。如果您依 UserName 來限制使用者,且資料集規則中的使用者數量超過 999 個,請建立 QuickSight 群組。將使用者新增至群組,並在資料集規則中使用 GroupName,而非 UserName

不受限使用者看不到任何資料

以下是不受限使用者無法看到資料的可能原因:

  • 使用者在資料集規則中不存在。檢查資料集規則,確認所有預期使用者都在該規則中列出。
  • UserNameGroupName 與 QuickSight 中的使用者或群組不相符。從資料集規則中檢查 UserNameGroupName,以確認其與 QuickSight 中的使用者或群組相符。

在您套用 RLS 時,您會收到錯誤碼 DatasetRulesInvalidColType

在您使用 RLS 作為日期或數值欄位時,則會發生 DatasetRulesInvalidColType 錯誤。

檢查用於評估資料集規則中 RLS 的欄位,以確認資料類型是否為字串。您還可以透過編輯資料集,在 QuickSight 中將數值欄位轉換為字串

在您建立分析時,您會收到錯誤碼 DatasetRulesUserDenied

當使用者不在資料集規則中時,則會發生此 DataRulesUserDenied 錯誤。若要解決此錯誤,請將使用者新增至資料集規則,然後重新整理資料集