Verwenden Sie AWS Secrets and Configuration Provider CSI mit IAM-Rollen für Dienstkonten (IRSA) - 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 and Configuration Provider CSI mit IAM-Rollen für Dienstkonten (IRSA)

Voraussetzungen

  • Amazon-EKS-Cluster (Version 1.17 oder höher)

  • Zugriff auf AWS CLI einen Amazon EKS-Cluster über kubectl

Einrichten der Zugriffssteuerung

ASCP ruft die Amazon-EKS-Pod-Identität ab und tauscht sie gegen eine IAM-Rolle. Sie legen in einer IAM-Richtlinie Berechtigungen für diese IAM-Rolle fest. Wenn das ASCP die IAM-Rolle übernimmt, erhält es Zugriff auf die von Ihnen autorisierten Geheimnisse. Andere Container können nur auf die Secrets zugreifen, wenn Sie diese auch der IAM-Rolle zuordnen.

So gewähren Sie Ihrem Amazon EKS Pod Zugriff auf Geheimnisse in 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, wenn Sie noch keinen haben. Weitere Informationen finden Sie unter Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster im Benutzerhandbuch für Amazon EKS.

  3. Erstellen Sie eine IAM-Rolle für das Servicekonto und fügen Sie die Richtlinie an. Weitere Informationen finden Sie unter Erstellen einer IAM-Rolle für ein Servicekonto im Benutzerhandbuch für Amazon EKS.

  4. Wenn Sie einen privaten Amazon EKS-Cluster verwenden, stellen Sie sicher, dass die VPC, in der sich der Cluster befindet, über einen AWS STS Endpunkt verfügt. Weitere Informationen zum Erstellen eines Endpunktes finden Sie unter Schnittstellen-VPC-Endpunkte im Benutzerhandbuch für AWS Identity and Access Management .

Identifizieren der Secrets, die gemountet werden sollen

Um zu bestimmen, welche Secrets der ASCP in Amazon EKS als Dateien im Dateisystem bereitstellt, erstellen Sie eine SecretProviderClass-YAML-Datei. Die SecretProviderClass listet die Secrets auf, die gemountet werden sollen, und den Dateinamen, unter dem sie bereitgestellt werden sollen. SecretProviderClass muss sich im gleichen Namespace wie der Amazon-EKS-Pod befinden, auf den verwiesen wird.

Hängen Sie die Secrets als Dateien ein

Die folgenden Anweisungen zeigen, wie Sie Geheimnisse mithilfe der YAML-Beispieldateien .yaml und ExampleSecretProviderClass.yaml als Dateien einhängen. ExampleDeployment

So hängen Sie Geheimnisse in Amazon EKS ein
  1. Wenden Sie die SecretProviderClass auf den Pod an:

    kubectl apply -f ExampleSecretProviderClass.yaml
  2. Stellen Sie den Pod bereit:

    kubectl apply -f ExampleDeployment.yaml
  3. 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. Rufen Sie mit dem folgenden Befehl eine Liste der Pod-Namen ab. Wenn Sie nicht den Standard-Namespace verwenden, verwenden Sie -n nameSpace.

    kubectl get pods
  2. Um den Pod zu beschreiben, podId verwenden Sie im folgenden Befehl 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
Fehler für den ASCP anzeigen
  • Um weitere Informationen in den Anbieterprotokollen zu finden, podId verwenden Sie im folgenden Befehl die ID des Pods csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/podId
  • Überprüfen Sie, ob die SecretProviderClass-CRD installiert wurde:
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    Dieser Befehl muss Informationen zur benutzerdefinierten Ressourcendefinition von SecretProviderClass zurückgeben.

  • Stellen Sie sicher, dass das SecretProviderClass Objekt erstellt wurde.
    kubectl get secretproviderclass SecretProviderClassName -o yaml