Class ConfigureWithoutGrantMonitor
- All Implemented Interfaces:
ExtensionPoint,ModelObject,SearchableModelObject,SearchItem,org.kohsuke.stapler.StaplerProxy
The scan uses the strategy's root ACL, which carries no grant scope (S-13), so what it finds is always a native entry, never an open grant. It is also the scan's limit (S-07): per-item native permissions (matrix-auth job, folder and agent properties, role-strategy item roles) are not visible on the root ACL and are not detected. The monitor is best effort, not an inventory.
Candidate users come from User.getAll() plus, for matrix-family strategies, the
strategy's own granted sids (read reflectively — matrix-auth is an optional dependency).
The scan is capped at 100 candidates and every impersonation failure is
swallowed: this is a best-effort warning, never an enforcement point.
S-05: isActivated() is evaluated by Jenkins on (almost) every admin page render,
and the candidate scan performs up to 100 synchronous security-realm
lookups (remote round-trips on LDAP/AD). The scan result is therefore cached per strategy
strategy instance with a 5L-minute TTL (monotonic System.nanoTime()):
a strategy swap recomputes immediately (identity key), a change-control toggle invalidates
explicitly, and permission edits inside the same strategy show up within the TTL. The cheap
pre-checks (switch off, wrong strategy) are never cached.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classOne user or group that holds Item/Configure, Item/Create or Item/Delete from the authorization strategy itself, outside any grant (e2e-03 DEF-07).Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson -
Field Summary
Fields inherited from class hudson.model.AdministrativeMonitor
id -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionThe groups ofgetStandingHolders()(includingauthenticated).Every user and group found holding a standing change permission (users first, then groups), from the same TTL-cached scan asisActivated().The users ofgetStandingHolders().static voidDrops the cached scan (called on a change-control toggle; next render recomputes).booleanbooleanWhether the installed authorization strategy is not a Batch Control strategy, so grants can never apply (D-35a).Methods inherited from class hudson.model.AdministrativeMonitor
all, checkRequiredPermission, disable, doDisable, getRequiredPermission, getSearchUrl, getTarget, getUrl, hasPermissionToDisplay, hasRequiredPermission, isActivationFake, isEnabled, isSecurityMethods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError, sendError, sendError, sendErrorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface hudson.search.SearchItem
getSearchGroup, getSearchIcon
-
Constructor Details
-
ConfigureWithoutGrantMonitor
public ConfigureWithoutGrantMonitor()
-
-
Method Details
-
invalidateCache
public static void invalidateCache()Drops the cached scan (called on a change-control toggle; next render recomputes). -
getDisplayName
- Specified by:
getDisplayNamein interfaceModelObject- Overrides:
getDisplayNamein classAdministrativeMonitor
-
isActivated
public boolean isActivated()- Specified by:
isActivatedin classAdministrativeMonitor
-
isStrategyMissing
public boolean isStrategyMissing()Whether the installed authorization strategy is not a Batch Control strategy, so grants can never apply (D-35a). Whentruethe holder lists are empty: there is no grant layer to bypass, and the message should name the strategy instead. -
getStandingHolders
Every user and group found holding a standing change permission (users first, then groups), from the same TTL-cached scan asisActivated(). Empty when change control is off or the strategy is not a Batch Control strategy. Best effort: per-item entries are not seen. -
getStandingUsers
The users ofgetStandingHolders(). -
getStandingGroups
The groups ofgetStandingHolders()(includingauthenticated).
-