Warum kann ich keine kubeconfig-Datei für meinen Amazon-EKS-Cluster generieren?

Lesedauer: 3 Minute
0

Ich erhalte einen AccessDeniedException-Fehler, wenn ich versuche, eine kubeconfig-Datei für einen Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster zu generieren.

Kurzbeschreibung

Sie benötigen die Berechtigung, die API-Aktion eks:DescribeCluster mit dem Cluster zu verwenden, um eine kubeconfig-Datei für einen Amazon EKS-Cluster zu generieren. Um die Berechtigung zu erhalten, fügen Sie einem IAM-Benutzer eine AWS Identity and Access Management (IAM)-Richtlinie hinzu.

Auflösung

Führen Sie die folgenden Schritte aus, um einem IAM-Benutzer eine IAM-Richtlinie anzuhängen:

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie im Navigationsbereich Benutzer oder Rollen aus.

3.    Wählen Sie den Namen des Benutzers oder der Rolle aus, in die eine Richtlinie eingebettet werden soll.

4.    Wählen Sie auf der Registerkarte Berechtigungen die Option Inline-Richtlinie hinzufügen aus.

5.    Wählen Sie die Registerkarte JSON aus.

6.    Verwenden Sie einen Texteditor, um den Code durch die folgende IAM-Richtlinie zu ersetzen:

{
   "Version": "2012-10-17",
   "Statement": [
       { 
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster"
            ],
            "Resource": "*"
       }
    ]
}

7.    Wählen Sie Richtlinie überprüfen aus.

8.    Geben Sie für Name einen Namen für die Richtlinie ein. Zum Beispiel: eks_update-kubeconfig.

Hinweis: Sie können einen beliebigen Namen für die Richtlinie wählen.

9.    Wählen Sie Richtlinie erstellen aus.

Eine explizite Verweigerungsmeldung zeigt an, dass es eine IAM-Richtlinie gibt, die die meisten Aktionen verweigert, wenn die Multi-Faktor-Authentifizierung (MFA) falsch ist:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "BlockMostAccessUnlessSignedInWithMFA",
      "Effect": "Deny",
      "NotAction": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ListUsers",
        "iam:ListVirtualMFADevices",
        "iam:ResyncMFADevice",
        "sts:GetSessionToken"
      ],
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Hinweis: Da Sie ein MFA-Gerät verwenden, müssen Sie ein MFA-Token verwenden, um den Zugriff auf AWS-Ressourcen mit der AWS Command Line Interface (AWS CLI) zu authentifizieren. Befolgen Sie die Schritte im Artikel Wie verwende ich ein MFA-Token, um den Zugriff auf meine AWS-Ressourcen über die AWS CLI zu authentifizieren? Führen Sie dann den AWS CLI-Befehl sts get-session-token aus.

Beispiel:

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Hinweis: Ersetzen Sie arn-of-the-mfa-device durch die ARN Ihres MFA-Geräts und dencode-from-token durch den Code Ihres Tokens.

Sie können temporäre Anmeldeinformationen verwenden, indem Sie die Werte in Umgebungsvariablen exportieren.

Beispiel:

$ export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output

$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output

$ export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Führen Sie den Befehl update-kubeconfig aus und bestätigen Sie, dass die Konfigurationsdatei unter ~/.kube/config aktualisiert wird:

aws eks --region region-code update-kubeconfig --name cluster_name

Hinweis: Ersetzen Sie den region-code durch den Code Ihrer AWS-Region und den Clusternamen durch den Namen Ihres Clusters.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren