Supported versions:
Unsupported versions:
By default, the following data is stored encrypted in the hybrid runtime plane:
Data encryption does not require any special configuration on your part. However, if for some reason you want to use your own encryption keys (replacing the default ones) you can do so, as explained in this topic.
Apigee hybrid encryption keys have scope. For example, KMS keys have organization scope. This means that the key is used to encrypt KMS data for the entire organization. The following table lists the scope for each type of key:
| Encryption key | Scope |
|---|---|
| Contract | Organization only |
| KMS | Organization only |
| KVM |
Organization or environment
If a KVM policy
specifies |
| Cache | Environment only |
By default, Apigee hybrid provides a set of Base64-encoded keys that are used to encrypt contract, KVM, KMS, and cache data. The Apigee hybrid installer stores the keys in the runtime plane as Kubernetes Secrets, and uses them to encrypt your data with AES-128 standard encryption. The keys are under your control; the hybrid management plane is never aware of them at any time.
The default keys are applied to all new Apigee hybrid components when you create them.
Although not required, you can change any of the default encryption keys if you wish. To replace one or more default keys, follow these steps:
defaults:
org:
kmsEncryptionKey: base64-encoded-key
kvmEncryptionKey: base64-encoded-key
contractEncryptionKey: base64-encoded-key
env:
kvmEncryptionKey: base64-encoded-key
cacheEncryptionKey: base64-encoded-keydefaults:
org:
kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
env:
kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="You can override the keys for the org or specific envs named in your overrides file. When you create the components, keys you specify for the org or individual envs will be override the defaults.
org:YOUR_ORG_NAME kmsEncryptionKey: base64-encoded-key kvmEncryptionKey: base64-encoded-key contractEncryptionKey: base64-encoded-key envs - name: ENV_NAME kvmEncryptionKey: base64-encoded-key kmsEncryptionKey: base64-encoded-key cacheEncryptionKey: base64-encoded-key - name: 2ND_ENV_NAME kvmEncryptionKey: base64-encoded-key kmsEncryptionKey: base64-encoded-key cacheEncryptionKey: base64-encoded-key
org:hybrid-org
kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
envs:
- name: prod
kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
envs:
- name: test
kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
helm upgrade ENV_NAME apigee-env/ \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f OVERRIDES_FILE.yaml
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
helm upgrade ENV_NAME apigee-env/ \ --namespace apigee \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE.yaml
If you were to remove the encryption keys in your overrides file the first time you install Apigee hybrid, you would effectively disable encryption and values would be stored unencrypted. If at a later time you enable encryption by providing keys, exiting data remains unencrypted; however, any future data that is added will be encrypted. The system will continue working normally with the unencrypted data and the new encrypted data.
Also, note that you cannot later change the encryption keys once the runtime data is encrypted.
A properly formatted Base-64-encoded key is required for KVM, KMS, and cache encryption. The key used for any of these purposes must be Base-64 encoded from a string that is 16, 24, or 32 bytes long, as explained below:
The following example command generates a suitable, randomly generated, 32 character, Base64-encoded string:
head -c 32 /dev/random | openssl base64
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-06-09 UTC.