Skip to main content

SPIFFE workload identity

Admits SPIFFE-identified workloads from trusted domains only, and grants each one entitlements by its SPIFFE path.

  • Control id: spiffe_policy
  • Shape: grant. Segment bindings do not reach this control, because its Rego does not read settings through pbac.segments.settings.
  • Entry points: token
  • Phases: token_exchange

Policy data​

pbac.operator.controls.spiffe_policy​

  • Role: operator
  • Written by: operator
  • Schema: src/main/resources/schemas/operator-spiffe-policy.v1.json
SettingTypeDefault
trust_domainsarray of stringnone in the schema
path_grantsobjectnone in the schema

Reads​

  • context.client.registration_type
  • context.actor.spiffe.trust_domain

Emits​

  • deny
  • reason
  • granted_resources
  • expires_in_override
  • jit_single_use

Reason codes​

CodeCategoryEntry pointSetting
spiffe_untrusted_domaincontroltokenpbac.operator.controls.spiffe_policy#trust_domains
spiffe_no_path_grantscontroltokenpbac.operator.controls.spiffe_policy#path_grants

Implementation​

KindReferenceFilesRole
rego_packagepbac.controls.spiffeopa/policies/pbac/controls/spiffe.regodecides
rego_packageoauth.spiffeopa/policies/oauth/spiffe.regodecides
rego_fragmentoauth.client_entitlementsopa/policies/oauth/client_entitlements.regodecides