Direkt zum Inhalt

Wie behebe ich den Fehler „invalid username-password pair or user is disabled“, wenn ich mit IAM-Authentifizierung eine Verbindung zu meinem ElastiCache-Cluster herstelle?

Lesedauer: 6 Minute
0

Wenn ich die AWS Identity and Access Management (IAM)-Authentifizierung verwende, um eine Verbindung zu meinem Amazon ElastiCache Valkey- und Redis OSS-Cluster herzustellen, erhalte ich die Fehlermeldung „AuthenticationError: invalid username-password pair or user is disabled“.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Benutzer erstellen

Führe die folgenden Schritte aus:

  1. Öffne die ElastiCache-Konsole.
  2. Wähle unter Konfigurationen die Option Benutzerverwaltung.
  3. Wähle Benutzer erstellen und gib dann die folgenden Informationen ein:
    Gib für Benutzer-ID eine Benutzer-ID ein.
    Gib als Benutzername einen Benutzernamen ein.
    Hinweis: Für IAM-Benutzer müssen die Benutzer-ID und der Benutzername identisch und in Kleinbuchstaben geschrieben sein.
    Wähle die Engine aus der Drop-down-Liste aus.
    Wähle für den Authentifizierungsmodus die IAM-Authentifizierung aus.
    Gib im Feld Zugriffszeichenfolge den Wert on ~* +@all ein.
    Hinweis: Um einem aktiven Benutzer Zugriff auf alle verfügbaren Tasten und Befehle zu gewähren, verwende die Zeichenfolge on ~*+@all. Es hat sich bewährt, restriktive Zugriffszeichenfolgen zu erstellen, die nur die Berechtigungen gewähren, die die Benutzer benötigen. Weitere Informationen findest du unter Angeben von Berechtigungen mithilfe einer Zugriffszeichenfolge.
  4. Wähle Erstellen.

Benutzergruppen erstellen

Führe die folgenden Schritte aus:

  1. Öffne die ElastiCache-Konsole.
  2. Wähle unter Konfigurationen die Option Benutzergruppenverwaltung.
  3. Wähle Benutzergruppe erstellen.
  4. Gib für Benutzergruppen-ID die Benutzergruppen-ID ein.
  5. Wähle die Engine aus der Drop-down-Liste aus.
  6. Wähle für den Abschnitt Ausgewählte Benutzer die Option Verwalten.
  7. Wähle aus der Benutzerliste den Benutzer aus, den du zuvor erstellt hast.
    Wichtig: Wenn du Redis für die Engine wählst, wähle den Benutzer mit dem Namen Standard aus. ElastiCache erstellt automatisch einen Standardbenutzer mit vollen Redis-Zugriffsberechtigungen, für den kein Passwort zur Authentifizierung erforderlich ist. Informationen zum Ändern der Standardbenutzereinstellungen findest du unter Erstellen von Benutzern und Benutzergruppen mithilfe der Konsole und der CLI.
  8. Wähle Erstellen.

IAM-Authentifizierung zulassen

Aktiviere die In-Transit-Verschlüsselung (TLS) auf dem ElastiCache-Cluster.

Die rollenbasierte Zugriffskontrolle für den Cluster

Führe die folgenden Schritte aus:

  1. Öffne die ElastiCache-Konsole.
  2. Wähle das Cluster aus der Cluster-Liste aus.
  3. Wähle Aktionen und dann ** Ändern**.
  4. Wähle unter Zugriffskontrolle die Option Zugriffskontrollliste für Benutzergruppen und wähle dann die Benutzergruppe aus.
  5. Wähle Änderungen in der Vorschau anzeigen.
  6. Wähle Speichern.

IAM-Richtlinie konfigurieren

Füge der IAM-Identität, die du für die Verbindung mit dem ElastiCache-Cluster verwendest, die Aktion elasticache:Connect hinzu. Beispiel für eine IAM-Richtlinie:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticache:Connect"
      ],
      "Resource": [
        "AWS_RESOURCE_ARN_1",
        "AWS_RESOURCE_ARN_2"
      ]
    }
  ]
}

Hinweis: Ersetze AWS_RESOURCE_ARN_1 durch den Amazon-Ressourcennamen (ARN) des ElastiCache Valkey- oder Redis OSS-Clusters und ersetze AWS_RESOURCE_ARN_2 durch den ARN des IAM-Benutzers für ElastiCache.

Hänge dann die IAM-Rolle an die Amazon Elastic Compute Cloud (Amazon EC2)-Instance oder die AWS Lambda-Funktion an, die eine Verbindung zum ElastiCache-Cluster herstellt. Weitere Informationen findest du unter Authentifizieren mit IAM.

Hinweis: Wenn die IAM-Richtlinie korrekt ist, du aber immer noch den AuthenticationError-Fehler erhältst, überprüfe die anderen Richtlinientypen in der Organisation auf Einschränkungen. Weitere Informationen findest du unter Andere Richtlinientypen unter Zugriff mithilfe von Richtlinien verwalten.

Testen der Netzwerkkonnektivität

Überprüfe die Netzwerkkonnektivität zwischen dem ElastiCache-Cluster und der Client-Ressource.

Authentifizierungstoken generieren

Wenn du eine IAM-Authentifizierung verwendest, um eine Verbindung zu den ElastiCache-Clustern herzustellen, verwende ein Authentifizierungstoken anstelle eines Passworts. Das IAM-Authentifizierungstoken ist 15 Minuten gültig.

Für langlebige Verbindungen empfiehlt es sich, einen Valkey- oder Redis OSS-Client zu verwenden, der eine Schnittstelle zum Anbieter von Anmeldeinformationen unterstützt. Um eine Verbindung um 12 Stunden zu verlängern, sende AUTH oder HELLO mit einem neuen Token.

Gehe wie folgt vor, um ein IAM-Authentifizierungstoken zu generieren und eine Verbindung zum ElastiCache-Cluster herzustellen:

  1. Richte die Amazon EC2-Instance ein, um die Demo-Anwendung auszuführen. Eine Anleitung dazu findest du in Demo-Anwendung der Elasticache-IAM-Authentifizierung auf der GitHub-Website.

  2. Um das Token zu generieren, wenn du die Demo-App verwendest, führe den folgenden Java-CLI-Befehl aus:

    java -cp target/ElastiCacheIAMAuthDemoApp-1.0-SNAPSHOT.jar \
    com.amazon.elasticache.IAMAuthTokenGeneratorApp --region REGION --replication-group-id REPLICATION-GROUP-ID --user-id USER-ID

    Hinweis: Ersetze REGION durch die AWS-Region, REPLICATION-GROUP-ID durch die ElastiCache-Replikationsgruppen-ID und USER-ID durch die IAM-Benutzer-ID für ElastiCache.

  3. Verwende das Token als Passwort, um eine Verbindung zum ElastiCache-Cluster herzustellen. Du kannst die Valkey- oder Redis-CLI oder ihre Client-API-Bibliotheken verwenden, um eine Verbindung zum ElastiCache-Cluster herzustellen.
    Beispiel für einen Valkey CLI-Befehl:

    valkey-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER ID -a TEMPORARY-SECURITY-CREDENTIAL

    Beispiel für einen Redis-CLI-Befehl:

    redis6-cli -h PRIMARY-ENDPOINT -p 6379 --tls -c --user USER-ID -a TEMPORARY-SECURITY-CREDENTIAL

    Hinweis: Ersetze PRIMARY-ENDPOINT durch den primären Endpunkt des ElastiCache-Clusters, USER-ID durch die IAM-Benutzer-ID und TEMPORARY-SECURITY-CREDENTIAL durch das IAM-Authentifizierungstoken.

    Wichtig: Wenn du die Befehle valkey-cli oder redis-cli verwendest, musst du sowohl die Argumente --tls als auch -a angeben. Wenn du diese Argumente nicht angibst oder falsche Anmeldeinformationen eingibst, erhältst du die Fehlermeldung NOAUTH oder AUTH failed. Wenn du die Befehle valkey-cli oder redis-cli nur mit --tls argument verwendest, verwende AUTH user-id temporary-security-credential, nachdem du eine Verbindung hergestellt hast, um die Authentifizierung abzuschließen.

    Beispiel für einen Lettuce Redis OSS-Client:

    RedisURI redisURI = RedisURI.builder()
                .withHost(CACHE-NAME)
                .withPort(6379)
                .withSsl(true)
                .withAuthentication(USER-ID, TEMPORARY-SECURITY-CREDENTIAL)
                .build();
    return RedisClient.create(redisURI);

Die Komponenten in der Redis OSS- oder Valkey-Client-Konfiguration überprüfen

Überprüfe die folgenden Konfigurationen im Redis OSS- oder Valkey-Client:

  • Der Valkey- oder Redis OSS-Client hat den richtigen ElastiCache-Cluster-Endpunkt und -Port.
  • Der Valkey- oder Redis OSS-Client unterstützt SSL/TLS.
  • Der Benutzername ist ein aktivierter IAM-Benutzer für ElastiCache.
  • Du hast die neueste Version des Valkey- oder Redis OSS-Clients, die der Konfiguration, dem Engine-Typ und den Versionsparametern des ElastiCache-Clusters entspricht. Veraltete oder inkompatible Client-Versionen verursachen Authentifizierungsfehler.
  • Du hast die Client-Timeout-Parameter so konfiguriert, dass sie den Anforderungen entsprechen. Falsche Timeout-Einstellungen können Verbindungen vorzeitig beenden und zu Authentifizierungsfehlern führen.

Messwerte von Amazon CloudWatch überprüfen

Verwende Amazon CloudWatch-Metriken, um den Zustand und die Aktivität des ElastiCache-Clusters zu überwachen. Um Authentifizierungsprobleme zu identifizieren, empfiehlt es sich, die folgenden Metriken zu überwachen:

  • Überprüfe deine Connections-Metriken wie CurrConnections und NewConnections. Ein Rückgang neuer Verbindungen bedeutet, dass Authentifizierungsfehler den fehlgeschlagenen Verbindungsversuch verursacht haben. ElastiCache verwendet jeweils 2 bis 6 Verbindungen, um den Cluster zu überwachen. Weitere Informationen findest du unter Metriken für Valkey und Redis OSS.
  • Aktiviere IAMAuthenticationExpirations, um abgelaufene IAM-Authentifizierungstoken zu überwachen, die zu einem Verbindungsausfall führen können.
  • Überprüfe IAMAuthenticationThrottling, um die Anzahl der Authentifizierungsversuche mit IAM-Anmeldeinformationen zu ermitteln, die ElastiCache gedrosselt haben.

Ähnliche Informationen

Vereinfache die Verwaltung des Zugriffs auf Amazon ElastiCache für Redis-Cluster mit IAM

Demo-Anwendung zur ElastiCache-IAM-Authentifizierung auf der GitHub-Website

So stellst du mit dem ElastiCache IAM Credential Provider auf der Redisson-Website eine Verbindung zu Redis her

AWS OFFICIALAktualisiert vor 10 Monaten