Crittografia dei dati

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

  • Memorizzazione nella cache dei dati
  • Dati chiave del contratto
  • Dati del sistema di gestione delle chiavi (KMS)
  • Dati mappa chiave-valore (KVM)

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 ibride di Apigee hanno un ambito. Ad esempio, le chiavi KMS hanno un ambito dell'organizzazione. Ciò significa che la chiave viene utilizzata per criptare i dati KMS per l'intera organizzazione. La seguente tabella elenca l'ambito per ciascun tipo di chiave:

Chiave di crittografia Ambito
Contratto Solo organizzazione
KMS Solo organizzazione
KVM Organizzazione o ambiente

Se un criterio KVM specifica l'ambito apiproxy o policy (revisione del proxy API), la chiave a livello di organizzazione viene utilizzata per criptare i dati. Per una panoramica generale dell'utilizzo delle KVM in Apigee Edge, consulta Utilizzo delle 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 utilizzate per criptare i dati dei contratti, di KVM, KMS e 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 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 nessun momento.

Le chiavi predefinite vengono applicate a tutti i nuovi componenti ibridi di Apigee quando li crei.

Modifica delle 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 stanza nel file degli override. 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
        contractEncryptionKey: 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 codificata Base64 che abbia esattamente 16, 24 o 32 byte di lunghezza. Consulta anche Come creare una chiave codificata.
  3. Sostituisci le chiavi predefinite con altre nuove. In questo esempio, tutte le chiavi predefinite sono sostituite da chiavi:
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

Esegui l'override delle chiavi predefinite

Puoi eseguire l'override delle chiavi per l'organizzazione o per ambienti specifici denominati nel file degli override. Quando crei i componenti, le chiavi specificate per l'organizzazione o i singoli ambienti avranno la precedenza sui valori predefiniti.

  1. Copia le seguenti stanza nel file degli override. 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:
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. Genera una nuova chiave per ogni chiave che vuoi eseguire l'override. Ogni chiave deve essere una stringa codificata Base64 che abbia esattamente 16, 24 o 32 byte di lunghezza. Consulta anche Come creare una chiave codificata.
  3. Specifica le chiavi da sostituire. In questo esempio, tutte le chiavi predefinite sono sostituite da chiavi:
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="
    

Applica le modifiche principali

Applica il file degli override al cluster come con i seguenti comandi Helm:
  • Se cambi la chiave del contratto o la chiave KVM dell'organizzazione, aggiorna l'organizzazione:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • Se modifichi la chiave cache o la chiave KVM per un ambiente, aggiorna l'ambiente:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • Se modifichi la chiave KMS, aggiorna sia l'organizzazione che l'ambiente:
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

Una nota sulla compatibilità con le versioni precedenti

Se rimuovi le chiavi di crittografia nel file degli override la prima volta che installi Apigee hybrid, di fatto disabiliteresti la crittografia e i valori verrebbero archiviati non criptati. Se in un secondo momento attivi la crittografia fornendo le chiavi, i dati in uscita rimangono non criptati; tuttavia, i dati aggiunti in futuro verranno criptati. Il sistema continuerà a funzionare normalmente con i dati non criptati e con i nuovi dati criptati.

Inoltre, tieni presente che non potrai modificare le chiavi di crittografia in un secondo momento dopo aver criptato i dati del runtime.

Come creare una chiave codificata

Per la crittografia della cache, KVM, KMS e della cache è necessaria una chiave con codifica Base-64 formattata correttamente. La chiave utilizzata per questi scopi deve essere codificata in Base-64 da una stringa di 16, 24 o 32 byte, come spiegato di seguito:

Il comando di esempio seguente genera una stringa adatta, generata in modo casuale, di 32 caratteri, con codifica Base64:

head -c 32 /dev/random | openssl base64