Verwenden Sie AWS Secrets Manager Geheimnisse in Amazon Elastic Kubernetes Service - AWS Secrets Manager

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.

Verwenden Sie AWS Secrets Manager Geheimnisse in Amazon Elastic Kubernetes Service

Um Geheimnisse aus Secrets Manager als in EKSAmazon-Pods gemountete Dateien anzuzeigen, können Sie den AWS Secrets and Configuration Provider (ASCP) für den Kubernetes Secrets Store CSI Driver verwenden. Das ASCP funktioniert mit Amazon Elastic Kubernetes Service (AmazonEKS) 1.17+, auf dem eine Amazon-Knotengruppe ausgeführt wird. EC2 AWS Fargate Knotengruppen werden nicht unterstützt. Mit dem ASCP können Sie Ihre Secrets in Secrets Manager speichern und verwalten und sie dann über Ihre Workloads abrufen, die auf Amazon EKS laufen. Wenn Ihr Secret mehrere Schlüssel/Wert-Paare im JSON Format enthält, können Sie wählen, welche in Amazon bereitgestellt werden sollen. EKS The ASCP verwendet JMESPathSyntax, um die Schlüssel/Wert-Paare in Ihrem Geheimnis abzufragen. Das funktioniert ASCP auch mit Parameter Store-Parametern.

Wenn Sie einen privaten EKS Amazon-Cluster verwenden, stellen Sie sicher, VPC dass der Cluster, in dem sich der Cluster befindet, über einen Secrets Manager Manager-Endpunkt verfügt. Der Secrets Store CSI Driver verwendet den Endpunkt, um Secrets Manager aufzurufen. Hinweise zum Erstellen eines Endpunkts in einem VPC finden Sie unterVPCEndpunkt.

Wenn Sie die automatische Rotation von Secrets Manager für Ihre Secrets Manager verwenden, können Sie auch die Funktion zum Abgleich der Rotation von Secrets Store CSI Driver verwenden, um sicherzustellen, dass Sie das neueste Geheimnis von Secrets Manager abrufen. Weitere Informationen finden Sie unter Automatische Rotation bereitgestellter Inhalte und synchronisierter Kubernetes Secrets.

Schritt 1: Einrichten der Zugriffssteuerung

Der ASCP ruft die EKS Amazon-Pod-Identität ab und tauscht sie gegen eine IAM Rolle ein. Sie legen Berechtigungen in einer IAM Richtlinie für diese IAM Rolle fest. Wenn der die IAM Rolle ASCP übernimmt, erhält er Zugriff auf die von Ihnen autorisierten Geheimnisse. Andere Container können nicht auf die Geheimnisse zugreifen, es sei denn, Sie verknüpfen sie ebenfalls mit der IAM Rolle.

Wenn Aufrufe von Kubernetes ASCP zum Nachschlagen der Region und der IAM Rolle, die dem Pod zugeordnet sind, von Kubernetes gedrosselt werden, können Sie die Drosselungsquoten wie in Schritt 2 gezeigt wie in Schritt 2 gezeigt helm install ändern.

So gewähren Sie Ihrem EKS Amazon-Pod Zugriff auf Secrets Manager
  1. Erstellen Sie eine Berechtigungsrichtlinie, die Zugriff auf die Geheimnisse gewährtsecretsmanager:GetSecretValue, auf die der Pod zugreifen muss. secretsmanager:DescribeSecret Eine Beispielrichtlinie finden Sie unter Beispiel: Erlaubnis, einzelne Geheimnisse zu lesen und zu beschreiben.

  2. Erstellen Sie einen IAM OpenID Connect (OIDC) -Anbieter für den Cluster, falls Sie noch keinen haben. Weitere Informationen finden Sie unter Einen IAM OIDC Anbieter für Ihren Cluster erstellen im EKSAmazon-Benutzerhandbuch.

  3. Erstellen Sie eine IAMRolle für ein Servicekonto und fügen Sie die Richtlinie hinzu. Weitere Informationen finden Sie unter Eine IAM Rolle für ein Servicekonto erstellen im EKSAmazon-Benutzerhandbuch.

  4. Wenn Sie einen privaten EKS Amazon-Cluster verwenden, stellen Sie sicher, VPC dass der Cluster, in dem sich der Cluster befindet, einen AWS STS Endpunkt hat. Informationen zum Erstellen eines Endpunkts finden Sie unter VPCInterface-Endpoints im AWS Identity and Access Management Benutzerhandbuch.

Schritt 2: Installieren und konfigurieren Sie ASCP

Das ASCP ist GitHub im secrets-store-csi-provider-aws-Repository verfügbar. Das Repo enthält auch YAML Beispieldateien zum Erstellen und Mounten eines Secrets.

Während der Installation können Sie den so konfigurieren, ASCP dass er einen FIPS Endpunkt verwendet. Eine Liste der Endpunkte finden Sie unter AWS Secrets Manager Endpunkte.

Um das ASCP mit Helm zu installieren
  1. Um sicherzustellen, dass das Repo auf die neuesten Charts verweist, verwenden Sie helm repo update.

  2. Fügen Sie das Secrets Store CSI Driver-Diagramm hinzu.

    helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  3. Installieren Sie das Diagramm. Um die Drosselung zu konfigurieren, fügen Sie das folgende Kennzeichen hinzu: --set-json 'k8sThrottlingParams={"qps": "<number of queries per second>", "burst": "<number of queries per second>"}'

    helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  4. Fügen Sie das ASCP Diagramm hinzu.

    helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
  5. Installieren Sie das Diagramm. Um einen FIPS Endpunkt zu verwenden, fügen Sie das folgende Flag hinzu: --set useFipsEndpoint=true

    helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
Zur Installation mit dem YAML im Repo
  • Verwenden Sie die folgenden Befehle.

    helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml

Schritt 3: Identifizieren Sie, welche Secrets bereitgestellt werden sollen

Um festzustellen, welche ASCP Geheimnisse in Amazon EKS als Dateien im Dateisystem bereitgestellt werden, erstellen Sie eine SecretProviderClass YAML Datei. Die SecretProviderClass listet die Geheimnisse auf, die gemountet werden sollen, und den Dateinamen, unter dem sie gemountet werden sollen. Der SecretProviderClass muss sich im selben Namespace befinden wie der EKS Amazon-Pod, auf den er verweist.

Die folgenden Beispiele zeigen, wie Sie die Secrets beschreibenSecretProviderClass, die Sie mounten möchten, und wie die im EKS Amazon-Pod gemounteten Dateien benannt werden sollen.

Beispiel: Hängen Sie Geheimnisse nach Namen ein oder ARN

Das folgende Beispiel zeigt eineSecretProviderClass, die drei Dateien in Amazon EKS mountet:

  1. Ein mit full ARN spezifiziertes Geheimnis.

  2. Ein durch den Namen spezifiziertes Secret.

  3. Eine bestimmte Version eines Secrets.

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret2-d4e5f6" - objectName: "MySecret3" objectType: "secretsmanager" - objectName: "MySecret4" objectType: "secretsmanager" objectVersionLabel: "AWSCURRENT"

Beispiel: Schlüssel-/Wert-Paare aus einem Secret mounten

Das folgende Beispiel zeigt eineSecretProviderClass, die drei Dateien in Amazon EKS mountet:

  1. Ein mit full ARN spezifiziertes Geheimnis.

  2. Das username-Schlüssel/Wert-Paar aus demselben Secret.

  3. Das password-Schlüssel/Wert-Paar aus demselben Secret.

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:111122223333:secret:MySecret-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword

Beispiel: Definieren einer Failover-Region für ein multiregionales Secret

Um die Verfügbarkeit bei Verbindungsausfällen oder bei Notfallwiederherstellungskonfigurationen zu gewährleisten, ASCP unterstützt der eine automatische Failover-Funktion zum Abrufen von Geheimnissen aus einer sekundären Region.

Das folgende Beispiel zeigt ein SecretProviderClass, das ein Secret abruft, das in mehrere Regionen repliziert wird. In diesem Beispiel ASCP versucht der, das Geheimnis sowohl von als auch us-east-1 abzurufen. us-east-2 Wenn eine der Regionen einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, ASCP wird keines der Secrets bereitgestellt. Wenn das Geheimnis erfolgreich abgerufen wurdeus-east-1, hängt es diesen ASCP geheimen Wert ein. Wenn das Geheimnis nicht erfolgreich abgerufen wurdeus-east-1, es aber erfolgreich abgerufen wurdeus-east-2, hängt er diesen ASCP geheimen Wert an.

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MySecret"

Beispiel: Ein Failover-Secret zum Mounten auswählen

Das folgende Beispiel zeigt ein SecretProviderClass, das angibt, welches Secret im Falle eines Failovers gemountet werden soll. Das Failover-Secret ist kein Replikat. In diesem Beispiel ASCP versucht der, die beiden von objectName angegebenen Secrets abzurufen. Wenn einer von beiden einen 4xx-Fehler zurückgibt, z. B. aufgrund eines Authentifizierungsproblems, hängt ASCP er keines der Geheimnisse ein. Wenn das Geheimnis erfolgreich abgerufen wurdeus-east-1, hängt es diesen ASCP geheimen Wert ein. Wenn das Geheimnis nicht erfolgreich abgerufen wurdeus-east-1, es aber erfolgreich abgerufen wurdeus-east-2, hängt er diesen ASCP geheimen Wert an. Die gemountete Datei in Amazon EKS hat einen NamenMyMountedSecret.

apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:secretsmanager:us-east-1:111122223333:secret:MySecret-a1b2c3" objectAlias: "MyMountedSecret" failoverObject: - objectName: "arn:aws:secretsmanager:us-east-2:111122223333:secret:MyFailoverSecret-d4e5f6"

Schritt 4: Mounten Sie die Geheimnisse als Dateien im EKS Amazon-Pod

Die folgenden Anweisungen zeigen, wie Sie Geheimnisse mithilfe der Beispieldateien ExampleSecretProviderClass.yaml und ExampleDeployment .yaml als YAML Dateien mounten.

Um Geheimnisse in Amazon zu montieren EKS
  1. Wenden Sie das mit SecretProviderClass dem Befehl auf den Pod ankubectl apply -f ExampleSecretProviderClass.yaml.

  2. Stellen Sie Ihren Pod mit dem Befehl bereitkubectl apply -f ExampleDeployment.yaml.

  3. Der ASCP mountet die Dateien.

Fehlerbehebung

Sie können die meisten Fehler anzeigen, indem Sie die Pod-Bereitstellung beschreiben.

Fehlermeldungen für Ihren Container anzeigen
  1. Erstellen Sie mit dem folgenden Befehl eine Liste der Pod-Namen. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie -n <NAMESPACE>.

    kubectl get pods
  2. Um den Pod im folgenden Befehl zu beschreiben, für <PODID> verwenden Sie die Pod-ID der Pods, die Sie im vorherigen Schritt gefunden haben. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie -n <NAMESPACE>.

    kubectl describe pod/<PODID>
Um Fehler für das zu sehen ASCP
  • Um weitere Informationen in den Anbieterprotokollen zu finden, geben Sie den folgenden Befehl ein <PODID> verwenden Sie die ID des csi-secrets-store-provider-aws-Pods.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/<PODID>