Google Cloud External Key Manager (Cloud EKM) Integration
KMES Series 3 Integration Guide
KMES Series 3 Integration Guide
The Google Cloud EKM / KMES Series 3 integration provides several benefits:
In all cases, the key resides on the KMES Series 3, and is never sent to Google.
Please refer to Google’s EKM documentation for the full list of services that support CMEK with Cloud EKM.
This section provides a broad overview of how Cloud EKM works with an external key.
Within Google Cloud, the key appears alongside your other Cloud KMS and Cloud HSM keys, with protection level “EXTERNAL” or “EXTERNAL_VPC”. The Cloud EKM key and the external key management partner key work together to protect your data. The external key is never exposed to Google. The following diagram shows how Cloud KMS fits into the key management model. This diagram uses Compute Engine and BigQuery as two examples.
Important: Both the Cloud EKM key version and the external key are required for each encryption and decryption request. If you lose access to either key, your data cannot be recovered. It is not possible to recreate an identical Cloud EKM key version by using the same external key URI or key path.
Please refer to Google’s EKM documentation for information about the considerations and restrictions when using Cloud EKM.
The Futurex Certification Process is a rigorous and standardized approach to testing and certifying integrations between third-party applications and Futurex’s HSMs and key management servers (i.e., KMES Series 3). The certification process is designed to ensure that third-party application integrations are fully tested and validated in a lab environment before they are deployed in a production environment. Futurex’s Integration Engineering team implements this process so that customers can have confidence that third-party applications will integrate seamlessly with Futurex’s HSMs and KMES Series 3 devices, and that all operations will result in the expected behavior. The certification process involves several steps, including research, testing, troubleshooting, and certification, and is fully documented in an integration guide for each integration. The full process is outlined below:
Overall, following these steps helps ensure that the integration between the third party application and the Futurex device is fully tested and validated, and that any errors or issues are resolved before the integration is certified as fully supported.
After the Key Ring is created, the browser redirects to the key creation wizard. A portion of which is shown below:
You will return to this dialog in the Google Cloud dashboard after creating a Google Crypto Space on the KMES.
This section covers configurations users must make on the KMES Series 3 for Google EKM to access externally managed keys.
For all of the following sections, you need to be logged in to the KMES application interface with the default Admin identities.
A JSON Web Token (JWT) must be configured to allow Google to authenticate against the KMES using Google’s generated JWT.
Manually managed keys use created keys on the KMES Series 3 to perform cryptographic requests by Google Cloud. The key path can be copied from KMES key settings and combined with the KMES hostname or IP and the System/Host API port number to create a url for accessing the key. The KMES manages key rotation automatically for symmetric keys.
The URL must be entered for every creation and key rotation.
Internet URL format: https://<server ip>:<port>/v0/key-encrypt/external/<key uuid>
VPC key path format: /v0/key-encrypt/external/<key uuid>
The new key will now be listed in the Symmetric Keys tab.
The new key will now be listed in the Asymmetric Keys tab.
Google Crypto Space managed keys allow users to manage key creation, rotation, and destruction of KMESstored keys directly from the Google Cloud dashboard. Both symmetric and asymmetric keys can be created inside key rings.
Note: This feature requires a VPC connection to be configured between Google Cloud and the KMES Series 3. Once configured, Google EKM will only require the Google Crypto Space URL in the KMS Infrastructure menu. Please refer to VPC and KMS Infrastructure setup instructions.
Caution: When changing existing KMS Infrastructure from Manual to Crypto Space, keys will not be able to be rotated if the wrapping key exists outside of the Google Crypto Space. Key rotation period can be set in key settings, but will default to never rotate.
The Google Crypto Space URL is in the following format: /v0/key-encrypt/external/<crypto-space name>
Note: The URL must start with ‘/v0’. Otherwise Google will append it to the returned Crypto Space path resulting in a mismatching URL check.
Regardless of whether you are using Manual or Crypto Space for your Google KMS Infrastructure, follow the steps described in section to create a key in the Google Cloud Key Management dashboard.
Please follow the instructions here to download, install, and configure Google Cloud SDK: https://cloud.google.com/sdk/docs/install
NOTE: Before proceeding with next two steps, ensure the GCP user that is calling the encrypt and decrypt methods has the cloudkms.cryptoKeyVersions.useToEncrypt and cloudkms.cryptoKeyVersions.useToDecrypt permissions on the key used to encrypt or decrypt. One way to permit a user to encrypt or decrypt is to add the user to the roles/cloudkms.cryptoKeyEncrypter, roles/cloudkms.cryptoKeyDecrypter, or roles/cloudkms.cryptoKeyEncrypterDecrypter IAM roles for that key. For more information, see Permissions and Roles.
Run the following gcloud kms command to encrypt a test file using the externally managed key.
gcloud kms encrypt \ --key [key] \ --keyring [key-ring] \ --location [location] \ --plaintext-file [file-with-data-to-encrypt] \ --ciphertext-file [file-to-store-encrypted-data]
Replace [key] with the name of the key to use for encryption. Replace [key-ring] with the name of the key ring where the key is located. Replace [location] with the Cloud KMS location for the key ring. Replace [file-with-data-to-encrypt] and [file-to-store-encrypted-data] with the local file paths for reading the plaintext data and saving the encrypted output.
If the command is successful it will return no output.
Run the following gcloud kms command to decrypt the file that was encrypted in the previous step, using the externally managed key.
gcloud kms decrypt \ --key [key] \ --keyring [key-ring] \ --location [location] \ --ciphertext-file [file-path-with-encrypted-data] \ --plaintext-file [file-path-to-store-plaintext]
Replace [key] with the name of the key to use for decryption. Replace [key-ring] with the name of the key ring where the key is located. Replace [location] with the Cloud KMS location for the key ring. Replace [file-path-with-encrypted-data] and [file-path-to-store-plaintext] with the local file paths for reading the encrypted data and saving the decrypted output.
If the command is successful it will return no output.
View the contents of the plaintext file that was output from this decryption command and confirm that it is identical to the original file that was encrypted. If the two files are identical then it confirms that the externally managed key is successfully performing encryption and decryption operations.
Virtual Private Cloud (VPC) uses a private network to connect directly to a network without the using the public internet. Follow the steps outlined below in the Google Cloud dashboard to set up a VPC connection to the KMES Series 3.
Please refer to Google’s documentation for how to configure a VPC in your Google Cloud account: https://cloud.google.com/vpc/docs/create-modify-vpc-networks
You can use the steps below as an outline:
If you are interested in our solution for Google Cloud EKM, or would like to inquire about a demo, please contact us.