View a markdown version of this page

Konfiguriere die AWS Security Token Service-Endpunkt für ein Dienstkonto - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

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.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.

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.

Konfiguriere die AWS Security Token Service-Endpunkt für ein Dienstkonto

Wenn Sie ein Kubernetes-Dienstkonto mit IAM-Rollen für Dienstkonten verwenden, können Sie den Typ des AWS Security Token Service-Endpoints konfigurieren, der vom Dienstkonto verwendet wird.

AWS empfiehlt, die regionalen AWS STS-Endpunkte anstelle des globalen Endpunkts zu verwenden. Dies reduziert die Latenz, bietet integrierte Redundanz und erhöht die Gültigkeit der Sitzungstoken. Der AWS Security Token Service muss in der AWS Region aktiv sein, in der der Pod ausgeführt wird. Darüber hinaus muss Ihre Anwendung über eine integrierte Redundanz für eine andere AWS Region verfügen, falls der Dienst in der AWS Region ausfällt. Weitere Informationen finden Sie unter Managing AWS STS in an AWS Region im IAM-Benutzerhandbuch.

Anmerkung

Um Anfragen nach IRSA-Anmeldeinformationen in einer VPC ohne ausgehenden Internetzugriff als privat zu kennzeichnen, erstellen Sie einen AWS STS-Schnittstellenendpunkt (com.amazonaws.region-code.sts) und legen Sie den regionalen Endpunkt wie in diesem Thema beschrieben fest. Der globale Endpunkt (sts.amazonaws.com) umgeht den VPC-Endpunkt. Um den discovery/JWKS Cluster-OIDC-Endpunkt auch privat zu erreichen (für Provider-Setup und Token-Validatoren), erstellen Sie einen separaten VPC-Endpunkt (). com.amazonaws.region-code.oidc-eks Weitere Informationen finden Sie unter Greifen Sie mit folgenden Methoden auf den Cluster-OIDC-Endpunkt zu AWS PrivateLink.

Die folgenden Beispiele verwenden alle das vom Amazon-VPC-CNI-Plugin verwendete Kubernetes-Servicekonto aws-node. Sie können das example values durch Ihre eigenen Dienstkonten, Pods, Namespaces und andere Ressourcen ersetzen.

  1. Wählen Sie einen Pod aus, der ein Servicekonto verwendet, für das Sie den Endpunkt ändern möchten. Ermitteln Sie, AWS in welcher Region der Pod läuft. Ersetze es aws-node-6mfgv durch deinen Pod-Namen und kube-system durch den Namespace deines Pods.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep Node:

    Eine Beispielausgabe sieht wie folgt aus.

    ip-192-168-79-166.us-west-2/192.168.79.166

    In der vorherigen Ausgabe läuft der Pod auf einem Knoten in der Region us-west-2 AWS .

  2. Ermitteln Sie den Endpunkt-Typ, den das Servicekonto des Pods verwendet.

    kubectl describe pod aws-node-6mfgv -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Eine Beispielausgabe sieht wie folgt aus.

    AWS_STS_REGIONAL_ENDPOINTS: regional

    Wenn der aktuelle Endpunkt global ist, dann wird global in der Ausgabe zurückgegeben. Wenn keine Ausgabe zurückgegeben wird, wird der Standard-Endpunkttyp verwendet und wurde nicht überschrieben.

  3. Wenn Ihre Cluster- oder Plattformversion dieselbe oder höher ist als die in der Tabelle aufgeführten, können Sie den von Ihrem Servicekonto verwendeten Endpunkttyp mit einem der folgenden Befehle vom Standardtyp in einen anderen Typ ändern. Ersetzen Sie aws-node mit dem Namen Ihres Servicekontos, kube-system mit dem Namespace Ihres vorhandenen -Servicekontos.

    • Wenn Ihr Standard- oder aktueller Endpunkttyp global ist und Sie ihn in regional ändern möchten:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=true

      Wenn Sie IAM-Rollen für Servicekonten verwenden, um vorsignierte S3-URLs in Ihrer Anwendung zu generieren, die in Pods-Containern ausgeführt wird, ähnelt das Format der URL für regionale Endpunkte dem folgenden Beispiel:

      https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...
    • Wenn Ihr Standard- oder aktueller Endpunkttyp regional ist und Sie ihn in global ändern möchten:

      kubectl annotate serviceaccount -n kube-system aws-node eks.amazonaws.com/sts-regional-endpoints=false

      Wenn Ihre Anwendung explizit Anfragen an globale AWS STS-Endpunkte stellt und Sie das Standardverhalten der Verwendung regionaler Endpunkte in Amazon EKS-Clustern nicht außer Kraft setzen, schlagen Anfragen mit einem Fehler fehl. Weitere Informationen finden Sie unter Pod-Container erhalten folgenden Fehler: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region.

      Wenn Sie IAM-Rollen für Servicekonten verwenden, um vorsignierte S3-URLs in Ihrer Anwendung zu generieren, die in Pods-Containern ausgeführt wird, entspricht das Format der URL für globale Endpunkte in etwa dem folgenden Beispiel:

      https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=your-access-key-id/date/us-west-2/s3/aws4_request&...

    Wenn Sie über eine Automatisierung verfügen, die die vorsignierte URL in einem bestimmten Format erwartet, oder wenn Ihre Anwendung oder nachgelagerte Abhängigkeiten, die vorsignierte URLs verwenden, Erwartungen an die AWS Zielregion haben, nehmen Sie die erforderlichen Änderungen vor, um den entsprechenden STS-Endpunkt zu verwenden. AWS

  4. Löschen Sie alle vorhandenen Pods, die dem Servicekonto zugeordnet sind, und erstellen Sie sie neu, um die Umgebungsvariablen für Anmeldeinformationen anzuwenden. Der mutierende Webhook wendet sie nicht auf Pods an, die bereits ausgeführt werden. Sie können und -l k8s-app=aws-node durch die Informationen für die Pods ersetzen Podskube-system, für die Sie Ihre Anmerkung eingerichtet haben.

    kubectl delete Pods -n kube-system -l k8s-app=aws-node
  5. Bestätigen Sie, dass alle Pods neu gestartet wurden.

    kubectl get Pods -n kube-system -l k8s-app=aws-node
  6. Zeigen Sie die Umgebungsvariablen für einen der Pods an. Stellen Sie sicher, dass der AWS_STS_REGIONAL_ENDPOINTS-Wert der ist, den Sie im vorherigen Schritt festgelegt haben.

    kubectl describe pod aws-node-kzbtr -n kube-system |grep AWS_STS_REGIONAL_ENDPOINTS

    Eine Beispielausgabe sieht wie folgt aus.

    AWS_STS_REGIONAL_ENDPOINTS=regional