Skip to content

CMK ​

CMK (Customer-Managed Keys) is the OpenKCM component for governing customer keys. Tenants use it to manage their keys in their own keystores, link the keys to the systems that use them, and control who may do what. CMK consists of six services, the optional Checker, plugins and shared libraries. For its cryptographic key operations, CMK requires Krypton, which it drives through the CMK-2-Krypton Bridge.

This section is for everyone who works with CMK: the customers who manage their keys in it, the teams who connect their cloud services to it, and the operators who run it.

Start here ​

You want to…Read
Manage keys, key configurations, systems or approvals in CMKManage your keys
Give users access to a tenant, or understand what each role may doSign-in, groups and roles
Automate CMK through its REST APICMK API
Onboard a customer: register the tenant for its region, connect its identity provider, block or terminate itConnect a regional tenant
Make your cloud service receive key changes from CMKConnect a regional system
Plan and install a CMK deploymentDeployment planning, then Install the Registry and Install a regional deployment
Find the Helm charts and container imagesReleases
Run, upgrade and troubleshoot CMKOperations
Review how CMK protects access before going liveSecurity architecture and the hardening checklist

CMK services ​

CMK runs as one central deployment with the Registry, and one regional deployment per CMK region with the other services. Every tenant is registered in the Registry with a region and is served by that region's deployment. See Deployment planning.

ServiceDeploymentRoleRepository
RegistryCentralRegisters all tenants and their systems, and sends each tenant's jobs to the CMK of its regionregistry
CMK serviceRegionalGovernance control plane for the customer keys of the region's tenants: REST API, workflows, propagation to systemscmk
CMK UIRegionalWeb console for CMKcmk-ui
ExtAuthZRegionalAuthenticates every API request, evaluates Cedar policies, signs client dataextauthz
Session ManagerRegionalOIDC login, browser sessions and per-tenant identity provider trustsession-manager
CMK-2-Krypton BridgeRegionalTurns CMK's key decisions into Krypton operations; CMK requires Krypton for its cryptographic keyscmk-krypton-bridge
CheckerOptional, per clusterReports the health of the services, the cluster and the service mesh, and the versions of the serviceschecker

How the services work together ​

  • The CMK UI runs in the browser. Users sign in through Session Manager, which runs the OpenID Connect flow with the tenant's identity provider.
  • Every API call passes Envoy Gateway, which asks ExtAuthZ for a decision. ExtAuthZ checks the session, token or client certificate and adds signed client data to the request.
  • CMK verifies the client data, authorizes the call and performs it. Key operations run in the keystores through plugins.
  • The Registry, in the central deployment, registers every tenant with its region, and the systems of the cloud services. It sends each tenant's jobs, such as provisioning, blocking or its identity provider, to the CMK of the tenant's region. See Connect a regional tenant.
  • CMK propagates key and system changes to the systems of its tenants.
  • The CMK-2-Krypton Bridge receives CMK's key tasks and creates and updates the corresponding keys in Krypton, which CMK requires for its cryptographic key operations.

Supporting building blocks ​

Building blockPurposeRepository
PluginsKeystore and identity management integrationsplugin-sdk, keystore-plugins, identity-management-plugins
OrbitalLibrary for jobs and tasks between servicesorbital
common-sdkConfiguration, logging, audit events, OIDC and client data helperscommon-sdk
api-sdkgRPC API definitions shared between servicesapi-sdk

Security ​

The security section explains how requests are authenticated and authorized across these services, how to configure them, and which settings to review before going live.

See also ​

EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.