Skip to content

feat(encryption/kms): Add AWS KMS client - #3173

Open
zakariya-s wants to merge 3 commits into
apache:mainfrom
zakariya-s:zstasa/aws-kms-cse
Open

feat(encryption/kms): Add AWS KMS client#3173
zakariya-s wants to merge 3 commits into
apache:mainfrom
zakariya-s:zstasa/aws-kms-cse

Conversation

@zakariya-s

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included in this PR?

Adds a new iceberg-kms-aws crate implementing Iceberg client-side encryption key management with AWS KMS.

The KMS client is created once from the application-supplied catalog properties and shared across the catalog, matching the existing KmsClientFactory lifecycle.

Are these changes tested?

Yes.

The AWS SDK mock framework was also used to test AWS calls.

AI Disclosure

LLMs were used to assist, but the code has been validated by hand.

Comment thread crates/kms/aws/src/config.rs Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if this should be a whole new crate or just a feature flag, opendal backends we just feature flag WDYT?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I'm not sure either, I considered both but for opendal the backends all share the same adapter while the KMS implementations wouldn't have the same. Java Iceberg also has separate modules for AWS, etc. Having them in separate crates also keeps SDK deps isolated. I can see three potential ways to organise this:

  • Keep it in the core crate and use feature flags
  • Have separate crates for iceberg-kms-aws, etc.
  • Have one iceberg-kms crate with feature flags for AWS, etc.

I'm happy with any of these approaches honestly

@mbutrovich

mbutrovich commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

How does this compare to #2466?

cc @hsiang-c

@zakariya-s

Copy link
Copy Markdown
Contributor Author

How does this compare to #2466?

cc @hsiang-c

It implements the same but the previous PR has been inactive for a few months now. This also addresses some of @xanderbailey's comments.

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.

3 participants