Environment:
- QuickSight Enterprise Edition
- Region: us-east-1
- Direct-connect dataset with user-based RLS
Issue:
When a user has both explicit permission rows AND a NULL (all-access) row in the same RLS permissions dataset, the behavior is inconsistent between Dashboard and API:
| Access Method | NULL Row Behavior | Result |
|---|---|---|
| Dashboard (UI) | User sees all data | |
| query_dataset API (via Amazon Q / Quick Desktop) | User only sees data matching explicit rows |
RLS Configuration (simplified):
username | rls_territory | rls_other_cols
------------|----------------------------------|---------------
user_a | TERRITORY-A, TERRITORY-B, … | NULL
user_a | TERRITORY-C, TERRITORY-D, … | NULL
user_a | TERRITORY-E, TERRITORY-F, … | NULL
user_a | NULL | NULL ← should grant full access
“If you add a rule for a user or group and leave all other columns with no value (NULL), you grant them access to all the data.”
Expected behavior: The NULL row should grant full access regardless of other rows — both in Dashboard and API.
Actual behavior: Dashboard correctly interprets the NULL row. API (query_dataset) only applies the explicit territory rows, ignoring the NULL row entirely.
Reproducible: Yes — confirmed with 2 different users who have the same RLS pattern. Both see full data in Dashboard but restricted data via API.
Workaround: Remove all explicit rows and keep only the NULL row — then both Dashboard and API work correctly. However, this workaround requires restructuring the RLS dataset, which may not always be feasible.
Questions:
- Is this a known limitation of the query_dataset API vs Dashboard rendering?
- Is the expected behavior that NULL row + explicit rows should be evaluated as OR (union) — i.e., NULL wins?
- Is there a best practice for granting full access to admin users who also need explicit rows for other systems that share the same RLS dataset?
Thanks for any guidance!