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:
- Berechtigungen zum Erstellen oder Verwenden einer AWS KMS-Schlüsselrichtlinie. Weitere Informationen finden Sie unter Schlüsselrichtlinien in AWS KMS verwenden.
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:
Auf Ihrer
anthos-aws
verwenden Sieterraform
um die ID Ihres Verwaltungsdiensts abzurufen. Die Ausgabe enthält die ID Ihres Verwaltungsdiensts. Im folgenden Beispiel lautet die IDcd anthos-aws terraform output cluster_id
gke-12345abc
.terraform output cluster_id
gke-12345abcErstellen 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.