Crittografia dei dati

Per impostazione predefinita, i dati seguenti sono archiviati criptati nel piano di runtime ibrido:

  • Dati del sistema di gestione delle chiavi (KMS)
  • Dati della mappa chiave-valore (KVM)
  • Memorizzare dati nella cache

La crittografia dei dati non richiede alcuna configurazione speciale da parte tua. Tuttavia, se per qualche motivo vuoi utilizzare le tue chiavi di crittografia (sostituendo quelle predefinite), puoi farlo, come spiegato in questo argomento.

Ambito della chiave di crittografia

Le chiavi di crittografia per KMS, KVM e cache hanno ambito. Ad esempio, le chiavi KMS hanno ambito organizzazione. Ciò significa che la chiave viene utilizzata per criptare i dati KMS dell'intera organizzazione. La tabella seguente elenca l'ambito per ogni tipo di chiave:

Chiave di crittografia Ambito
KMS Solo organizzazione
KVM Organizzazione o ambiente

Se un criterio KVM specifica apiproxy o l'ambito policy (revisione proxy dell'API), la chiave dell'organizzazione viene utilizzata per criptare i dati. Per una panoramica generale dell'utilizzo delle KVM in Apigee Edge, vedi Utilizzo delle mappe delle coppie chiave-valore.

Cache Solo ambiente

Informazioni sulle chiavi di crittografia predefinite

Per impostazione predefinita, Apigee ibrido fornisce un set di chiavi con codifica Base64 utilizzate per criptare KVM, KMS e dati della cache. Il programma di installazione ibrido Apigee archivia le chiavi nel piano di runtime come Secret di Kubernetes e le utilizza per criptare i tuoi dati con la crittografia standard AES-128. Le chiavi sono sotto il tuo controllo; il piano di gestione ibrido non ne è mai a conoscenza in qualsiasi momento.

Modifica delle chiavi di crittografia predefinite

Anche se non è obbligatorio, puoi modificare qualsiasi chiave di crittografia predefinita, se vuoi. Per sostituire una o più chiavi predefinite, procedi come riportato di seguito:

  1. Copia le seguenti strofe nel file delle sostituzioni. Questa configurazione consente di modificare le chiavi di crittografia KMS e KVM a livello di organizzazione e le chiavi di crittografia KVM e cache per il livello di ambiente:
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Genera una nuova chiave per ogni chiave che vuoi sostituire. Ogni chiave deve essere una stringa con codifica Base64 di esattamente 16, 24 o 32 byte. Vedi anche Come creare una chiave codificata.
  3. Sostituisci le chiavi predefinite con nuove. In questo esempio, tutte le chiavi predefinite vengono sostituite con:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. Applica il file di override al cluster.

Nota sulla compatibilità con le versioni precedenti

Se rimuovi le chiavi di crittografia nel file delle sostituzioni la prima volta che installi Apigee ibrido, disabiliti in modo efficace la crittografia e i valori vengono memorizzati in modo non criptato. Se in un secondo momento abiliti la crittografia fornendo le chiavi, i dati in uscita rimangono non criptati; tuttavia, gli eventuali dati aggiunti verranno criptati. Il sistema continuerà a funzionare normalmente con i dati non criptati e i nuovi dati criptati.

Inoltre, tieni presente che in seguito non potrai più modificare le chiavi di crittografia dopo aver criptato i dati di runtime.

Come creare una chiave codificata

Per la crittografia KVM, KMS e cache è necessaria una chiave con codifica Base-64 formattata correttamente. La chiave utilizzata in uno di questi scopi deve essere codificata in Base-64 con una stringa di 16, 24 o 32 byte, come illustrato nei passaggi seguenti:

I seguenti comandi di esempio generano stringhe idonee, generate casualmente, da 32 caratteri con codifica Base64 che non includono caratteri non stampabili:

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