Vom Kunden verwalteten CMK zum Verschlüsseln von Volumes verwenden

GKE on AWS verwendet den AWS Key Management Service (KMS) zum Verschlüsseln von EBS-Volumes. GKE on AWS 1.7 und höher unterstützt das Verschlüsseln von Volumes mit vom Kunden verwalteten Customer Master Keys (CMKs). GKE on AWS-Versionen 1.6.x und niedriger unterstützen nur AWS-verwaltete CMKs.

In diesem Thema wird beschrieben, wie Sie einen vom Kunden verwalteten CMK für die Verschlüsselung von Volumes einrichten. Wenn Sie den vom Kunden verwalteten CMK nicht einrichten, verwendet GKE on AWS standardmäßig von AWS verwaltete CMKs.

Übersicht

Die folgenden GKE on AWS-Komponenten unterstützen vom Kunden verwaltete CMK-verschlüsselte Volumes:

  • Root-Volume des Bastion Host
  • Root-Volumes des Verwaltungsdienstes
  • etcd-Daten-Volumes des Verwaltungsdienstes
  • Root-Volumes der Nutzercluster-Steuerungsebene
  • etcd-Daten-Volumes der Nutzercluster-Steuerungsebene
  • Root-Volumes von Nutzerclusterknoten

Schlüssel geben Sie in Ihrer Konfiguration für Verwaltungsdienst, Cluster und Knotenpool an.

Vorbereitung

Um einen vom Kunden verwalteten CMK for GKE in AWS-Root-Volumes zu verwenden, benötigen Sie Folgendes:

Schlüsselrichtlinie erstellen

Ihre AWS KMS-Schlüssel müssen eine Schlüsselrichtlinie haben, mit der GKE on AWS Volumes erstellen und lesen kann, die mit einem vom Kunden verwalteten CMK verschlüsselt sind. Im folgenden Abschnitt finden Sie eine Beispielrichtlinie. Führen Sie zum Erstellen der Richtlinie die folgenden Schritte aus:

  1. Auf Ihreranthos-aws verwenden Sie terraform um die ID Ihres Verwaltungsdiensts abzurufen.

    cd anthos-aws
    terraform output cluster_id
    Die Ausgabe enthält die ID Ihres Verwaltungsdiensts. Im folgenden Beispiel lautet die ID gke-12345abc.
    terraform output cluster_id
    gke-12345abc
    

  2. Erstellen Sie eine AWS KMS-Schlüsselrichtlinie mit folgendem Inhalt:

    {
        "Version": "2012-10-17",
        "Id": "key-consolepolicy-3",
        "Statement": [
            {
                "Sid": "Enable IAM User Permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::ACCOUNT_NUMBER:root"
                },
                "Action": "kms:*",
                "Resource": "*"
            },
            {
                "Sid": "Allow creating encrypted EBS volumes for EC2 use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/gke-CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:user/AWS_USER",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:GenerateDataKeyWithoutPlaintext",
                    "kms:Decrypt"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            },
            {
                "Sid": "Allow attaching encrypted EBS volumes for EC2 Use",
                "Effect": "Allow",
                "Principal": {
                    "AWS": [
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-management",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/CLUSTER_ID-controlplane",
                        "arn:aws:iam::ACCOUNT_NUMBER:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
                    ]
                },
                "Action": [
                    "kms:CreateGrant",
                    "kms:ListGrants",
                    "kms:RevokeGrant"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "kms:CallerAccount": "ACCOUNT_NUMBER",
                        "kms:ViaService": "ec2.AWS_REGION.amazonaws.com"
                    }
                }
            }
        ]
    }
    

    Ersetzen Sie Folgendes:

    • ACCOUNT_NUMBER: Ihre AWS-Kontonummer, z. B. 1234567890.
    • CLUSTER_ID: Ihre GKE on AWS-Verwaltungscluster-ID, z. B. gke-12345678.
    • AWS_USER: Ihr AWS-Nutzername.
    • AWS_REGION: Die AWS-Region, in der Ihre GKE on AWS-Cluster ausgeführt werden, z. B. us-east1.

Ressourcen für die Verwendung eines vom Kunden verwalteten CMK konfigurieren

In diesem Abschnitt wird erläutert, wie Sie einen vom Kunden verwalteten CMK für GKE in AWS-Komponenten konfigurieren. Vor dem Upgrade vorhandener Komponenten finden Sie weitere Informationen dazu unter CMK mit vorhandenen Clustern verwenden.

Bastion Host und Verwaltungsdienst

Sie konfigurieren einen vom Kunden verwalteten CMK für das Bastion Host-Root-Volume, das Root-Volume des Verwaltungsdienstes und die etcd-Daten-Volumes des Verwaltungsdienstes in anthos-gke.yaml, bevor Sie den Verwaltungsdienst einrichten. Weitere Informationen finden Sie unter Bestehende Infrastruktur integrieren und AWSManagementService.

Volumes der Nutzercluster-Steuerungsebene

Sie konfigurieren einen vom Kunden verwalteten CMK für die Steuerungsebene des Nutzerclusters und die etcd-Daten-Volumes in der AWSCluster-Definition. Weitere Informationen finden Sie unter Benutzerdefinierten Nutzercluster erstellen.

Root-Volumes von Nutzerclusterknoten

Sie konfigurieren einen vom Kunden verwalteten CMK auf Root-Volumes von Nutzerclusterknoten in Ihrer AWSNodePool-Definition. Weitere Informationen finden Sie unter Benutzerdefinierten Nutzercluster erstellen.

CMK mit vorhandenen Clustern verwenden

Sie können den folgenden vorhandenen Komponenten eine Konfiguration für den vom Kunden verwalteten CMK hinzufügen:

  • Root-Volume des Bastion Host
  • Root-Volumes des Verwaltungsdienstes
  • Root-Volumes der Nutzercluster-Steuerungsebene
  • Root-Volumes von Nutzerclusterknoten

GKE on AWS erstellt diese Volumes nach einem Upgrade oder einer Konfigurationsänderung neu. Um die Konfiguration des vom Kunden verwalteten CMK zu vorhandenen Komponenten hinzuzufügen, befolgen Sie die Anleitung unter GKE on AWS aktualisieren. Ändern Sie beim Ändern der Ressourcenkonfiguration die folgenden Felder:

Ressource Feld
AWSManagementService spec.rootVolume and spec.bastionHost.rootVolume
AWSCluster spec.controlPlane.rootVolume
AWSNodePools spec.rootVolume

Wenn Sie das Upgrade abgeschlossen haben, erstellt GKE on AWS neue Ressourcen mit den angefügten Volumes des vom Kunden verwalteten CMK.

Nächste Schritte