Encriptación de datos

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 apiproxy o policy (revisión del proxy de la API), la clave de nivel de organización se usa para encriptar los datos. Para obtener una descripción general sobre cómo se usan las KVM en Apigee Edge, consulta Trabaja con mapas de clave-valor.

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:

  1. 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
  2. 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.
  3. 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="
  4. Aplica el archivo de anulación a tu clúster.

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