mikebridge commented on code in PR #44093:
URL: https://github.com/apache/superset/pull/44093#discussion_r4007304548


##########
superset/security/manager.py:
##########
@@ -4967,7 +4980,9 @@ def member_datasource_accessible() -> bool:
                             return True
                     return False
 
-                if not member_slices or member_datasource_accessible():
+                if dashboard.published and (

Review Comment:
   Accepted, disclosed in 9c4de6007c — the release note now names runtime 
breakage explicitly: an already-scheduled report against an unpublished 
no-viewers dashboard whose execute-as principal is a datasource-entitled 
non-editor fails on its next run, with the operator audit + remediation options 
(publish, add the principal to viewers, or re-own the schedule). The tighten 
itself stands: execution reading the dashboard is the same exposure the gate 
closes.



##########
superset/security/manager.py:
##########
@@ -4967,7 +4980,9 @@ def member_datasource_accessible() -> bool:
                             return True
                     return False
 
-                if not member_slices or member_datasource_accessible():
+                if dashboard.published and (
+                    not member_slices or member_datasource_accessible()

Review Comment:
   Confirmed by design and left open deliberately: `published` implies broad 
intra-instance visibility (any authenticated user), and a published 
markdown-only dashboard carrying readable content is exactly that contract — 
the pre-existing comment marks it intentional and this PR narrows the fallback 
to published-only precisely so this admit is bounded by the publish decision. 
No change.



##########
UPDATING.md:
##########
@@ -42,6 +42,10 @@ Resample projections remain capped by `MAX_RESAMPLE_ROWS` 
(default
 year, …) that previously skipped the check because they have no fixed
 `Timedelta`.
 
+### Dashboard read fallback requires a published dashboard
+
+The object-read gate's datasource-based fallback — including the admit for 
dashboards with no charts — now applies to **published** dashboards only, 
matching the list filter's fallback, which was already published-only. 
Previously an *unpublished* dashboard with an empty viewers list was readable 
by any authenticated user who could access one member datasource (or by every 
authenticated user, when it had no charts — including markdown-only 
dashboards), even though it appeared in no default list; and removing the last 
viewer subject from a dashboard silently widened access, because the viewer 
branch is published-gated while the fallback was not. Owners (folded into 
editors by the subjects model), editors — including resolver-granted editors — 
and admins are unaffected: they are admitted before the fallback regardless of 
published state. Everything consuming the gate inherits the tightening; most 
visibly, a datasource-entitled non-editor can no longer create or validate a re
 port schedule against an unpublished no-viewers dashboard.

Review Comment:
   Fixed in 9c4de6007c — the parity claim is now scoped to the datasource 
branch only, and the note states the list filter still never yields chart-less 
dashboards to ordinary users (the deliberate asymmetry narrows but persists).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to