Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate and store a sealed encryption key for snapshots #32841

Merged
merged 4 commits into from
Nov 13, 2024

Conversation

mpolden
Copy link
Member

@mpolden mpolden commented Nov 12, 2024

Depends on internal PR.

This implements the design we discussed. In simplified terms, the config server
generates a unique encryption key for each snapshot. A sealed variant (the
public part) of this key is then stored in ZooKeeper, along with the version
number of the private key used to seal the key. The private key itself is stored
in a TypedSecretStore.

A node/host that satisfies the node filter can request a copy of the shared key,
sealed with a public key presented by the client. The host then unseals this
shared key locally and uses it to encrypt/decrypt snapshot data. While this
doesn't provide any security itself, it provides some other benefits:

  • Data is encrypted and encryption keys are managed independently of the service
    storing the snapshot data
  • The config server enforces access control to snapshots by restricting access
    to the encryption key
  • We avoid storing and passing around a plain-text encryption key across API
    boundaries

@tokle

tokle
tokle previously approved these changes Nov 13, 2024
@mpolden mpolden merged commit 1f2beb8 into master Nov 13, 2024
3 checks passed
@mpolden mpolden deleted the mpolden/snapshot-encryption branch November 13, 2024 13:40
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