Skip to main content

Service identities

The Service identities screen lets you register the SPIFFE identities that the workloads use for mTLS authentication, give them roles and delete them. Portal path: /admin/service-identities. It is used by the tenant administrators (tenant_admin) and the security officers (security_officer); every member of the tenant reads the list.

What the screen shows​

A Service identities table with Refresh and New identity:

ColumnContent
NameName of the identity.
SPIFFE idSPIFFE identifier of the workload, for example spiffe://eai.local/ns/agents/sa/worker.
RolesRoles granted to the workload.
CreatedCreation date.

The list is read in one call and sorted by name. Empty state: No service identity, "Register a SPIFFE id for a workload."

Actions​

Button or actionWhat it doesAPI callRoles
Opening the screen, RefreshReads the service identities.GET /v1/service-identitiesMember of the tenant
New identity then CreateForm Name (required), SPIFFE id (required, spiffe://<trust-domain>/<path>), Roles (list; suggestions platform_admin, tenant_admin, security_officer, finops, developer, auditor, agent, viewer). Clearance internal.POST /v1/service-identitiestenant_admin, security_officer
DeleteDestructive confirmation with the impact, then deletion.DELETE /v1/service-identities/{id} (impact: GET /v1/lineage/graph)tenant_admin, security_officer

Roles​

From services/control-plane/src/eai/domains/identity/__init__.py: reading needs a principal inside a tenant; creation and deletion require tenant_admin or security_officer (platform_admin always passes). A security_officer without an administrator role cannot give a role they do not hold, and only a platform_admin gives platform_admin.

Typical tasks​

Register a worker workload​

  1. Open the form. Button New identity. Expected result: the side form. If it fails: forbidden at submit time when you are neither tenant_admin nor security_officer.
  2. Fill the SPIFFE id and the roles. Name: agents-worker; SPIFFE id: spiffe://eai.local/ns/agents/sa/worker (the identity issued to the workload); Roles: agent. Then Create. The mTLS certificate of the workload is then mapped to these roles. Expected result: the toast Created and the new line. If it fails: a validation error when the identifier does not start with spiffe://; conflict (HTTP 409) when the SPIFFE id is already registered.

Remove a workload that no longer exists​

  1. Delete the identity. Row menu > Delete, read the impact, confirm. Expected result: the line disappears and the workload can no longer authenticate with this identity. If it fails: not_found when it was already deleted.

Troubleshooting​

SymptomCauseFix
Validation error on SPIFFE idThe value does not match spiffe://<trust-domain>/<path>.Type the full SPIFFE identifier.
conflict (HTTP 409)This SPIFFE id is already registered in the tenant.Reuse the existing identity or delete it first.
forbidden (HTTP 403) with required_rolesYour role cannot manage service identities, or you give a role you do not hold.Ask a tenant_admin.
not_found (HTTP 404) on DeleteThe identity no longer exists.Click Refresh.
tenant_required (HTTP 403)The session does not act inside a tenant.Sign in with an account of the tenant.