Migration zur AES-256-GCM-Verschlüsselung

Looker verwendet die Verschlüsselung AES-256 Galois/Counter Mode (GCM), um sensible Daten zu verschlüsseln, die intern gespeichert werden, darunter:

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

Wenn Sie eine detaillierte Liste der Daten erhalten möchten, die von Looker verschlüsselt werden, stellen Sie eine Supportanfrage.

Die Daten werden mit einem eindeutigen Datenschlüssel verschlüsselt und enthalten einen signierten und versionierten Verschlüsselungsumschlag, um eine Verifizierung zu gewährleisten. In diesem Modus ist ein externer Kundenmasterschlüssel (Customer Master Key, CMK) erforderlich. Der CMK wird zum Ableiten, Verschlüsseln und Entschlüsseln des Schlüsselverschlüsselungsschlüssels (Key Encryption Key, KEK) verwendet, der wiederum zum Ableiten, Verschlüsseln und Entschlüsseln von Datenschlüsseln verwendet wird.

Die Verschlüsselung wird nur für die interne Datenbank und den Cache von Looker verwendet. Kundendatenbanken sind von der Verschlüsselung von Looker in keiner Weise betroffen. Darüber hinaus werden nur statische Daten (auf der Festplatte gespeicherte Daten) auf diese Weise verschlüsselt.

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

Vorhandene von Kunden gehostete Installationen, die die GCM-Verschlüsselung verwenden möchten, müssen von der alten zur neuen GCM-Verschlüsselung migrieren. Neue, vom Kunden gehostete Installationen erfordern eine zusätzliche Konfiguration für die GCM-Verschlüsselung.

Führen Sie die Schritte in den folgenden Abschnitten der Reihe nach aus.

Looker beenden und eine vollständige Sicherung erstellen

Wenn Sie von einer vorhandenen Looker-Instanz zur GCM-Verschlüsselung migrieren, erstellen Sie für den Fall, dass ein Problem bei der Verschlüsselungsmigration auftritt, ein vollständiges Back-up. 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 ausführen, sollten Sie die Datenbank separat sichern. Wenn die Datenbank eine MySQL-Instanz ist, erstellen Sie einen Snapshot. Da die Datenbank relativ klein ist, sollte der Vorgang nur wenige Minuten dauern. Beenden Sie dann Looker.

Wenn Looker geclustert ist, beenden Sie jeden Knoten, bevor Sie fortfahren:

cd looker
./looker stop

Wenn Knoten noch ausgeführt werden, wenn Sie später den Migrationsbefehl ausführen, schlägt der Befehl mit der Meldung „Es sind weitere Live-Knoten mit dieser Back-End-Looker-Datenbank verbunden. Wenn Looker in der letzten Minute heruntergefahren wurde, versuchen Sie es in Kürze noch einmal. Andernfalls prüfen Sie, ob alle Knoten im Cluster heruntergefahren wurden.“

CMK generieren

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

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

  • Um den CMK zu generieren und in einer Umgebungsvariablen zu speichern, können Sie den folgenden Befehl verwenden, um den CMK zu generieren:

    openssl rand -base64 32
    

    Nachdem Sie den CMK generiert haben, kopieren Sie ihn und speichern Sie ihn mit dem folgenden Befehl in der Umgebungsvariablen LKR_MASTER_KEY_ENV, wobei <CMK_value> der CMK ist, 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.

  • Zum Generieren und Speichern des CMK in einer Datei können Sie den folgenden Befehl verwenden, wobei <path_to_CMK_file> der Pfad und der Dateiname zum Speichern des CMK ist:

    openssl rand -base64 32 > <path_to_key_file>
    

Legen Sie nach dem Erstellen der CMK-Datei die Berechtigungen für die Schlüsseldatei auf den aktuellen Nutzer schreibgeschützt fest:

chmod 0400 <path_to_key_file>

Nachdem du einen CMK erstellt hast, solltest du ihn an einem sicheren und dauerhaften Ort aufbewahren, bevor du fortfährst. Ein Verlust des CMK nach der Verschlüsselung der internen Datenbank kann 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, dass Sie eine neue IAM-Rolle erstellen, die für Ihren CMK eindeutig ist, und an Ihre Looker-Instanz anhängen.

Das folgende Beispiel zeigt eine IAM-Rolle mit den Mindestberechtigungen, die für Ihren 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>

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

export LKR_AWS_CMK_EC=<My_Encryption_Context>

Wenn Sie kein AWS KMS verwenden und Ihren 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 kein AWS KMS verwenden und Ihren CMK in einer Umgebungsvariablen speichern, legen Sie die Umgebungsvariable LKR_MASTER_KEY_ENV auf den Wert des 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> beginnt, die einen Pfad zu einer YAML-Datei mit Ihren Datenbankanmeldedaten angeben, müssen Sie dieselbe Option mit dem Befehl java -jar looker.jar migrate_encryption einfügen.

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

Wenn Sie eine neue Looker-Instanz installieren, beginnt der Verschlüsselungsprozess beim Start der neuen Looker-Instanz.

Der Verschlüsselungsvorgang 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 sind einige häufige Fehler und deren Lösungen aufgeführt:

  • Die Aufgabe „migrate_encryption“ wurde nicht gefunden: Aktualisieren Sie Ihre Looker-Instanz auf Looker 6.4.

  • Looker kann nicht gestartet werden, weil: Fehlender Sicherungsschlüsselspeicher: 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, weil: Die Größe des Masterschlüssels ist ungültig, er muss 32 Byte betragen, aber X ist: Der CMK muss genau 32 Byte lang sein.

  • Looker kann nicht gestartet werden, weil: Die Berechtigung für die Sicherungsschlüsseldatei muss 0400 sein, ist aber XXX: Die CMK-Datei muss schreibgeschützt sein und den chmod-Wert 0400 haben.