Skip to content

Add extension servers for DEK wrap/unwrap - #290

Merged
pseudomuto merged 1 commit into
mainfrom
extension-servers
Oct 11, 2026
Merged

pseudomuto merged 1 commit into
mainfrom
extension-servers

Conversation

@pseudomuto

@pseudomuto pseudomuto commented Sep 16, 2026 •

Copy link
Copy Markdown
Contributor

An extension server is an operator-run gRPC server implementing
api.kms.v1.EncryptionService (in Temporal Proxy). Essentially it wraps
and unwraps the data encryption keys the proxy seals payloads with. It
is how an operator plugs in a key backend the proxy has no driver for,
such as an on-prem HSM, and mirrors what Temporal Proxy already offers.

Extension servers are declared once at the top level rather than per
cluster connection, so a single KMS backing several connections is
possible. A key policy reaches one through an "extension://"
URI.

Connecting stays lazy, so an unreachable server surfaces on first use
rather than at startup. Nothing constructs these yet, since
NewClusterConnection still ignores EncryptionConfig.

# Sample config
extensionServers:
  - name: hsm
    address: 127.0.0.1:9443
    tls:
      caServerName: hsm.internal

clusterConnections:
  - name: a
    encryption:
      enabled: true
      default:
        uri: extension://hsm/replication
        duration: 1h
        renewBefore: 15m

@pseudomuto
pseudomuto requested a review from a team as a code owner September 16, 2026 17:35
@pseudomuto
pseudomuto force-pushed the extension-servers branch 2 times, most recently from b68c80d to 6a2f3e9 Compare September 17, 2026 13:34
@pseudomuto
pseudomuto added this pull request to stack #304 October 6, 2026 14:28
Comment thread transport/grpcutil/grpc.go Outdated
An extension server is an operator-run gRPC server implementing
api.kms.v1.EncryptionService (in Temporal Proxy). Essentially it wraps
and unwraps the data encryption keys the proxy seals payloads with. It
is how an operator plugs in a key backend the proxy has no driver for,
such as an on-prem HSM, and mirrors what Temporal Proxy already offers.

Extension servers are declared once at the top level rather than per
cluster connection, so a single KMS backing several connections is
possible. A key policy reaches one through an "extension://<server>"
URI.

Connecting stays lazy, so an unreachable server surfaces on first use
rather than at startup. Nothing constructs these yet, since
NewClusterConnection still ignores EncryptionConfig.
@pseudomuto
pseudomuto merged commit 96f280e into main Oct 11, 2026
6 checks passed
@pseudomuto
pseudomuto deleted the extension-servers branch October 11, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants