Delve into the security mechanisms that protect federated secret access.
esi-cli
or another ESE instance) prepares to request a secret from the Federation Server./secretstore/...
or /generators/...
).Authorization: Bearer <token>
HTTP header.{"ca.crt": "<base64_encoded_ca_cert>"}
.issuer
claim from the received JWT. Using this issuer URL and the provided client ca.crt
, the Federation Server constructs the JWKS (JSON Web Key Set) URI for the client cluster. The ca.crt
is crucial for the Federation Server to trust the client cluster’s OIDC discovery endpoint (where the JWKS is published).issuer
(e.g., https://kubernetes.default.svc.cluster.local
of the client) and subject
(e.g., system:serviceaccount:client-namespace:client-sa-name
) claims from the validated token.Authorization
CR: The server searches for Authorization
Custom Resources defined on its own cluster.
Authorization
CR where spec.subject.issuer
and spec.subject.subject
exactly match the claims from the client’s token.KubernetesFederation
Link: It checks that the matched Authorization
CR’s spec.federationRef.name
points to a valid KubernetesFederation
CR. The url
in this KubernetesFederation
CR should correspond to the client cluster whose JWKS URI was used for token validation. This ensures the authorization rule is indeed for the authenticated cluster.Authorization
CR is found, the server checks if the resource requested by the client (e.g., a specific ClusterSecretStore
name or a Generator
name/kind/namespace) is listed in the allowedClusterSecretStores
or allowedGenerators
sections of that Authorization
CR.Authorization
CR is found, or if the requested resource is not permitted, the request is rejected (Authorization Failed).ClusterSecretStore
or to execute the permitted Generator
(using its own credentials to access backend systems like Vault, GCP SM, etc.).esi-cli
injects it into the environment or files).