Auf dieser Seite finden Sie Anleitungen für häufige Aufgaben im Zusammenhang mit der IAM-Authentifizierungsfunktion für Memorystore for Redis Cluster. Weitere Informationen zu dieser Funktion finden Sie unter IAM-Authentifizierung.
Instanz mit IAM-Authentifizierung erstellen
Führen Sie den create-Befehl aus, um eine Memorystore for Redis Cluster-Instanz zu erstellen, die die IAM-Authentifizierung verwendet:
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
Ersetzen Sie Folgendes:
INSTANCE_ID ist die ID der Memorystore for Redis Cluster-Instanz, die Sie erstellen. Die Instanz-ID muss zwischen 1 und 63 Zeichen lang sein und darf nur Kleinbuchstaben, Ziffern oder Bindestriche enthalten. Er muss mit einem Kleinbuchstaben beginnen und mit einem Kleinbuchstaben oder einer Ziffer enden.
REGION_ID ist die Region, in der sich die Instanz befinden soll.
NETWORK ist das Netzwerk, das zum Erstellen der Instanz verwendet wird. Das Format muss
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_IDsein. Die hier verwendete Netzwerk-ID muss mit der Netzwerk-ID übereinstimmen, die von der Richtlinie für Dienstverbindungen verwendet wird. Andernfalls schlägt dercreate-Vorgang fehl. Weitere Informationen finden Sie unter Netzwerk.NODE_TYPE ist der Knotentyp für den Cluster.
SHARD_COUNT bestimmt die Anzahl der Shards in Ihrer Instanz. Die Anzahl der Shards bestimmt die Gesamtspeicherkapazität für das Speichern von Clusterdaten. Weitere Informationen zur Clusterspezifikation finden Sie unter Cluster- und Knotenspezifikation.
Berechtigungen für die IAM-Authentifizierung erteilen
Wenn Sie IAM-Zugriff gewähren möchten, folgen Sie der Anleitung unter IAM-Rolle zuweisen, um dem Hauptkonto die Rolle roles/redis.dbConnectionUser zuzuweisen. Das Hauptkonto ist eine Identität, der Sie Zugriff auf Ressourcen in Google Cloudgewähren können. Ein Hauptkonto kann beispielsweise ein Dienstkonto sein, das auf Ihr Google Cloud -Projekt zugreifen kann.
Wenn Sie einem Hauptkonto standardmäßig die Rolle roles/redis.dbConnectionUser zuweisen, kann das Hauptkonto auf alle Instanzen in Ihrem Projekt zugreifen.
Eingeschränkte IAM-Administratorrolle für eine Instanz erstellen
Möglicherweise möchten Sie eine Rolle erstellen, mit der IAM-Berechtigungen für Instanzverbindungen geändert werden können, ohne dass vollständiger IAM-Administratorzugriff gewährt wird. Dazu können Sie einen eingeschränkten IAM-Administrator für die Rolle roles/redis.dbConnectionUser erstellen. Weitere Informationen finden Sie unter Eingeschränkte IAM-Administratoren erstellen.
Verbindung zu einer Instanz herstellen, die die IAM-Authentifizierung verwendet
Wenn Sie noch keine Compute Engine-VM haben, die dasselbe autorisierte Netzwerk wie Ihr Redis-Cluster verwendet, erstellen Sie eine VM und stellen Sie eine Verbindung zu ihr her: Folgen Sie dazu der Kurzanleitung: Linux-VM verwenden.
Verwenden Sie für Ihr Projekt den Befehl
gcloud compute instances set-service-account, um ein Dienstkonto festzulegen und den Cloud Platform API-Bereich für Ihre Compute Engine-VM zu aktivieren.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPE
Ersetzen Sie die folgenden Werte:
- VM_NAME: der Name Ihrer Compute Engine-VM
- SERVICE_ACCOUNT_EMAIL: die E-Mail-Adresse Ihres Dienstkontos.
- SCOPE: Der Cloud Platform API-Bereich für die VM (
cloud-platform)
Der folgende Befehl weist zum Beispiel einer VM namens
example-VMdas Dienstkontomy-sa-123@my-project-123.iam.gserviceaccount.comzu und legt den Zugriffsbereich für die Cloud Platform API in der VM fest:gcloud compute instances set-service-account example-VM \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=cloud-platform
Weitere Informationen zum Aktivieren dieses Zugriffsbereichs finden Sie unter Dienstkonto anhängen und Zugriffsbereich aktualisieren. Weitere Informationen zu Best Practices für diesen Bereich finden Sie unter Best Practices für Bereiche.
Aktivieren Sie die Memorystore for Redis API für Ihr Projekt.
Installieren Sie redis-cli auf der Compute Engine-VM, indem Sie den folgenden Befehl im Compute Engine-SSH-Terminal ausführen:
sudo apt-get install redis-tools
Führen Sie den folgenden Befehl aus, um ein Zugriffstoken für Ihren IAM-Nutzer abzurufen:
gcloud auth print-access-token
Zugriffstokens laufen nach einer Stunde ab. Weitere Informationen finden Sie unter Zeitrahmen für IAM-Zugriffstokens.
Stellen Sie eine Verbindung zum Discovery-Endpunkt Ihrer Instanz her:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Ersetzen Sie Folgendes:
NETWORK_ADDRESS ist die Netzwerkadresse der Instanz. Informationen zum Anzeigen der Netzwerkadresse finden Sie unter Clusterinformationen ansehen.
PORT: die Portnummer der Instanz. Informationen zum Aufrufen der Portnummer finden Sie unter Clusterinformationen ansehen.
ACCESS_TOKEN: das Zugriffstoken, das Sie im vorherigen Schritt abgerufen haben.
Verwenden Sie weder einen Nutzernamen noch einen Dienstkontonamen, um eine Verbindung zum Endpunkt herzustellen. Außerdem sind authentifizierte Verbindungen 12 Stunden lang gültig. Weitere Informationen finden Sie unter IAM-Zugriffstoken – Zeitraum.
Wenn Sie die Verschlüsselung während der Übertragung für den Cluster aktivieren, müssen Sie die TLS-Flags (Transport Layer Security) anhängen. Beispiel:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
Führen Sie den Befehl
CLUSTER SHARDSaus, um die Clustertopologie aufzurufen. Notieren Sie sich eine der IP-Adressen und Portnummern des Knotens.Führen Sie den folgenden Befehl aus, um ein Zugriffstoken für Ihren IAM-Nutzer abzurufen:
gcloud auth print-access-token
Zugriffstokens laufen nach einer Stunde ab. Weitere Informationen finden Sie unter Zeitrahmen für IAM-Zugriffstokens.
Stellen Sie eine Verbindung zum Discovery-Endpunkt Ihrer Instanz her:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Ersetzen Sie Folgendes:
NETWORK_ADDRESS ist die Netzwerkadresse der Instanz. Informationen zum Anzeigen der Netzwerkadresse finden Sie unter Clusterinformationen ansehen.
PORT: die Portnummer der Instanz. Informationen zum Aufrufen der Portnummer finden Sie unter Clusterinformationen ansehen.
ACCESS_TOKEN: das Zugriffstoken, das Sie im vorherigen Schritt abgerufen haben.
Verwenden Sie weder einen Nutzernamen noch einen Dienstkontonamen, um eine Verbindung zum Endpunkt herzustellen. Außerdem sind authentifizierte Verbindungen 12 Stunden lang gültig. Weitere Informationen finden Sie unter IAM-Zugriffstoken – Zeitraum.
Wenn Sie die Verschlüsselung während der Übertragung für den Cluster aktivieren, müssen Sie die TLS-Flags (Transport Layer Security) anhängen. Beispiel:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
Führen Sie den Befehl
CLUSTER SHARDSaus, um die Clustertopologie aufzurufen. Notieren Sie sich die IP-Adresse und die Portnummer eines der Knoten.Verwenden Sie den folgenden Befehl, um sich mit
redis-clizu authentifizieren und eine Verbindung zu Ihrem Knoten herzustellen:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Ersetzen Sie Folgendes:
- NODE_IP_ADDRESS: die IP-Adresse des Knotens, die Sie im vorherigen Schritt notiert haben
- NODE_PORT: die Portnummer des Knotens, die Sie im vorherigen Schritt notiert haben
- ACCESS_TOKEN: das IAM-Zugriffstoken, das Sie zuvor in dieser Prozedur abgerufen haben
Authentifizierte Verbindungen sind 12 Stunden lang gültig. Weitere Informationen finden Sie unter IAM-Zugriffstoken – Zeitraum.
redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Ersetzen Sie Folgendes:
- NODE_IP_ADDRESS: die IP-Adresse des Knotens, die Sie im vorherigen Schritt notiert haben
- NODE_PORT: die Portnummer des Knotens, die Sie im vorherigen Schritt notiert haben
- ACCESS_TOKEN: das IAM-Zugriffstoken, das Sie zuvor in dieser Prozedur abgerufen haben
Authentifizierte Verbindungen sind 12 Stunden lang gültig. Weitere Informationen finden Sie unter IAM-Zugriffstoken – Zeitraum.
Führen Sie einen Redis-
SET- undGET-Befehl aus, um zu prüfen, ob Sie eine authentifizierte Verbindung zu Ihrem Knoten haben.Löschen Sie die Compute Engine-VM, die Sie zum Herstellen einer Verbindung zum Redis-Cluster verwendet haben. So können Sie vermeiden, dass Ihrem Cloud-Rechnungskonto Gebühren in Rechnung gestellt werden.
Abrufen von Zugriffstokens automatisieren
Optional: Wenn Sie noch kein Dienstkonto für Ihre Anwendung erstellt haben, tun Sie das jetzt (siehe Dienstkonto erstellen und verwalten).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"Ersetzen Sie Folgendes:
- SA_NAME ist der Name des Dienstkontos.
- DESCRIPTION ist eine optionale Beschreibung des Dienstkontos.
- DISPLAY_NAME ist ein Dienstkontoname, der in derGoogle Cloud Console angezeigt werden soll.
Weisen Sie Ihrem Dienstkonto die Rolle
redis.dbConnectionUserfür Ihr Projekt zu.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/"ROLE_NAME"
Ersetzen Sie Folgendes:
- PROJECT_ID: Projekt-ID.
- SA_NAME ist der Name des Dienstkontos.
- ROLE_NAME: ein Rollenname. In diesem Beispiel:
redis.dbConnectionUser.
Authentifizieren Sie Ihre Anwendung als das angegebene Dienstkonto. Weitere Informationen finden Sie unter Dienstkonten.
Codebeispiel für das Herstellen einer Verbindung zu einer Instanz, die die IAM-Authentifizierung verwendet
Codebeispiel für die Authentifizierung Ihrer Anwendung mit gängigen Clientbibliotheken Außerdem erfahren Sie, wie Sie dieses Codebeispiel verwenden, um eine Verbindung zu einer Instanz herzustellen, die die IAM-Authentifizierung verwendet.
Fehlermeldungen bei der IAM-Authentifizierung beheben
| Fehlermeldung | Empfohlene Maßnahmen | Beschreibung |
|---|---|---|
|
Prüfen Sie den Nutzernamen und das Zugriffstoken, die dem Memorystore for Redis Cluster-Server bereitgestellt wurden. | Der angegebene Nutzername oder das angegebene Zugriffstoken ist ungültig. „default“ ist der einzige unterstützte Nutzername. Wenn Ihre Anwendung bereits den Standardnutzernamen verwendet, prüfen Sie, ob das Zugriffstoken abgelaufen ist und ob es gemäß der Anleitung unter Mit einer Instanz verbinden, die die IAM-Authentifizierung verwendet abgerufen wird. Wenn IAM-Berechtigungen vor Kurzem geändert wurden, kann es einige Minuten dauern, bis sie übernommen werden. |
|
Prüfen, ob die Anwendung so konfiguriert ist, dass sie ein IAM-Zugriffstoken für den Memorystore for Redis Cluster-Server bereitstellt | Die Anwendung stellt kein Zugriffstoken für den Memorystore for Redis Cluster-Server bereit. Prüfen Sie, ob die Anwendung so konfiguriert ist, dass ein Zugriffstoken bereitgestellt wird. Folgen Sie dazu der Anleitung unter Verbindung zu einer Instanz herstellen, die die IAM-Authentifizierung verwendet. |
|
Mit exponentiellem Backoff wiederholen. | Das IAM-Backend ist überlastet und hat einen Fehler wegen überschrittenen Kontingents an den Memorystore for Redis Cluster-Server zurückgegeben. Anwendungen sollten versuchen, diesen Fehler mit exponentiellem Backoff zu wiederholen, um weitere Verbindungsfehler zu vermeiden. |
|
Mit exponentiellem Backoff wiederholen. | Das IAM-Backend hat einen vorübergehenden Fehler an den Memorystore for Redis Cluster-Server zurückgegeben. Anwendungen sollten versuchen, diesen Fehler mit exponentiellem Backoff zu wiederholen, um weitere Verbindungsfehler zu vermeiden. |