Verschlüsseln Sie Kubernetes-Geheimnisse mit AWS KMS auf vorhandenen Clustern - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verschlüsseln Sie Kubernetes-Geheimnisse mit AWS KMS auf vorhandenen Clustern

Wenn Sie die Secrets-Verschlüsselung aktivieren, werden die Kubernetes-Secrets mit dem von Ihnen ausgewählten AWS KMS key verschlüsselt. Der KMS Schlüssel muss die folgenden Bedingungen erfüllen:

  • Symmetrisch

  • Kann Daten verschlüsseln und entschlüsseln

  • Wird im selben Ordner AWS-Region wie der Cluster erstellt

  • Wenn der KMS Schlüssel in einem anderen Konto erstellt wurde, muss der IAMPrincipal Zugriff auf den KMS Schlüssel haben.

Weitere Informationen finden Sie im AWS Key Management Service Entwicklerhandbuch unter IAMPrinzipalen in anderen Konten die Verwendung eines KMS Schlüssels gestatten.

Warnung

Sie können die Verschlüsselung von Secrets nicht deaktivieren, nachdem Sie sie aktiviert haben. Diese Aktion ist unumkehrbar.

eksctl

Sie können die Verschlüsselung auf zwei Arten aktivieren:

  • Fügen Sie Ihrem Cluster mit einem einzigen Befehl Verschlüsselung hinzu.

    Um Ihre Secrets automatisch erneut zu verschlüsseln, führen Sie den folgenden Befehl aus.

    eksctl utils enable-secrets-encryption \ --cluster my-cluster \ --key-arn arn:aws:kms:region-code:account:key/key

    Um die automatische Neuverschlüsselung Ihrer Secrets zu deaktivieren, führen Sie den folgenden Befehl aus.

    eksctl utils enable-secrets-encryption --cluster my-cluster \ --key-arn arn:aws:kms:region-code:account:key/key \ --encrypt-existing-secrets=false
  • Fügen Sie Ihrem Cluster eine Verschlüsselung mit einer kms-cluster.yaml-Datei hinzu.

    apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code secretsEncryption: keyARN: arn:aws:kms:region-code:account:key/key

    Um Ihre Secrets automatisch erneut zu verschlüsseln, führen Sie den folgenden Befehl aus.

    eksctl utils enable-secrets-encryption -f kms-cluster.yaml

    Um die automatische Neuverschlüsselung Ihrer Secrets zu deaktivieren, führen Sie den folgenden Befehl aus.

    eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
AWS Management Console
  1. Öffnen Sie die EKS Amazon-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

  2. Wählen Sie den Cluster aus, dem Sie Verschlüsselung hinzufügen KMS möchten.

  3. Wählen Sie die Registerkarte Overview (Übersicht) aus (sie ist standardmäßig ausgewählt).

  4. Scrollen Sie nach unten zum Abschnitt Secrets encryption (Secrets-Verschlüsselung) und wählen Sie Enable (Aktivieren) aus.

  5. Wählen Sie einen Schlüssel in der Dropdown-Liste und dann die Schaltfläche Enable (Aktivieren) aus. Wenn keine Schlüssel aufgeführt sind, müssen Sie zuerst einen erstellen. Weitere Informationen finden Sie unter Erstellen von Schlüsseln

  6. Wählen Sie die Schaltfläche Confirm (Bestätigen) aus, um den ausgewählten Schlüssel zu verwenden.

AWS CLI
  1. Ordnen Sie die Secrets-Verschlüsselungskonfiguration mithilfe des folgenden AWS CLI Befehls Ihrem Cluster zu. Ersetzen Sie den Beispielwerte mit deinen eigenen.

    aws eks associate-encryption-config \ --cluster-name my-cluster \ --encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:region-code:account:key/key"}}]'

    Eine Beispielausgabe sieht wie folgt aus.

    {   "update": {     "id": "3141b835-8103-423a-8e68-12c2521ffa4d",     "status": "InProgress",     "type": "AssociateEncryptionConfig",     "params": [       {         "type": "EncryptionConfig",         "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code:account:key/key\"}}]"       }     ],     "createdAt": 1613754188.734,     "errors": []   } }
  2. Sie können den Status Ihrer Verschlüsselungsaktualisierung mit dem folgenden Befehl überwachen. Verwenden Sie den cluster name und die update ID, die in der vorherigen Ausgabe zurückgegeben wurden. Wenn der Status Successful angezeigt wird, ist das Update abgeschlossen.

    aws eks describe-update \ --region region-code \ --name my-cluster \ --update-id 3141b835-8103-423a-8e68-12c2521ffa4d

    Eine Beispielausgabe sieht wie folgt aus.

    {   "update": {     "id": "3141b835-8103-423a-8e68-12c2521ffa4d",     "status": "Successful",     "type": "AssociateEncryptionConfig",     "params": [       {         "type": "EncryptionConfig",         "value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code:account:key/key\"}}]"       }     ],     "createdAt": 1613754188.734>,     "errors": []   } }
  3. Führen Sie den Befehl describe-cluster aus, um zu überprüfen, ob die Verschlüsselung in Ihrem Cluster aktiviert ist. Die Antwort enthält eine EncryptionConfig-Zeichenfolge.

    aws eks describe-cluster --region region-code --name my-cluster

Nachdem Sie die Verschlüsselung in Ihrem Cluster aktiviert haben, müssen Sie alle vorhandenen Secrets mit dem neuen Schlüssel verschlüsseln:

Anmerkung

Wenn Sie eksctl verwenden, ist die Ausführung des folgenden Befehls nur dann erforderlich, wenn Sie die automatische Neuverschlüsselung Ihrer Secrets deaktivieren.

kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value"
Warnung

Wenn Sie die Verschlüsselung von Geheimnissen für einen vorhandenen Cluster aktivieren und der von Ihnen verwendete KMS Schlüssel jemals gelöscht wird, gibt es keine Möglichkeit, den Cluster wiederherzustellen. Wenn Sie den KMS Schlüssel löschen, wird der Cluster dauerhaft in einen heruntergekommenen Zustand versetzt. Weitere Informationen finden Sie unter AWS KMSSchlüssel löschen.

Anmerkung

Standardmäßig erstellt der create-key Befehl einen symmetrischen KMS Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie, die dem Root-Administrator des Kontos Zugriff auf AWS KMS Aktionen und Ressourcen gewährt. Wenn Sie den Umfang der Berechtigungen einschränken möchten, stellen Sie sicher, dass die kms:CreateGrant Aktionen kms:DescribeKey und in der Richtlinie für den Prinzipal zulässig sind, der die create-cluster API aufruft.

Für Cluster, die KMS Envelope Encryption verwenden, sind kms:CreateGrant Berechtigungen erforderlich. Die Bedingung kms:GrantIsForAWSResource wird für die CreateCluster Aktion nicht unterstützt und sollte nicht in KMS Richtlinien zur Steuerung der kms:CreateGrant Berechtigungen von Benutzern verwendet werden, die diese Aktion ausführen CreateCluster.