View a markdown version of this page

Migration von der kennwortbasierten Authentifizierung (AUTH) zur IAM-Authentifizierung - Amazon ElastiCache

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.

Migration von der kennwortbasierten Authentifizierung (AUTH) zur IAM-Authentifizierung

In diesem Handbuch wird beschrieben, wie Sie Ihren ElastiCache knotenbasierten Amazon-Cluster oder Serverless-Cache ohne Serviceunterbrechung von der kennwortbasierten Authentifizierung (AUTH) zur AWS Identity and Access Management (IAM) -Authentifizierung migrieren können.

Anmerkung

Wir empfehlen, diese Migration in einer Nicht-Produktionsumgebung zu testen, bevor Sie Änderungen an Ihrer Produktionsumgebung vornehmen.

-Übersicht

Die IAM-Authentifizierung bietet mehr Sicherheit, da langlebige Passwörter überflüssig werden. Stattdessen generieren Anwendungen mithilfe des AWS Signature Version 4-Signaturprozesses kurzlebige Authentifizierungstoken (gültig für bis zu 15 Minuten).

Voraussetzungen

Bevor Sie beginnen, prüfen Sie Folgendes:

  • In Ihrem Cache wird Redis OSS 7.0 oder höher oder Valkey ausgeführt. Die IAM-Authentifizierung wird in früheren Engine-Versionen nicht unterstützt.

  • In-transit Verschlüsselung (TLS) ist in Ihrem Cache aktiviert. Für die IAM-Authentifizierung ist TLS erforderlich. Weitere Informationen finden Sie unter ElastiCache Verschlüsselung bei der Übertragung (TLS).

  • Sie verfügen über die erforderlichen IAM-Berechtigungen, um Benutzer zu erstellen und Benutzergruppen zu ändern. Weitere Informationen finden Sie unter So ElastiCache arbeitet Amazon mit IAM.

  • Die IAM-Rolle oder der IAM-Benutzer, die Ihre Anwendung verwendet, verfügt über eine IAM-Richtlinie, die die elasticache:Connect Aktion für den Ziel-Cache und den IAM-Benutzer zulässt. Weitere Informationen finden Sie unter Authentifizieren mit IAM.

  • Für Ihre Anwendung gelten keine zusätzlichen Einschränkungen der IAM-Authentifizierung. Die vollständige Liste der Einschränkungen finden Sie unterAuthentifizieren mit IAM.

Migrationsprozess

Der Migrationsprozess umfasst die Erstellung eines Kennworts und eines IAM-authenticated Benutzers, die Überprüfung der Konnektivität und die anschließende Umstellung Ihrer Anwendungen auf die IAM-Authentifizierung.

Schritt 1: Benutzer erstellen

Erstellen Sie zwei ElastiCache Benutzer, sodass Ihr Cache während des Migrationszeitraums sowohl die kennwortbasierte Authentifizierung als auch die IAM-Authentifizierung unterstützt.

Erstellen Sie einen passwortbasierten Authentifizierungsbenutzer

Anmerkung

Wenn Sie bereits einen kennwortbasierten Benutzer konfiguriert haben, können Sie die Erstellung eines neuen Benutzers überspringen und Ihren vorhandenen Benutzer verwenden.

Verwenden Sie den folgenden AWS CLI Befehl, um einen kennwortbasierten Benutzer zu erstellen.

Für Linux, macOS oder Unix:

aws elasticache create-user \ --user-id <user-id> \ --user-name default \ --engine <engine> \ --passwords "<your-existing-auth-password>" \ --access-string "on ~* +@all"

Für Windows:

aws elasticache create-user ^ --user-id <user-id> ^ --user-name default ^ --engine <engine> ^ --passwords "<your-existing-auth-password>" ^ --access-string "on ~* +@all"

Ersetzen Sie:

  • <user-id>— Eine eindeutige ID für diesen Benutzer.

  • <engine>— Die Engine, die Ihr Cache verwendet: valkey oderredis.

  • <your-existing-auth-password>— Das AUTH-Token, das derzeit in Ihrem Cache konfiguriert ist.

Erstellen Sie einen Benutzer IAM-authenticated

Verwenden Sie den folgenden AWS CLI Befehl, um einen IAM-authenticated Benutzer zu erstellen.

Für Linux, macOS oder Unix:

aws elasticache create-user \ --user-id <iam-user-id> \ --user-name <iam-user-name> \ --authentication-mode Type=iam \ --engine <engine> \ --access-string "on ~* +@all"

Für Windows:

aws elasticache create-user ^ --user-id <iam-user-id> ^ --user-name <iam-user-name> ^ --authentication-mode Type=iam ^ --engine <engine> ^ --access-string "on ~* +@all"

Ersetzen Sie:

  • <iam-user-id>— Eine eindeutige ID für den IAM-Benutzer.

  • <iam-user-name>— Der Benutzername für den IAM-Benutzer.

  • <engine>— Die Engine, die Ihr Cache verwendet: valkey oderredis.

Schritt 2: Benutzergruppe erstellen und anhängen

Wenn Sie bereits eine Benutzergruppe haben, die Ihren passwortbasierten Benutzer enthält, fügen Sie den IAM-authenticated Benutzer zu dieser vorhandenen Gruppe hinzu:

Für Linux, macOS oder Unix:

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <iam-user-id>

Für Windows:

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <iam-user-id>

Ersetzen Sie:

  • <user-group-id>— Die ID Ihrer bestehenden Benutzergruppe.

  • <iam-user-id>— Die Benutzer-ID des in Schritt 1 erstellten IAM-authenticated Benutzers.

Fahren Sie anschließend fort mit der unter Schritt 3: Überprüfen Sie beide Authentifizierungsmethoden beschriebenen Anleitung.

Andernfalls erstellen Sie eine neue Benutzergruppe, fügen Sie beide Benutzer hinzu und fügen Sie die Gruppe Ihrem Cache hinzu.

Verwenden Sie die folgenden AWS CLI Befehle, um eine Benutzergruppe mit beiden Benutzern zu erstellen:

Für Linux, macOS oder Unix:

aws elasticache create-user-group \ --user-group-id <user-group-id> \ --engine <engine> \ --user-ids <user-id> <iam-user-id>

Für Windows:

aws elasticache create-user-group ^ --user-group-id <user-group-id> ^ --engine <engine> ^ --user-ids <user-id> <iam-user-id>

Ersetzen Sie:

  • <user-group-id>— Eine eindeutige ID für die Benutzergruppe.

  • <engine>— Die Engine, die Ihr Cache verwendet: valkey oderredis.

  • <user-id>, <iam-user-id> — Die in Schritt 1 erstellten Benutzer-IDs.

Ändern Sie dann Ihren Cache, um die neue Benutzergruppe zu verwenden.

Für knotenbasierte Cluster:

Für Linux, macOS oder Unix:

aws elasticache modify-replication-group \ --replication-group-id <replication-group-id> \ --auth-token-update-strategy DELETE \ --user-group-ids-to-add <user-group-id>

Für Windows:

aws elasticache modify-replication-group ^ --replication-group-id <replication-group-id> ^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add <user-group-id>

Ersetzen Sie:

  • <replication-group-id>— Die ID Ihrer Replikationsgruppe.

  • <user-group-id>— Die Benutzergruppen-ID, die Sie oben erstellt haben.

Für serverlose Caches:

Für Linux, macOS oder Unix:

aws elasticache modify-serverless-cache \ --serverless-cache-name <serverless-cache-name> \ --user-group-id <user-group-id>

Für Windows:

aws elasticache modify-serverless-cache ^ --serverless-cache-name <serverless-cache-name> ^ --user-group-id <user-group-id>

Ersetzen Sie:

  • <serverless-cache-name>— Der Name Ihres serverlosen Caches.

  • <user-group-id>— Die Benutzergruppen-ID, die Sie oben erstellt haben.

Schritt 3: Überprüfen Sie beide Authentifizierungsmethoden

Nach Abschluss von Schritt 2 unterstützt Ihr Cache beide Authentifizierungsmethoden. Stellen Sie sicher, dass Anwendungen mit beiden Methoden eine Verbindung herstellen können, bevor Sie fortfahren.

  • Anwendungen, die die kennwortbasierte Authentifizierung verwenden, können weiterhin eine Verbindung mit dem Kennwort herstellen.

  • Anwendungen, die für die IAM-Authentifizierung konfiguriert sind, können mithilfe von IAM-Token eine Verbindung herstellen.

Schritt 4: Connect mit IAM her

Generieren Sie ein IAM-Authentifizierungstoken

Generieren Sie mithilfe einer vorsignierten AWS SigV4-Anfrage ein kurzlebiges IAM-Authentifizierungstoken. Das folgende Python-Beispiel demonstriert die Token-Generierung.

import boto3 from botocore.auth import SigV4QueryAuth from botocore.awsrequest import AWSRequest cache_name = "<cache-name>" user = "<username>" region = "<region>" expires = 900 session = boto3.Session() credentials = session.get_credentials().get_frozen_credentials() req = AWSRequest( method="GET", url=f"http://{cache_name}/", params={"Action": "connect", "User": user} ) SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req) token = req.url.replace("http://", "") print(token)
Anmerkung

Das generierte Token ist ab der Erstellung bis zu 15 Minuten gültig.

Connect mit Valkey-Cli her

Stellen Sie mithilfe des generierten Tokens eine Connect zu Ihrem ElastiCache Cache her. Sie können entweder valkey-cli oder verwendenredis-cli, um eine Verbindung zu Valkey-Clustern herzustellen. Verwenden Sie für Redis OSS-Cluster. redis-cli

valkey-cli -h <host> -p 6379 --tls

Fügen Sie für Cluster, die den Clustermodus aktiviert haben, das --cluster Flag hinzu:

valkey-cli -h <host> -p 6379 --tls --cluster

Authentifizieren Sie sich anschließend mit dem folgenden Befehl:

AUTH <username> <token>

Ersetzen Sie:

  • <host>— Der Endpunkt Ihres Caches.

  • <username>— Der Benutzername des IAM-authenticated Benutzers.

  • <token>— Das von Ihnen generierte IAM-Authentifizierungstoken.

Erwartete Ausgabe:

OK

Führen Sie den folgenden Befehl aus, um den Benutzernamen zu validieren:

ACL WHOAMI

Schritt 5: Anwendungsintegration

Verwenden Sie für Java-Anwendungen die standardmäßige Anbieterkette für AWS Anmeldeinformationen, um temporäre Sicherheitsanmeldeinformationen zu generieren. Weitere Informationen finden Sie unter Authentifizieren mit IAM. Generieren Sie für andere Sprachen das IAM-Authentifizierungstoken mithilfe des AWS Signaturprozesses von Signature Version 4 und übergeben Sie es als Passwort im AUTH Befehl Ihres Clients.

Abschluss der Migration

Nachdem Ihre Anwendungen mithilfe der IAM-Authentifizierung eine Verbindung herstellen können, führen Sie die folgenden Schritte aus, um die Migration abzuschließen.

Schritt 1: Konfigurieren Sie die IAM-Authentifizierung mit Fallback

Bevor Sie den kennwortbasierten Benutzer entfernen, aktualisieren Sie Ihren Anwendungscode so, dass er die IAM-Authentifizierung als primäre Methode verwendet, während der kennwortbasierte Benutzer als Fallback beibehalten wird.

In Ihrem Anwendungscode:

  • Konfigurieren Sie Ihren Client so, dass er sich mit IAM-generated Tokens als primärer Methode authentifiziert.

  • Fügen Sie einen Fallback-Mechanismus hinzu, sodass der Client, falls die IAM-Authentifizierung fehlschlägt (z. B. aufgrund eines Ablaufs des Tokens oder eines Generierungsfehlers), erneut versucht, die kennwortbasierten AUTH-Anmeldeinformationen zu verwenden.

  • Protokollieren Sie alle Authentifizierungsversuche, einschließlich Fallbacks und Wiederholungen, sodass Sie überwachen können, ob Verbindungen auf die kennwortbasierte Authentifizierung zurückgreifen.

Schritt 2: Überwachen und verifizieren

Überprüfen Sie Ihre Anwendungsprotokolle IamAuthenticationExpirations und die IamAuthenticationThrottling CloudWatch Amazon-Metriken über einen Zeitraum von mindestens 24 bis 48 Stunden, um sicherzustellen, dass alle Verbindungen über IAM erfolgen.

Ein Wert ungleich Null für eine der beiden Kennzahlen rechtfertigt eine Untersuchung:

  • IamAuthenticationExpirations— Eine IAM-authentifizierte Verbindung wird nach 12 Stunden automatisch getrennt. Die Verbindung kann verlängert werden, indem ein AUTH HELLO OR-Befehl mit einem neuen IAM-Authentifizierungstoken gesendet wird.

  • IamAuthenticationThrottling— Weist auf zu viele Authentifizierungsanfragen hin, was bedeuten kann, dass Ihre Anwendung Tokens zu aggressiv generiert oder Probleme mit dem Verbindungspooling hat.

Für knotenbasierte Cluster können Sie zusätzliche Prüfungen auf Engine-Ebene durchführen:

  • ACL LOG— Suchen Sie nach fehlgeschlagenen Authentifizierungsversuchen. Suchen Sie nach Einträgen mitreason=auth.

  • CLIENT LIST— Überprüfen Sie die verbundenen Benutzer. Überprüfen Sie das user= Feld, um zu bestätigen, dass die Clients den IAM-Benutzer verwenden.

ACL LOGund CLIENT LIST sind nur auf knotenbasierten Clustern verfügbar. Verlassen Sie sich bei ElastiCache serverlosen Bereitstellungen auf die anwendungsseitige Protokollierung und Amazon-Metriken. CloudWatch

Schritt 3: Entfernen Sie den kennwortbasierten Benutzer

Sobald Sie bestätigt haben, dass alle Anwendungen die IAM-Authentifizierung verwenden, entfernen Sie den kennwortbasierten Benutzer aus der Benutzergruppe.

Valkey-Caches

Den passwortbasierten Benutzer direkt entfernen:

Für Linux, macOS oder Unix:

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-remove <password-user-id>

Für Windows:

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-remove <password-user-id>

Redis OSS-Caches

Bei Redis OSS-Caches muss die Benutzergruppe immer einen Benutzer mit dem Benutzernamen enthalten. default Wenn der kennwortbasierte Benutzer, den Sie in Schritt 1 erstellt haben, den Benutzernamen hat, müssen Sie einen deaktivierten Platzhalterbenutzer erstellendefault, um ihn zu ersetzen, bevor Sie ihn entfernen:

Für Linux, macOS oder Unix:

aws elasticache create-user \ --user-id <disabled-default-id> \ --user-name default \ --engine redis \ --no-password-required \ --access-string "off ~* -@all"

Für Windows:

aws elasticache create-user ^ --user-id <disabled-default-id> ^ --user-name default ^ --engine redis ^ --no-password-required ^ --access-string "off ~* -@all"

Fügen Sie dann den deaktivierten Benutzer der Gruppe hinzu und entfernen Sie den kennwortbasierten Benutzer:

Für Linux, macOS oder Unix:

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <disabled-default-id> \ --user-ids-to-remove <password-user-id>

Für Windows:

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <disabled-default-id> ^ --user-ids-to-remove <password-user-id>

Wenn der passwortbasierte Benutzer, den Sie in Schritt 1 erstellt haben, diesen Benutzernamen nicht hat, können Sie ihn direkt mit demselben Befehl entfernendefault, der oben für Valkey-Caches angezeigt wurde.

Ersetzen Sie:

  • <disabled-default-id>— Eine eindeutige ID für den deaktivierten Platzhalterbenutzer (nur Redis OSS).

  • <user-group-id>— Die ID der Benutzergruppe, die Ihrem Cache zugeordnet ist.

  • <password-user-id>— Die Benutzer-ID des kennwortbasierten Benutzers, der entfernt werden soll.

Anmerkung

Löschen Sie den kennwortbasierten Benutzer nicht, nachdem Sie ihn aus der Benutzergruppe entfernt haben. Halten Sie ihn für den Fall verfügbar, dass Sie zur kennwortbasierten Authentifizierung zurückkehren müssen.

Schritt 4: Bestätigen Sie nach dem Entfernen

Nachdem Sie den passwortbasierten Benutzer aus der Benutzergruppe entfernt haben, überwachen Sie die Amazon-Metrik. AuthenticationFailures CloudWatch Ein dauerhafter Wert von Null bestätigt, dass keine Authentifizierungsfehler aufgetreten sind, einschließlich aller verbleibenden passwortbasierten Versuche. Richten Sie für diese Metrik einen CloudWatch Alarm ein, um unerwartete Versuche zu erkennen.

Bei knotenbasierten Clustern können Sie die Überprüfung auch mithilfe von ACL LOG und durchführen. CLIENT LIST Verlassen Sie sich bei serverlosen Caches auf anwendungsseitige Protokollierung und Metriken. CloudWatch

Rollback-Verfahren

Re-add fügen Sie den kennwortbasierten Benutzer der Benutzergruppe hinzu und stellen Sie dann die kennwortbasierte Authentifizierung in Ihrer Anwendung wieder her, während Sie die Untersuchung durchführen.

Für Valkey-Caches:

Für Linux, macOS oder Unix:

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <password-user-id>

Für Windows:

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <password-user-id>

Verwenden Sie für Redis OSS-Caches, bei denen der passwortbasierte Benutzer den Benutzernamen default nicht hat, denselben Befehl wie oben.

Für Redis OSS-Caches, in denen Sie einen deaktivierten Platzhalterbenutzer erstellt habenSchritt 3: Entfernen Sie den kennwortbasierten Benutzer, fügen Sie den kennwortbasierten Benutzer hinzu und entfernen Sie den deaktivierten Platzhalterbenutzer in einem einzigen Vorgang:

Für Linux, macOS oder Unix:

aws elasticache modify-user-group \ --user-group-id <user-group-id> \ --user-ids-to-add <password-user-id> \ --user-ids-to-remove <disabled-default-id>

Für Windows:

aws elasticache modify-user-group ^ --user-group-id <user-group-id> ^ --user-ids-to-add <password-user-id> ^ --user-ids-to-remove <disabled-default-id>

Ersetzen Sie:

  • <user-group-id>— Die ID der Benutzergruppe, die Ihrem Cache zugeordnet ist.

  • <password-user-id>— Die Benutzer-ID des kennwortbasierten Benutzers, der erneut hinzugefügt werden soll.

  • <disabled-default-id>— Die Benutzer-ID des deaktivierten Platzhalterbenutzers (nur Redis OSS).