De forma predeterminada, los datos siguientes se almacenan encriptados en el plano de entorno de ejecución híbrido:
- Datos del sistema de administración de claves (KMS)
- Datos del mapa de clave-valor (KVM)
- Datos de caché
La encriptación de datos no requiere ninguna configuración especial de tu parte. Sin embargo, si por algún motivo deseas usar tus propias claves de encriptación (y reemplazar las predeterminadas), puedes hacerlo como se explica en este tema.
Alcance de claves de encriptación
Las claves de encriptación para KMS, KVM y la caché tienen permiso. Por ejemplo, las claves de KMS tienen permiso de la organización. Esto significa que la clave se usa para encriptar los datos de KMS de toda la organización. En la siguiente tabla, se muestra el permiso para cada tipo de clave:
Clave de encriptación | Alcance |
---|---|
KMS | Solo en la organización |
KVM |
Organización o entorno
Si una política de KVM especifica el permiso |
Caché | Solo en el entorno |
Información sobre las claves de encriptación predeterminadas
De forma predeterminada, Apigee Hybrid proporciona un conjunto de claves codificadas en Base64 que se usan para encriptar datos de KVM, KMS y de caché. El instalador híbrido de Apigee almacena las claves en el plano de entorno de ejecución como Secrets de Kubernetes y las utiliza para encriptar tus datos con encriptación estándar AES-128. Las claves están bajo tu control; el plano de administración híbrido nunca se encarga de ellas.
Cambia las claves de encriptación predeterminadas
Aunque no es necesario, puedes cambiar cualquiera de las claves de encriptación predeterminadas si lo deseas. Sigue estos pasos para reemplazar una o más claves predeterminadas:
- Copia el siguiente texto en tu archivo de anulación.
Esta configuración te permite cambiar las claves de encriptación de KMS y KVM a nivel de organización, y las claves de encriptación de KVM y caché a nivel de entorno:
defaults: org: kmsEncryptionKey: base64-encoded-key kvmEncryptionKey: base64-encoded-key env: kvmEncryptionKey: base64-encoded-key cacheEncryptionKey: base64-encoded-key
- Genera una clave nueva para cada clave que desees reemplazar. Cada clave debe ser una string codificada en Base64 con exactamente 16, 24 o 32 bytes. Consulta también Cómo crear una clave codificada.
- Reemplaza las claves predeterminadas por las nuevas. En este ejemplo, todas las claves predeterminadas se reemplazan por las siguientes claves:
defaults: org: kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c=" kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU=" env: kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE=" cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
- Aplica el archivo de anulación al clúster de la siguiente manera:
- Si cambias las claves de KVM o Cache, actualiza solo el entorno:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name
- Si cambias las claves de KMS, actualiza la organización y el entorno:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name --org org_name
- Si cambias las claves de KVM o Cache, actualiza solo el entorno:
Una nota sobre la retrocompatibilidad
Si quitaras las claves de encriptación del archivo de anulación la primera vez que instalas Apigee Hybrid, podrías inhabilitar la encriptación y los valores se almacenarán sin encriptación. Si más adelante habilitas la encriptación cuando proporcionas claves, la salida de datos permanece sin encriptar. Sin embargo, todos los datos futuros que se agreguen se encriptarán. El sistema seguirá funcionando con normalidad con los datos sin encriptar y los datos encriptados nuevos.
Además, ten en cuenta que no podrás cambiar las claves de encriptación una vez que se encripten los datos del entorno de ejecución.
Cómo crear una clave encriptada
Se requiere una clave codificada en Base64 con el formato adecuado para la encriptación KVM, KMS y de caché. La clave que se use para estos propósitos debe estar codificada en Base64 de una string de 16, 24, o 32 bytes, como se explica en los siguientes pasos:
Los siguientes comandos de ejemplo generan strings adecuadas, codificadas en Base64, de 32 caracteres y generadas de forma aleatoria, que no incluyen caracteres que no se pueden imprimir:
LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)\\-+= < /dev/urandom | head -c 32 | openssl base64 PSFvX0BPc1Z2NVklcXdxcF8xR0N4MV4temFveStITU4=
o
LC_ALL=C tr -dc "[:print:]" < /dev/urandom | head -c 32 | openssl base64