Modifica delle chiavi di crittografia di Looker

Looker utilizza la crittografia AES-256 Galois/Counter Mode (GCM) per criptare i dati internamente. Ogni dato viene criptato usando una chiave dati univoca e contiene una busta di crittografia firmata e sottoposta al controllo delle versioni a garanzia della verifica. Questa modalità richiede l'utilizzo di una chiave principale del cliente (CMK) esterna. La chiave di crittografia della chiave 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 dei dati.

Per le installazioni ospitate dal cliente che utilizzano la crittografia precedente è necessario eseguire la migrazione dei database interni alla crittografia GCM AES-256. Le nuove installazioni ospitate dal cliente devono configurarle per la crittografia GCM AES-256. Consulta la pagina della documentazione Utilizzo della crittografia GCM AES-256 per istruzioni sulla migrazione o sulla configurazione dell'installazione ospitata dal cliente per la crittografia GCM AES-256.

Se vuoi modificare la CMK o passare da una configurazione basata su chiave locale a una configurazione AWS KMS (o viceversa), puoi creare una nuova CMK e ridigitare la crittografia AES-256 GCM.

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

La ridigitazione invalida l'intera cache su disco di Looker, inclusa la cache dei risultati della query. Di conseguenza, dopo aver completato una richiave e avviato l'istanza, i database del client potrebbero avere un carico più elevato del solito.

Per cambiare la chiave della crittografia GCM AES-256, segui queste procedure:

  1. Arresta 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

Arresta 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 esegui 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 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 emetti in seguito il comando rekey, il comando non riuscirà e verrà visualizzato il messaggio "Sono presenti altri nodi attivi collegati a questo database Looker backend. Se Looker è stato arrestato nell'ultimo minuto, riprova a breve, altrimenti verifica che tutti i nodi nel cluster siano stati arrestati."

Imposta le variabili di ambiente _SOURCE e _DESTINATION

Quando la tua istanza di Looker è stata inizialmente migrata o configurata per la crittografia GCM AES-256, sono state create una o più variabili di ambiente che indicano dove Looker può trovare la tua chiave CMK. Queste variabili variano a seconda che tu stia utilizzando o meno AWS KMS.

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

Impostazione di _SOURCE variabili

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

Se attualmente utilizzi KMS AWS

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

  • LKR_AWS_CMK: archivia il CMK_alias AWS.
  • LKR_AWS_CMK_EC: una variabile facoltativa che definisce il contesto di crittografia utilizzato con gli archivi chiavi KMS di AWS.

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 KMS AWS

Se inizialmente hai configurato la crittografia utilizzando un KMS diverso da AWS, hai creato una delle seguenti variabili di ambiente, a seconda che memorizzi la CMK in una variabile di ambiente o in un file nella tua istanza:

  • LKR_MASTER_KEY_ENV: se memorizzi la CMK in una variabile di ambiente, viene archiviata la CMK.
  • 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>

Oppure:

export LKR_MASTER_KEY_ENV=<CMK_value>

Quindi crea la variabile _SOURCE.

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

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

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

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Impostazione di _DESTINATION variabili

Esegui una delle seguenti procedure, a seconda che tu intenda utilizzare o meno AWS KMS dopo l'operazione di richiave.

La nuova configurazione utilizzerà KMS AWS

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

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

La nuova configurazione non utilizzerà KMS AWS

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

Se vuoi archiviare la tua chiave CMK in un file, esegui il comando seguente:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

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

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Esegui il comando rekey

Esegui il comando seguente:

./looker rekey

Se la tua istanza di Looker viene avviata con le opzioni di avvio -d <db.yaml> o --internal-db-creds=<db.yaml>, che forniscono un percorso a un file YAML con le credenziali del tuo database, devi includere la stessa opzione con il comando rekey.

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

Imposta 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 KMS AWS:

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 archivi 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 il trasferimento da una chiave archiviata in locale ad AWS KMS o da AWS KMS a una chiave archiviata in locale, avrai variabili di ambiente della configurazione precedente che non sono necessarie. Elimina le vecchie variabili di ambiente.

Se hai eseguito lo spostamento da una chiave archiviata in locale ad AWS KMS:

unset LKR_MASTER_KEY_FILE

Se hai eseguito lo spostamento da AWS KMS a una chiave archiviata in locale:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Avvia Looker

Esegui il comando seguente:

./looker start