Skip to content

Add Vault Transit KMS client#14451

Closed
mrendi29 wants to merge 3 commits intoapache:mainfrom
mrendi29:add-vault-transit-kms-client
Closed

Add Vault Transit KMS client#14451
mrendi29 wants to merge 3 commits intoapache:mainfrom
mrendi29:add-vault-transit-kms-client

Conversation

@mrendi29
Copy link

Addresses #14437

We are planning to use HashiCorp Vault Transit engine as our KMS of choice. This is the preliminary client that we are using so far so I thought to contribute this back to the community.

Signed-off-by: Endi Caushi <[email protected]>
@mrendi29
Copy link
Author

cc @ggershinsky

@ggershinsky
Copy link
Contributor

Thanks @mrendi29 . I don't have much experience with the Vault. But from the Iceberg encryption interface pov, this looks good.

awssdk-s3accessgrants = { module = "software.amazon.s3.accessgrants:aws-s3-accessgrants-java-plugin", version.ref = "awssdk-s3accessgrants" }
azuresdk-bom = { module = "com.azure:azure-sdk-bom", version.ref = "azuresdk-bom" }
bson = { module = "org.mongodb:bson", version.ref = "bson-ver"}
bettercloud-vault = { module = "com.bettercloud:vault-java-driver", version.ref = "bettercloud-vault" }
Copy link
Contributor

Choose a reason for hiding this comment

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

I learned before that adding a new dependency also requires adding license information to LICENSE file.

@nandorKollar
Copy link
Contributor

@nastra @amogh-jahagirdar what do you think, how can Iceberg support key management solutions other than the cloud provider's solution? Instead of adopting the key management client implementation itself, should Iceberg instead provide an option to dynamically load (maybe there's already an option like this?) the key management implementation with the parameters?

@nandorKollar
Copy link
Contributor

Okay, never mind, I found the answer, looks like dynamic loading of KeyManagementClient is supported by encryption.kms-impl.

@nandorKollar
Copy link
Contributor

nandorKollar commented Nov 2, 2025

Although the ultimate decision is up to the project PMCs, I personally think that it is probably not a good idea to put this in the core module. Putting it there means that everyone, who uses Iceberg will also take the risk (I refer here mostly to security risks) of the additional dependency required for interaction with HashiCorp vault (not to mention the minimal risk of the client implementation itself), even when they don't need it at all. Other key vault clients are implemented within a cloud provider specific module.

@mrendi29
Copy link
Author

mrendi29 commented Nov 5, 2025

@nandorKollar this makes sense, should i move this into a separate module i.e. hashikorp-vault-kms/ ?

@github-actions
Copy link

github-actions bot commented Dec 6, 2025

This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the [email protected] list. Thank you for your contributions.

@github-actions github-actions bot added the stale label Dec 6, 2025
@github-actions
Copy link

This pull request has been closed due to lack of activity. This is not a judgement on the merit of the PR in any way. It is just a way of keeping the PR queue manageable. If you think that is incorrect, or the pull request requires review, you can revive the PR at any time.

@github-actions github-actions bot closed this Dec 13, 2025
@asdasdruasd
Copy link

mrendi29 This is a great idea for iceberg. It's a a pity the PR has been closed.
Do you know a a way to load your code from Trino using encryption.kms-impl?

@mrendi29
Copy link
Author

@asdasdruasd I just noticed Trino has started working on Iceberg encryption on trinodb/trino#28354 which is really nice. I will be happy to port this over for Trino should that be required once the support for encryption in trino is out.
I also haven't had much time to move this into a cloud provider specific module. Will do that soon when i get a chance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants