This Helm chart will deploy Virtru’s key management server for Google Client Side Encryption. You can read this documentation on Virtru’s support site here:
virtru
These are the requirements before getting started with this chart:
kubectl
To use Google’s CSE service, you must have a 3rd party identity provider configured to authenticate users to the CSE service. Documentation on Google’s requirements can be found here.
Virtru’s KMS for Google CSE runs on a secure connection from Google to the service. The certificates, for this service, will be mounted into the running container. When filling out the values.yaml
file in the section below, you will need the private key and certificate chain available to you.
values.yaml
fileThis section will detail potential changes that you will need to make to your values.yaml
file.
appConfig
jwksAuthnIssuers
- A base-64 encoded map of accepted Authentication issuer ids (from the authentication JWT) to the URL where the issuer publishes its JSON Web Keyset. This is dictated via the IDP. In the example provided it is Google OAuth
Example command to base-64 encode:
echo '{ "https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs" }' | base64
jwksAuthzIssuers
- A base-64 encoded map of accepted Authorization issuer ids (from the authorization JWT) to the URL where the issuer publishes its JSON Web Keyset. This is dictated by Google and is filled out by defaultjwtAud
- A base-64 encoded JSON map of JWT audiences for authorization and authentication. The authz
audience, which is sent by Google, will always be cse-authorization
, but the authn
audience will be configured through the customer’s IDP. In the example provided the authn
audience is Google OAuth
Example command to base-64 encode:
echo '{ "authn": "00000000000000000.apps.googleusercontent.com", "authz":"cse-authorization" }' | base64
jwtKaclsUrl
- URL for your CSE service. This should match the SSL certificate provisioned in the previous stepsuseCks
- Default false. Switch to true if using a Virtru CKS in tandem with your CSE KMScksUrl
- Leave as default if not using CKS. If using CKS, this is the FQDN of your running CKS service (example: https://cks.example.com
)driveLabels
- Leave as default if not utilizing the Drive Labels integration. See https://support.virtru.com/hc/en-us/articles/20411711509527-Reference-Virtru-Private-Keystore-for-Google-Workspace-CSE-Configuring-Drive-Labels-with-CSE
for more detailsappSecrets
In the appSecrets
section, the hmac
, secretKey
, and cksHmac
(if using CKS) sections must be the plaintext values for your secrets, while in ssl
you must base-64 encode the private key and certificate.
hmac.tokenId
- Provided by Virtruhmac.tokenSecret
- Provided by VirtrusecretKey
- A named, base-64 encoded key for CSE encryption. Required if not using CKS. Format is mykeyname:base64encodedkey
. See example below:
testkey
, your secretKey
value should be mysupersecretkey:dGVzdGtleQo=
, where dGVzdGtleQo=
is testkey
base-64 encoded.Example command to get a randomly generated key into a local TXT file:
echo "my-key-name:$(openssl rand 32 | base64)" 2>&1 | tee cseSecret.txt
ssl.privateKey
- Your certificate’s private key, base-64 encodedssl.certificate
- Your certificate’s cert chain, base-64 encodedcksHmac.tokenId
- The tokenId
from your CKS configuration (only used if useCks
is set to true)cksHmac.tokenSecret
- The encryptedToken secret
from your CKS configuration (only used if useCks
is set to true)googleApplicationCredentials
- Leave as default values. See https://support.virtru.com/hc/en-us/articles/20411711509527-Reference-Virtru-Private-Keystore-for-Google-Workspace-CSE-Configuring-Drive-Labels-with-CSE
for more details.volumes
Uncomment the default values that are prepopulated if utilizing the Drive Labels integration (See https://support.virtru.com/hc/en-us/articles/20411711509527-Reference-Virtru-Private-Keystore-for-Google-Workspace-CSE-Configuring-Drive-Labels-with-CSE)
Use a standard helm install command to deploy your CSE. An example command is listed below:
helm install -n virtru -f ./values.yaml cse ./ --create-namespace
Refer to standard documentation for CSE configuration in Google Admin. You can get your endpoint for your DNS record by running the following command:
kubectl -n virtru get services
And there should be public endpoints you can use when relaying traffic from Google to your new CSE.