Modificare le chiavi di crittografia di Looker

Looker utilizza la crittografia AES-256 Galois/Counter Mode (GCM) per criptare i dati internamente. Ogni elemento di dati viene criptato utilizzando una chiave di dati univoca e contiene un'envelope di crittografia firmata e con versione per garantire la verifica. Questa modalità richiede l'utilizzo di una chiave principale del cliente (CMK) esterna. La CMK viene utilizzata per ricavare, criptare e decriptare la chiave di crittografia della chiave (KEK), che a sua volta viene utilizzata per ricavare, criptare e decriptare le chiavi di dati.

Le installazioni ospitate dal cliente che utilizzano la crittografia precedente devono eseguire la migrazione dei database interni alla crittografia AES-256 GCM. Le nuove installazioni ospitate dal cliente devono essere configurate per la crittografia GCM AES-256. Consulta la pagina della documentazione Utilizzo della crittografia GCM AES-256 per istruzioni su come eseguire la migrazione o configurare l'installazione ospitata dal cliente per la crittografia GCM AES-256.

Se vuoi modificare la CMEK o passare da una configurazione basata su chiavi locali a una configurazione AWS KMS (o viceversa), puoi farlo creando una nuova CMEK e rigenerando la crittografia AES-256 GCM.

La ricodificazione viene eseguita offline, il che significa che l'istanza Looker deve essere arrestata. Per le istanze di Looker raggruppate in cluster, tutti i nodi del cluster devono essere arrestati.

La nuova definizione della chiave invalida l'intera cache su disco di Looker, inclusa la cache dei risultati della query. Di conseguenza, dopo aver completato una nuova generazione della chiave e aver avviato l'istanza, i database client potrebbero subire un carico superiore al solito.

Per cambiare la chiave della crittografia AES-256 GCM, svolgi le seguenti procedure:

  1. Interrompi Looker e crea un backup completo
  2. Imposta le variabili di ambiente _SOURCE e _DESTINATION
  3. Esegui il comando rekey
  4. Impostare nuove variabili di ambiente
  5. Avvia Looker

Interrompi Looker e crea un backup completo

Esegui i seguenti comandi:

cd looker
./looker stop
tar -zcvf /tmp/looker-pre-encrypt.tar.gz  /home/lookerops/looker --exclude=.cache --exclude=log --exclude=.tmp --exclude=.snapshots --exclude=looker.jar --exclude=authorized_keys --exclude=dr-log --exclude=core

Se utilizzi un database MySQL esterno per archiviare i dati dell'applicazione Looker, esegui il backup del database separatamente. Se il database è un'istanza MySQL, acquisisci uno snapshot. Il database è relativamente piccolo, quindi l'operazione dovrebbe richiedere solo pochi minuti.

Se Looker è in cluster, assicurati di arrestare ogni nodo prima di procedere:

cd looker
./looker stop

Se alcuni nodi sono ancora in esecuzione quando in seguito emetti il comando rekey, il comando non andrà a buon fine con il messaggio "Esistono altri nodi attivi connessi a questo database Looker di backend. Se Looker è stato arrestato nell'ultimo minuto, riprova a breve, altrimenti verifica che tutti i nodi del cluster siano stati arrestati."

Imposta le variabili di ambiente _SOURCE e _DESTINATION

Quando è stata inizialmente eseguita la migrazione dell'istanza di Looker a o la configurazione per la crittografia GCM AES-256, sono state create una o più variabili di ambiente che indicano dove Looker può trovare la CMK. Queste variabili variano a seconda che tu utilizzi AWS KMS.

L'operazione di ricreazione della chiave utilizza variabili di ambiente aggiuntive, a seconda che tu stia attualmente utilizzando AWS KMS e se lo utilizzerai dopo l'operazione di ricreazione della chiave. Le variabili di ambiente con il suffisso _SOURCE indicano dove Looker può trovare attualmente il CMK, mentre le variabili di ambiente con il suffisso _DESTINATION indicano dove Looker può trovare il CMK dopo l'operazione di ricreazione della chiave.

Impostazione delle variabili _SOURCE

Esegui una delle seguenti procedure, a seconda che la tua configurazione attuale utilizzi AWS KMS.

Se al momento utilizzi AWS KMS

Se hai configurato inizialmente la crittografia utilizzando AWS KMS, hai creato una o entrambe le seguenti variabili di ambiente:

  • LKR_AWS_CMK: memorizza l'CMK_alias AWS.
  • LKR_AWS_CMK_EC: una variabile facoltativa che definisce il contesto di crittografia utilizzato con i magazzini chiavi AWS KMS.

Ricrea le variabili di ambiente:

export LKR_AWS_CMK=alias/<CMK_alias>
export LKR_AWS_CMK_EC=<encryption_context>

Quindi crea le variabili _SOURCE. Imposta le seguenti nuove variabili con il suffisso _SOURCE:

export LKR_AWS_CMK_SOURCE=alias/<CMK_alias>
export LKR_AWS_CMK_EC_SOURCE=<encryption_context>

Se al momento non utilizzi AWS KMS

Se hai configurato inizialmente la crittografia utilizzando un servizio KMS diverso da AWS, hai creato una delle seguenti variabili di ambiente, a seconda che tu abbia archiviato la CMK in una variabile di ambiente o in un file dell'istanza:

  • LKR_MASTER_KEY_ENV: se memorizzi la CMK in una variabile di ambiente, questa la memorizza.
  • LKR_MASTER_KEY_FILE: se memorizzi la CMK in un file, vengono memorizzati il percorso e il nome del file contenente la CMK.

Ricrea la variabile di ambiente utilizzata per la configurazione:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

In alternativa:

export LKR_MASTER_KEY_ENV=<CMK_value>

Quindi, crea la variabile _SOURCE.

Se memorizzi il CMK in un file, crea la seguente variabile:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Se memorizzi la CMK in una variabile di ambiente, crea la seguente variabile:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Impostazione delle variabili _DESTINATION

Esegui una delle seguenti procedure, a seconda che tu intenda utilizzare AWS KMS dopo l'operazione di sostituzione della chiave.

La nuova configurazione utilizzerà AWS KMS

Se la nuova configurazione utilizzerà AWS KMS, crea le seguenti variabili di ambiente per indicare la posizione della nuova CMEK:

export LKR_AWS_CMK_DESTINATION=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC_DESTINATION=<new_encryption_context>

La nuova configurazione non utilizzerà AWS KMS

Se la nuova configurazione non utilizzerà AWS KMS, puoi utilizzare le variabili LKR_MASTER_KEY_FILE_DESTINATION o LKR_MASTER_KEY_ENV_DESTINATION per specificare la destinazione del CMK.

Se vuoi memorizzare la CMK in un file, esegui il seguente comando:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

In alternativa, se vuoi archiviare la CMK utilizzando una variabile di ambiente, esegui il seguente comando:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Esegui il comando rekey

Esegui il seguente comando:

./looker rekey

Se l'istanza di Looker inizia con le opzioni di avvio -d <db.yaml> o --internal-db-creds=<db.yaml>, che forniscono il percorso di un file YAML con le credenziali del database, dovrai includere la stessa opzione con il comando rekey.

Ad esempio, java -jar looker.jar rekey -d /path/file/db.yaml.

Impostare nuove variabili di ambiente

Imposta una o più delle seguenti variabili di ambiente in base alle esigenze della nuova configurazione.

Se la nuova configurazione utilizza AWS KMS:

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

Se la nuova configurazione non utilizza AWS KMS e memorizzi la CMK in una variabile di ambiente:

export LKR_MASTER_KEY_ENV=<CMK_value>

Se la nuova configurazione non utilizza AWS KMS e archivi la CMK in un file:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Se hai eseguito la migrazione da una chiave archiviata localmente ad AWS KMS o da AWS KMS a una chiave archiviata localmente, avrai variabili di ambiente non necessarie della configurazione precedente. Elimina le vecchie variabili di ambiente.

Se hai eseguito la migrazione da una chiave archiviata localmente ad AWS KMS:

unset LKR_MASTER_KEY_FILE

Se hai eseguito la migrazione da AWS KMS a una chiave archiviata localmente:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Avvia Looker

Esegui il seguente comando:

./looker start