constellation/keyservice
renovate[bot] fe96153507
deps: update bazel (modules) (#3304)
* deps: update bazel (modules)
* Set std=c++14
* deps: tidy all modules

---------

Signed-off-by: Daniel Weiße <dw@edgeless.systems>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Weiße <dw@edgeless.systems>
Co-authored-by: edgelessci <edgelessci@users.noreply.github.com>
Co-authored-by: Markus Rudy <mr@edgeless.systems>
2024-08-09 11:00:22 +02:00
..
cmd deps: convert zap to slog (#2825) 2024-02-08 14:20:01 +00:00
internal/server bazel: update BUILD files for rules_go bzlmod migration 2024-05-23 09:48:04 +02:00
keyserviceproto deps: update bazel (modules) (#3304) 2024-08-09 11:00:22 +02:00
README.md dev-docs: Go package docs (#958) 2023-01-19 15:57:50 +01:00

KeyService

The KeyService is one of Constellation's Kubernetes components, responsible for distributing keys and secrets to other services. This includes the JoinService, which contacts the KeyService to derive state disk keys and measurement secrets for newly-joining, and rejoining nodes, and Constellation's CSI drivers, which contact the KeyService for disk encryption keys.

The service is not exposed outside the cluster, and should be kept for internal usage only.

gRPC API

Keys can be requested through simple gRPC API based on an ID and key length.

Backends

The KeyService supports multiple backends to store keys and manage crypto operations. The default option holds a master secret in memory. Keys are derived on demand from this secret, and not stored anywhere. Other backends make use of external Key Management Systems (KMS) for key derivation and securing a master secret. When using an external KMS backend, encrypted keys are stored in cloud buckets.