Migration zur AES-256-GCM-Verschlüsselung

Looker verwendet die AES-256-Verschlüsselung im Galois/Counter Mode (GCM), um vertrauliche Daten zu verschlüsseln, die intern gespeichert werden. Dazu gehören:

  • Sicherungen der internen Datenbank von Looker
  • Informationen zur Datenbank- und Dienstverbindung
  • Informationen zur Nutzerauthentifizierung
  • Nutzerattributwerte
  • Kundendaten, die im Cache gespeichert oder für die Auslieferung vorbereitet werden

Eine detaillierte Liste der Daten, die in Looker verschlüsselt werden, erhalten Sie, wenn Sie eine Supportanfrage stellen.

Die Daten werden mit einem eindeutigen Datenschlüssel verschlüsselt und enthalten einen signierten und versionierten Verschlüsselungsumschlag, um die Überprüfung zu gewährleisten. Für diesen Modus ist die Verwendung eines externen Kundenmasterschlüssels (Customer Master Key, CMK) erforderlich. Der CMK wird verwendet, um den Schlüsselverschlüsselungsschlüssel (Key Encryption Key, KEK) abzuleiten, zu verschlüsseln und zu entschlüsseln. Dieser wird wiederum verwendet, um Datenschlüssel abzuleiten, zu verschlüsseln und zu entschlüsseln.

Die Verschlüsselung wird nur für die interne Datenbank und den Cache von Looker verwendet. Kundendatenbanken sind von der Verschlüsselung in Looker in keiner Weise betroffen. Außerdem werden nur statische Daten (auf dem Laufwerk gespeicherte Daten) auf diese Weise verschlüsselt.

Bei vom Kunden gehosteten Installationen können eigene AWS KMS-Konten oder eigene benutzerdefinierte Schlüsselverwaltungssysteme verwendet werden. Alle Datenschlüssel und der KEK werden verschlüsselt und intern in der vom Kunden gehosteten Looker-Installation verwendet. Wenn Sie AWS KMS nicht verwenden, sollte die externe CMK sicher aufbewahrt werden.

Vorhandene vom Kunden gehostete Installationen, die die GCM-Verschlüsselung verwenden möchten, müssen von der bisherigen Verschlüsselung zur neuen GCM-Verschlüsselung migriert werden. Für neue vom Kunden gehostete Installationen ist eine zusätzliche Konfiguration für die GCM-Verschlüsselung erforderlich.

Folgen Sie der Anleitung in den folgenden Abschnitten in der angegebenen Reihenfolge.

Looker anhalten und eine vollständige Sicherung erstellen

Wenn Sie von einer vorhandenen Looker-Instanz zur GCM-Verschlüsselung migrieren, sollten Sie unbedingt eine vollständige Sicherung erstellen, falls ein Problem mit der Verschlüsselungsmigration auftritt. Wenn Sie eine neue Looker-Instanz installieren, überspringen Sie diesen Abschnitt.

Wenn Sie die interne Datenbank von Looker verwenden:

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

Wenn Sie eine externe MySQL-Datenbank zum Speichern von Looker-Anwendungsdaten verwenden, sichern Sie die Datenbank separat. Wenn es sich bei der Datenbank um eine MySQL-Instanz handelt, erstellen Sie einen Snapshot. Die Datenbank ist relativ klein, sodass der Vorgang nur wenige Minuten dauern sollte. Beenden Sie dann Looker.

Wenn Looker geclustert ist, müssen Sie jeden Knoten anhalten, bevor Sie fortfahren:

cd looker
./looker stop

Wenn noch Knoten ausgeführt werden, wenn Sie den Migrationsbefehl später ausführen, schlägt der Befehl mit der Meldung fehl: „Es gibt noch andere aktive Knoten, die mit dieser Looker-Backend-Datenbank verbunden sind. Wenn Looker innerhalb der letzten Minute heruntergefahren wurde, versuchen Sie es bald noch einmal. Andernfalls prüfen Sie, ob alle Knoten im Cluster heruntergefahren sind.“

CMK generieren

Wenn Sie AWS KMS verwenden, erstellen Sie einen CMK entweder über die AWS Management Console oder die API.

Wenn Sie AWS KMS nicht verwenden, generieren Sie einen Base64-CMK mit 32 Byte. Sie können die CMK entweder in einer Umgebungsvariablen oder in einer Datei speichern.

  • Wenn Sie die CMK generieren und in einer Umgebungsvariablen speichern möchten, können Sie den folgenden Befehl verwenden:

    openssl rand -base64 32
    

    Kopieren Sie den CMEK-Schlüssel nach dem Generieren und speichern Sie ihn mit dem folgenden Befehl in der Umgebungsvariablen LKR_MASTER_KEY_ENV. Dabei steht <CMK_value> für den CMEK-Schlüssel, den Sie mit dem vorherigen Befehl generiert haben:

    export LKR_MASTER_KEY_ENV=<CMK_value>
    

    Wenn Looker geclustert ist, führen Sie den vorherigen Befehl auf jedem Knoten im Cluster aus.

  • Mit dem folgenden Befehl können Sie die CMK generieren und in einer Datei speichern. Dabei steht <path_to_CMK_file> für den Pfad und den Dateinamen, unter dem die CMK gespeichert werden soll:

    openssl rand -base64 32 > <path_to_key_file>
    

Nachdem Sie die CMK-Datei generiert haben, legen Sie die Berechtigungen für die Schlüsseldatei so fest, dass der aktuelle Nutzer nur Lesezugriff hat:

chmod 0400 <path_to_key_file>

Nachdem Sie eine CMK generiert haben, sollten Sie sie an einem sicheren und dauerhaften Ort speichern, bevor Sie fortfahren. Wenn Sie die CMK nach der Verschlüsselung der internen Datenbank verlieren, kann dies zum Verlust Ihrer Instanz führen.

AWS-IAM-Rolle erstellen

Wenn Sie AWS KMS nicht verwenden, überspringen Sie diesen Abschnitt.

Wenn Sie AWS KMS verwenden, empfiehlt Looker, eine neue IAM-Rolle zu erstellen, die für Ihren CMK eindeutig ist, und sie mit Ihrer Looker-Instanz zu verknüpfen.

Im Folgenden finden Sie ein Beispiel für eine IAM-Rolle mit den Mindestberechtigungen, die für Ihre CMK erforderlich sind:

{
    "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/*"
        }
    ]
}

Umgebungsvariablen festlegen

Wenn Sie AWS KMS verwenden, legen Sie die Umgebungsvariable AWS_REGION auf Ihre AWS-Region und die Umgebungsvariable LKR_AWS_CMK auf den Alias Ihres CMK fest:

export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>

Optional können Sie auch die Umgebungsvariable LKR_AWS_CMK_EC festlegen, um einen benutzerdefinierten AWS-Verschlüsselungskontext festzulegen. Wenn Sie diese Umgebungsvariable nicht festlegen, verwendet Looker den Standardverschlüsselungskontext, den String Looker_Encryption_Context.

export LKR_AWS_CMK_EC=<My_Encryption_Context>

Wenn Sie AWS KMS nicht verwenden und Ihre CMK in einer Datei speichern, legen Sie die Umgebungsvariable LKR_MASTER_KEY_FILE auf den Pfad der CMK-Datei fest:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Wenn Sie AWS KMS nicht verwenden und Ihre CMK in einer Umgebungsvariablen speichern, legen Sie die Umgebungsvariable LKR_MASTER_KEY_ENV auf den Wert der CMK fest:

export LKR_MASTER_KEY_ENV=<CMK_value>

Wenn Looker geclustert ist, führen Sie den vorherigen Befehl auf jedem Knoten im Cluster aus.

Interne Datenbank verschlüsseln

Wenn Sie eine vorhandene Looker-Instanz zur GCM-Verschlüsselung migrieren, migrieren Sie die interne Datenbank von Looker und starten Sie Looker:

java -jar looker.jar migrate_encryption
./looker  start

Wenn Ihre Looker-Instanz mit den Startoptionen -d <db.yaml> oder --internal-db-creds=<db.yaml> gestartet wird, die einen Pfad zu einer YAML-Datei mit Ihren Datenbankanmeldedaten angeben, müssen Sie dieselbe Option auch im Befehl java -jar looker.jar migrate_encryption angeben.

Beispiel: java -jar looker.jar migrate_encryption -d /path/file.

Wenn Sie eine neue Looker-Instanz installieren, beginnt der Verschlüsselungsprozess, wenn Sie die neue Looker-Instanz starten.

Die Verschlüsselung dauert in der Regel weniger als eine Minute. Nachdem Looker gestartet wurde, können Sie die neue Verschlüsselung prüfen, indem Sie im Looker-Protokoll nach GCM suchen:

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

Fehlerbehebung

In diesem Abschnitt werden einige häufige Fehler und ihre Behebung beschrieben:

  • Task „migrate_encryption“ konnte nicht gefunden werden: Aktualisieren Sie Ihre Looker-Instanz auf Looker 6.4.

  • Looker kann nicht gestartet werden, da der Back-Keystore fehlt: Looker kann den CMK nicht finden. Prüfen Sie, ob der CMK-Pfad in der Umgebungsvariablen LKR_MASTER_KEY_FILE korrekt ist.

  • Looker kann nicht gestartet werden, da: Die Größe des Masterschlüssels ist ungültig. Er muss 32 Byte lang sein, ist aber X: Der CMK muss genau 32 Byte lang sein.

  • Looker kann nicht gestartet werden, da die Berechtigung für die Sicherungsschlüsseldatei 0400 sein muss, aber XXX ist: Die CMK-Datei muss nur lesbar sein und einen chmod-Wert von 0400 haben.