Package org.apache.iceberg.gcp
Class GcpKeyManagementClient
java.lang.Object
org.apache.iceberg.gcp.GcpKeyManagementClient
- All Implemented Interfaces:
- Closeable,- Serializable,- AutoCloseable,- KeyManagementClient
Key management client implementation that uses Google Cloud Key Management. To be used for
 encrypting/decrypting keys with a KMS-managed master key (by referencing its key ID)
 
Uses GcpKeyManagementClient.ByteStringShim to ensure this class works with and without iceberg-gcp-bundle.
 Since the bundle relocates ByteString, all related methods need to be
 loaded dynamically. During runtime if the relocated class is observed, it will be preferred over
 the original one.
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from interface org.apache.iceberg.encryption.KeyManagementClientKeyManagementClient.KeyGenerationResult
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidclose()Close KMS Client to release underlying resources, this could be triggered in different threads when KmsClient is shared by multiple encryption managers.voidinitialize(Map<String, String> properties) Initialize the KMS client with given properties.unwrapKey(ByteBuffer wrappedKey, String wrappingKeyId) Unwrap a secret key, using a wrapping/master key which is stored in KMS and referenced by an ID.wrapKey(ByteBuffer key, String wrappingKeyId) Wrap a secret key, using a wrapping/master key which is stored in KMS and referenced by an ID.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.iceberg.encryption.KeyManagementClientgenerateKey, supportsKeyGeneration
- 
Constructor Details- 
GcpKeyManagementClientpublic GcpKeyManagementClient()
 
- 
- 
Method Details- 
initializeDescription copied from interface:KeyManagementClientInitialize the KMS client with given properties.- Specified by:
- initializein interface- KeyManagementClient
- Parameters:
- properties- kms client properties
 
- 
wrapKeyDescription copied from interface:KeyManagementClientWrap a secret key, using a wrapping/master key which is stored in KMS and referenced by an ID. Wrapping means encryption of the secret key with the master key, and adding optional KMS-specific metadata that allows the KMS to decrypt the secret key in an unwrapping call.- Specified by:
- wrapKeyin interface- KeyManagementClient
- Parameters:
- key- a secret key being wrapped
- wrappingKeyId- a key ID that represents a wrapping key stored in KMS
- Returns:
- wrapped key material
 
- 
unwrapKeyDescription copied from interface:KeyManagementClientUnwrap a secret key, using a wrapping/master key which is stored in KMS and referenced by an ID.- Specified by:
- unwrapKeyin interface- KeyManagementClient
- Parameters:
- wrappedKey- wrapped key material (encrypted key and optional KMS metadata, returned by the wrapKey method)
- wrappingKeyId- a key ID that represents a wrapping key stored in KMS
- Returns:
- raw key bytes
 
- 
closepublic void close()Description copied from interface:KeyManagementClientClose KMS Client to release underlying resources, this could be triggered in different threads when KmsClient is shared by multiple encryption managers.- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Specified by:
- closein interface- KeyManagementClient
 
 
-