Chiffrement des données

Par défaut, les données suivantes sont stockées chiffrées dans le plan d'exécution hybride :

  • Données du système de gestion des clés (KMS)
  • Données de mappage clé-valeur (KVM)
  • Données en cache

Le chiffrement des données ne nécessite aucune configuration spéciale de votre part. Toutefois, si pour une raison quelconque vous souhaitez utiliser vos propres clés de chiffrement (en remplaçant celles par défaut), vous pouvez le faire, comme expliqué dans cet article.

Champ d'application de la clé de chiffrement

Les clés de chiffrement pour KMS, KVM et le cache ont un champ d'application. Par exemple, les clés KMS ont un champ d'application organisation. Cela signifie que la clé permet de chiffrer les données KMS pour l'ensemble de l'organisation. Le tableau suivant répertorie le champ d'application pour chaque type de clé :

Clé de chiffrement Champ d'application
KMS Organisation uniquement
KVM Organisation ou environnement

Si une règle KVM spécifie un champ d'application apiproxy ou policy (révision du proxy d'API), la clé au niveau de l'organisation est utilisée pour chiffrer les données. Pour en savoir plus sur l'utilisation des KVM dans Apigee Edge, consultez la section Travailler avec des mappages clé-valeur.

Cache Environnement uniquement

À propos des clés de chiffrement par défaut

Par défaut, Apigee hybride fournit un ensemble de clés encodées en base64 utilisées pour chiffrer les données KVM, KMS et de cache. Le programme d'installation Apigee hybride stocke les clés dans le plan d'exécution sous forme de secrets Kubernetes et les utilise pour chiffrer vos données avec le chiffrement standard AES-128. Les clés sont sous votre contrôle ; le plan de gestion hybride n'y a jamais accès, à aucun moment.

Modifier les clés de chiffrement par défaut

Bien que cela ne soit pas obligatoire, vous pouvez modifier n'importe quelle clé de chiffrement par défaut si vous le souhaitez. Pour remplacer une ou plusieurs clés par défaut, procédez comme suit :

  1. Copiez les stanzas suivants dans votre fichier de remplacement. Cette configuration vous permet de modifier les clés de chiffrement KMS et KVM au niveau de l'organisation, ainsi que les clés de chiffrement KVM et de cache au niveau de l'environnement :
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Générez une nouvelle clé pour chaque clé que vous souhaitez remplacer. Chaque clé doit être une chaîne encodée en base64 d'une longueur de 16, 24 ou 32 octets exactement. Consultez également la section Créer une clé encodée.
  3. Remplacez les clés par défaut par de nouvelles. Dans cet exemple, toutes les clés par défaut sont remplacées par des clés :
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. Appliquez le fichier de remplacement modifié à votre cluster.

Remarque sur la rétrocompatibilité

Si vous deviez supprimer les clés de chiffrement dans votre fichier de remplacement lors de la première installation d'Apigee hybride, vous désactiveriez le chiffrement et les valeurs seraient stockées de manière non chiffrée. Si, par la suite, vous activez le chiffrement en fournissant des clés, les données en sortie restent non chiffrée. Toutefois, toutes les données futures ajoutées seront chiffrées. Le système continue de fonctionner normalement avec les données non chiffrées et les nouvelles données chiffrées.

Sachez également que vous ne pourrez plus modifier les clés de chiffrement une fois les données d'exécution chiffrées.

Créer une clé chiffrée

Une clé au format Base64 correctement formatée est requise pour le chiffrement des données KVM, KMS et de cache. La clé utilisée pour l'une de ces actions doit être encodée en base64 à partir d'une chaîne de 16, 24 ou 32 octets, comme expliqué dans les étapes suivantes :

Les exemples de commandes suivants génèrent des chaînes appropriées de manière aléatoire. Il s'agit de chaînes de 32 caractères, encodées en base64 qui n'incluent pas de caractères non imprimables :

LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)\\-+= < /dev/urandom | head -c 32  | openssl base64
PSFvX0BPc1Z2NVklcXdxcF8xR0N4MV4temFveStITU4=

ou

LC_ALL=C tr -dc "[:print:]" < /dev/urandom | head -c 32 | openssl base64