Crittografia dei dati

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

  • Dati del sistema di gestione delle chiavi (KMS)
  • Dati della mappa chiave-valore (KVM)
  • Memorizzare i 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 la cache hanno un ambito. Ad esempio, le chiavi KMS hanno ambito dell'organizzazione. Ciò significa che la chiave viene utilizzata per criptare i dati KMS per l'intera organizzazione. La tabella seguente elenca l'ambito per ciascun tipo di chiave:

Chiave di crittografia Ambito
KMS Solo organizzazione
KVM Organizzazione o ambiente

Se un criterio KVM specifica apiproxy o policy (revisione proxy API), l'organizzazione a livello di progetto e vengono utilizzati per crittografare i dati. Per una panoramica generale dell'utilizzo delle mappe chiave-valore in Apigee Edge, consulta Utilizzare le mappe chiave-valore.

Cache Solo ambiente

Informazioni sulle chiavi di crittografia predefinite

Per impostazione predefinita, Apigee hybrid fornisce un set di chiavi con codifica Base64 che vengono utilizzate per criptare i dati di KVM, KMS e della cache. L'installatore Apigee Hybrid memorizza le chiavi nel piano di runtime come Kubernetes Secrets e le utilizza per criptare i dati con la crittografia standard AES-128. Le chiavi sono sotto il tuo controllo; il piano di gestione ibrida non ne è mai a conoscenza.

Modificare le chiavi di crittografia predefinite

Sebbene non sia obbligatorio, puoi modificare qualsiasi chiave di crittografia predefinita se vuoi. Per sostituire una o più chiavi predefinite:

  1. Copia le seguenti stanze nel file delle sostituzioni. Questa configurazione ti consente di modificare le chiavi di crittografia KMS e KVM per il livello dell'organizzazione e le chiavi di crittografia KVM e della cache per il livello dell'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. Ciascuna deve essere una stringa con codifica Base64 che ha esattamente 16, 24 o 32 byte. Consulta anche Come creare una chiave codificata.
  3. Sostituisci le chiavi predefinite con altre nuove. In questo esempio, tutte le chiavi predefinite sono sostituiti con chiavi:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. Applica il file delle sostituzioni al cluster come segue:
    • Se modifichi le chiavi KVM o Cache, aggiorna solo l'ambiente:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name
    • Se modifichi le chiavi KMS, aggiorna sia l'organizzazione sia l'ambiente:
      $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --env env_name --org org_name

Una nota sulla compatibilità con le versioni precedenti

Se rimuovi le chiavi di crittografia nel file degli override, il primo installando Apigee hybrid, a disattivare in modo efficace la crittografia e i valori non sarebbero criptati. Se in un secondo momento abilitare la crittografia fornendo le chiavi, i dati in uscita rimangono non criptati; Tuttavia, eventuali dati aggiunti in futuro essere criptati. Il sistema continuerà a funzionare normalmente con i dati non criptati e con i nuovi dati criptati.

Tieni inoltre presente che non puoi modificare in un secondo momento le chiavi di crittografia una volta criptati i dati di runtime.

Come creare una chiave codificata

Per la crittografia KVM, KMS e della cache è necessaria una chiave con codifica Base64 formattata correttamente. La chiave utilizzata per uno di questi scopi deve essere codificata in base 64 da una stringa di 16, 24 o 32 byte, come spiegato nei passaggi che seguono:

I seguenti comandi di esempio generano stringhe con codifica Base64 di 32 caratteri generate in modo casuale e adatte 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