Looker utilizza la crittografia AES-256 Galois/Counter Mode (GCM) per criptare i dati sensibili archiviati internamente, tra cui:
- Backup del database interno di Looker
- Informazioni sulla connessione del database e del servizio
- Informazioni sull'autenticazione utente
- Valori degli attributi utente
- Dati dei clienti memorizzati nella cache o pronti per la pubblicazione
Per un elenco dettagliato dei dati criptati da Looker, apri una richiesta di assistenza.
I dati vengono criptati utilizzando una chiave di dati univoca e contengono 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.
La crittografia viene utilizzata solo per il database e la cache interni di Looker. I database dei clienti non sono interessati in alcun modo dalla crittografia di Looker. Inoltre, solo i dati statici (dati archiviati su disco) vengono criptati in questo modo.
Le installazioni ospitate dal cliente possono utilizzare i propri account AWS KMS o i propri sistemi di gestione delle chiavi personalizzati. Tutte le chiavi di dati e la KEK vengono criptate e utilizzate internamente nell'installazione di Looker ospitata dal cliente. Se non utilizzi AWS KMS, la CMK esterna deve essere conservata in modo sicuro.
Le installazioni ospitate dal cliente esistenti che vogliono utilizzare la crittografia GCM devono eseguire la migrazione dalla crittografia precedente alla nuova crittografia GCM. Le nuove installazioni ospitate dal cliente richiedono una configurazione aggiuntiva per la crittografia GCM.
Segui le procedure nelle sezioni seguenti nell'ordine indicato.
Interrompere Looker e creare un backup completo
Se esegui la migrazione alla crittografia GCM da un'istanza Looker esistente, assicurati di creare un backup completo nel caso in cui si verifichi un problema con la migrazione della crittografia. Se stai installando una nuova istanza di Looker, salta questa sezione.
Se utilizzi il database interno di Looker:
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 dovrebbe richiedere solo pochi minuti. Interrompi Looker.
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 di migrazione, 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."
Generazione di un CMK
Se utilizzi AWS KMS, crea una CMK utilizzando la console di gestione AWS o l'API.
Se non utilizzi AWS KMS, genera una CMK Base64 di 32 byte. Puoi memorizzare la CMK in una variabile di ambiente o in un file.
Per generare la CMK e memorizzarla in una variabile di ambiente, puoi utilizzare il seguente comando:
openssl rand -base64 32
Dopo aver generato la CMK, copiala e utilizza il seguente comando per memorizzarla nella variabile di ambiente
LKR_MASTER_KEY_ENV
(dove<CMK_value>
è la CMK generata con il comando precedente):export LKR_MASTER_KEY_ENV=<CMK_value>
Se Looker è in cluster, esegui il comando precedente su ogni nodo del cluster.
Per generare e archiviare la CMK in un file, puoi utilizzare il seguente comando (dove
<path_to_CMK_file>
è il percorso e il nome del file per archiviare la CMK):openssl rand -base64 32 > <path_to_key_file>
Dopo aver generato il file CMK, imposta le autorizzazioni del file della chiave su sola lettura per l'utente corrente:
chmod 0400 <path_to_key_file>
Dopo aver generato un CMK, assicurati di memorizzarlo in una posizione sicura e permanente prima di continuare. La perdita della CMK dopo la crittografia del database interno può comportare la perdita dell'istanza.
Creazione di un ruolo AWS IAM
Se non utilizzi AWS KMS, salta questa sezione.
Se utilizzi AWS KMS, Looker consiglia di creare un nuovo ruolo IAM univoco per la tua CMK e di collegarlo all'istanza Looker.
Di seguito è riportato un esempio di ruolo IAM che contiene le autorizzazioni minime richieste per la CMK:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "kms:GenerateRandom",
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:Generate*",
],
"Resource": "arn:aws:kms:*:*:key/*"
}
]
}
Imposta le variabili di ambiente
Se utilizzi AWS KMS, imposta la variabile di ambiente AWS_REGION
sulla regione AWS e la variabile di ambiente LKR_AWS_CMK
sull'alias della CMK:
export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>
Se vuoi, puoi anche impostare la variabile d'ambiente LKR_AWS_CMK_EC
per impostare un contesto di crittografia AWS personalizzato. Se non imposti questa variabile di ambiente, Looker utilizzerà il contesto di crittografia predefinito, la stringa Looker_Encryption_Context
.
export LKR_AWS_CMK_EC=<My_Encryption_Context>
Se non utilizzi AWS KMS e memorizzi la CMK in un file, imposta la variabile di ambiente LKR_MASTER_KEY_FILE
sul percorso del file della CMK:
export LKR_MASTER_KEY_FILE=<path_to_key_file>
Se non utilizzi AWS KMS e memorizzi la CMK in una variabile di ambiente, imposta la variabile di ambiente LKR_MASTER_KEY_ENV
sul valore della CMK:
export LKR_MASTER_KEY_ENV=<CMK_value>
Se Looker è in cluster, esegui il comando precedente su ogni nodo del cluster.
Crittografia del database interno
Se stai eseguendo la migrazione di un'istanza Looker esistente alla crittografia GCM, esegui la migrazione del database interno di Looker e avvia Looker:
java -jar looker.jar migrate_encryption
./looker start
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 comandojava -jar looker.jar migrate_encryption
.Ad esempio,
java -jar looker.jar migrate_encryption -d /path/file
.
Se stai installando una nuova istanza di Looker, la procedura di crittografia inizierà quando avvii la nuova istanza.
In genere, il processo di crittografia richiede meno di un minuto. Una volta avviato Looker, puoi verificare la nuova crittografia cercando GCM
nel log di Looker:
grep GCM log/looker.log
2018-10-29 22:42:20.279 +0000 [INFO|007d0|crypt] :: Starting migration from AES-128-CBC Legacy to AES-GCM-256
2018-10-29 22:42:20.468 +0000 [INFO|007d0|db:looker] :: (0.000152s) INSERT INTO "SETTING" ("KEY", "VALUE") VALUES
Risoluzione dei problemi
Questa sezione elenca alcuni errori comuni e le relative soluzioni:
Impossibile trovare l'attività "migrate_encryption": aggiorna l'istanza di Looker alla versione 6.4.
Looker non può essere avviato perché: manca il keystore di supporto: Looker non riesce a trovare il CMK. Verifica che il percorso della CMK nella variabile di ambiente
LKR_MASTER_KEY_FILE
sia corretto.Looker non può essere avviato perché: la dimensione della chiave principale non è valida, deve essere di 32 byte, ma è X: la CMK deve avere una lunghezza esatta di 32 byte.
Looker non può essere avviato perché: l'autorizzazione per il file della chiave di backup
deve essere 0400, ma è XXX : il file CMK deve essere di sola lettura con un valorechmod
pari a0400
.