Always-On-Secrets-Verschlüsselung verwenden

Google Distributed Cloud Version 1.10 unterstützt das Verschlüsseln von Secrets, ohne dass ein externer KMS (Key Management Service) oder andere Abhängigkeiten erforderlich sind.

Always-On-Secrets-Verschlüsselung aktivieren

Die Always-On-Secrets-Verschlüsselung funktioniert, indem automatisch ein Verschlüsselungsschlüssel generiert wird, mit dem Secrets verschlüsselt werden, bevor sie in der etcd-Datenbank für diesen Cluster gespeichert werden. Die Secrets werden mit einem Datenverschlüsselungsschlüssel (Data Encryption Key, DEK) verschlüsselt, der für jeden Secret-Schreibvorgang generiert wird. Dieser DEK wird im AES-GCM-Modus zum Verschlüsseln des Secret-Objekts verwendet. Der DEK wird wiederum mit einem Schlüsselverschlüsselungsschlüssel (Key Encrypting Key, KEK) verschlüsselt. Der Verschlüsselungsalgorithmus ist A256GCM (AES GCM mit 256-Bit-Schlüssel).

Die Schlüsselversion ist eine Versionsnummer, die angibt, dass der Schlüssel derzeit verwendet wird.

Sie können die Secret-Verschlüsselung aktivieren, nachdem ein Cluster bereits erstellt wurde.

  • Für den Administratorcluster:

    1. Bearbeiten Sie die Konfigurationsdatei für den Administratorcluster, um den Abschnitt secretsEncryption hinzuzufügen.

    2. Führen Sie den Befehl gkectl update aus:

      gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG
  • Für einen Nutzercluster:

    1. Bearbeiten Sie die Konfigurationsdatei des Nutzerclusters, um den Abschnitt secretsEncryption hinzuzufügen.

    2. Führen Sie den Befehl gkectl update aus:

      gkectl update cluster --config USER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Ersetzen Sie Folgendes:

  • ADMIN_KUBECONFIG durch den Pfad der Datei "kubeconfig" Ihres Administratorclusters.
  • ADMIN_CLUSTER_CONFIG durch den Pfad Ihrer Konfigurationsdatei Ihres Administratorclusters.
  • USER_CLUSTER_CONFIG ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.

Die in diesem Abschnitt bereitgestellten gkectl update-Befehle können auch für andere Aktualisierungen des entsprechenden Clusters verwendet werden.

Schlüsselspeicherung

Die Verschlüsselungsschlüssel für den Administratorcluster werden auf dem Datenlaufwerk des Administratorclusters gespeichert. Dieses Laufwerk wird auf dem Administrator-Master unter /opt/data bereitgestellt. Die Verschlüsselungsschlüssel finden Sie unter /opt/data/gke-k8s-kms-plugin/generatedkeys/. Diese Schlüssel müssen gesichert werden, um den Zugriff auf die von diesen Schlüsseln verschlüsselten Secrets zu erhalten. Sie sollten die VM-/Speicherverschlüsselung im Hypervisor oder ähnliche Maßnahmen aktivieren, damit die VM-Laufwerke der Steuerungsebene geschützt sind.

Schlüsselrotation

Um einen vorhandenen Verschlüsselungsschlüssel für einen Cluster zu rotieren, erhöhen Sie die keyVersion in der entsprechenden Konfigurationsdatei für den Admincluster oder Nutzercluster-Konfigurationsdatei und führen Sie den entsprechenden gkectl update-Befehl aus. Dadurch wird ein neuer Schlüssel erstellt, der mit der neuen Versionsnummer übereinstimmt, jedes Secret wird neu verschlüsselt und alte Schlüssel werden sicher gelöscht. Alle nachfolgenden neuen Secrets werden mit dem neuen Verschlüsselungsschlüssel verschlüsselt.

Always-On-Secret-Verschlüsselung deaktivieren

Fügen Sie das Feld disabled: true hinzu, um die Secret-Verschlüsselung in einem vorhandenen Cluster zu deaktivieren. Führen Sie als Nächstes den entsprechenden gkectl update-Befehl aus. Mit diesem Update wird jedes vorhandene Secret entschlüsselt und jedes Secret wird im Nur-Text-Format gespeichert. Alle nachfolgenden neuen Secrets werden im Nur-Text-Format gespeichert.

secretsEncryption:
  mode: GeneratedKey
  generatedKey:
    keyVersion: KEY_VERSION
    disabled: true