Interface S2SDecisionSource
- All Known Implementing Classes:
S2SConnectionLevelDecisionSource, S2SServiceLevelDecisionSource
public interface S2SDecisionSource
Pluggable decision source for the S2S AuthZ provider.
Two implementations exist: S2SConnectionLevelDecisionSource (the L2
deny-overlay GATE, evaluated on the cert SPIFFE-ID) and
S2SServiceLevelDecisionSource (the L3b VERDICT, grant-capable, evaluated on
the system-LAT sub SPIFFE-ID). Both are the integration point with the SRJ
Cedar library.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enumstatic final classOutcome ofevaluate(EvaluationInput), widened beyond the tri-stateS2SDecisionSource.Decisionwith the diagnostic detail the observability layer needs: anoutcomelabel (one ofallow/deny/continue/abstain, layer-specific — seeS2SConnectionLevelDecisionSource/S2SServiceLevelDecisionSource), and the SRJDecision's determining policy IDs (reasons) andpassName, when the underlying SRJ authorizer actually ran (both are empty when no authorizer is installed, i.e. -
Method Summary
Modifier and TypeMethodDescriptionevaluate(EvaluationInput input) default voidreload()Dynamic-reload lifecycle hook invoked on every config reload, AFTER the backing store has swapped in the new snapshot.default voidstart()Cold-start lifecycle hook invoked once at broker/controller startup AFTER the config snapshot has been loaded into any backing store.
-
Method Details
-
evaluate
-
start
default void start()Cold-start lifecycle hook invoked once at broker/controller startup AFTER the config snapshot has been loaded into any backing store. Implementations pre-build/validate state (e.g., hand policies to an underlying evaluator).Fail-closed: a present-but-unbuildable policy set MUST throw here so broker startup fails. A fresh process has no last-good state to fall back on, so coming up with enforcement silently disabled/degraded is not an option. Default is no-op.
-
reload
default void reload()Dynamic-reload lifecycle hook invoked on every config reload, AFTER the backing store has swapped in the new snapshot. Unlikestart(), a build failure here MUST NOT throw: the broker is already serving, so it keeps the last-good state in place rather than being taken down by a bad live update (whichvalidateReconfiguration()should have rejected upstream anyway). Default is no-op.
-