Cette page fournit des instructions sur les tâches courantes de la fonctionnalité d'authentification IAM pour Memorystore for Redis Cluster. Pour en savoir plus sur cette fonctionnalité, consultez À propos de l'authentification IAM.
Créer une instance avec l'authentification IAM
Pour créer une instance Memorystore for Redis Cluster qui utilise l'authentification IAM, exécutez la commande create :
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
Remplacez les éléments suivants :
INSTANCE_ID est l'ID de l'instance Memorystore for Redis Cluster que vous créez. L'ID de votre instance doit comporter entre 1 et 63 caractères et ne contenir que des lettres minuscules, des chiffres ou des traits d'union. Il doit commencer et se terminer par une lettre minuscule ou un chiffre.
REGION_ID est la région dans laquelle vous souhaitez placer l'instance.
NETWORK est le réseau utilisé pour créer votre instance. Il doit utiliser le format suivant :
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. L'ID de réseau utilisé ici doit correspondre à celui utilisé par la stratégie de connexion de service. Sinon, l'opérationcreateéchoue. Pour en savoir plus, consultez la section Mise en réseau.NODE_TYPE est le type de nœud du cluster.
SHARD_COUNT détermine le nombre de fragments dans votre instance. Le nombre de fragments détermine la capacité totale de mémoire pour stocker les données du cluster. Pour en savoir plus sur les spécifications du cluster, consultez la section Spécifications du cluster et des nœuds.
Accorder des autorisations pour l'authentification IAM
Pour accorder un accès IAM, suivez les instructions de la section Attribuer un rôle IAM afin d'attribuer le rôle
roles/redis.dbConnectionUser au compte principal. Un compte principal est une
identité à laquelle vous pouvez accorder l'accès à des ressources Google Cloud. Par exemple, un
compte principal peut être un compte de service qui peut accéder à votre Google Cloud projet.
Par défaut, l'attribution du rôle roles/redis.dbConnectionUser à un compte principal lui permet d'accéder à toutes les instances de votre projet.
Créer un rôle d'administrateur IAM limité pour une instance
Vous pouvez créer un rôle qui peut modifier les autorisations IAM de connexion à une instance sans accorder un accès complet d'administrateur IAM. Pour ce faire, créez un administrateur IAM limité pour le rôle roles/redis.dbConnectionUser. Pour en savoir plus, consultez la section Créer des administrateurs IAM limités.
Se connecter à une instance qui utilise l'authentification IAM
Si vous ne disposez pas encore d'une VM Compute Engine utilisant le même réseau autorisé que votre cluster Redis, créez-en une et connectez-vous en suivant les instructions de la page Démarrage rapide à l'aide d'une VM Linux.
Pour votre projet, utilisez la
gcloud compute instances set-service-accountcommande pour définir un compte de service et activer le champ d'application de l'API Cloud Platform pour votre VM Compute Engine.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPE
Effectuez les remplacements suivants :
- VM_NAME : nom de votre VM Compute Engine
- SERVICE_ACCOUNT_EMAIL : adresse e-mail de votre compte de service
- SCOPE : champ d'application de l'API Cloud Platform pour la VM (
cloud-platform)
Par exemple, la commande suivante attribue le compte de service
my-sa-123@my-project-123.iam.gserviceaccount.comà une VM appeléeexample-VMet définit le niveau d'accès sur cette VM sur l'API Cloud Platform :gcloud compute instances set-service-account example-VM \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=cloud-platform
Pour en savoir plus sur l'activation de ce niveau d'accès, consultez la section Associer le compte de service et mettre à jour le niveau d'accès. Pour en savoir plus sur les bonnes pratiques concernant ce champ d'application, consultez la section Bonnes pratiques concernant les champs d'application.
Pour votre projet, activez l'API Memorystore pour Redis.
Installez redis-cli sur la VM Compute Engine en exécutant la commande suivante à partir du terminal SSH de Compute Engine :
sudo apt-get install redis-tools
Exécutez la commande suivante pour obtenir un jeton d'accès pour votre utilisateur IAM :
gcloud auth print-access-token
Connectez-vous au point de terminaison de détection de votre instance :
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Remplacez les éléments suivants :
NETWORK_ADDRESS est l'adresse réseau de l'instance. Pour afficher l' adresse réseau, consultez la section Afficher les informations de l'instance.
PORT est le numéro de port des instances. Pour afficher le numéro de port, consultez la section Afficher les informations de l'instance.
ACCESS_TOKEN est le jeton d'accès IAM récupéré lors des étapes précédentes.
Exécutez la commande
CLUSTER SHARDSpour afficher la topologie de votre cluster. Notez l'adresse IP et le numéro de port de l'un des nœuds.Pour utiliser
redis-cliafin de vous authentifier et de vous connecter à votre nœud, utilisez la commande suivante :redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Remplacez les éléments suivants :
- NODE_IP_ADDRESS : adresse IP du nœud que vous avez trouvée à l'étape précédente
- NODE_PORT : numéro de port du nœud que vous avez trouvé à l'étape précédente
- ACCESS_TOKEN : jeton d'accès IAM que vous avez récupéré lors des étapes précédentes
Pour vérifier que vous disposez d'une connexion authentifiée à votre nœud, exécutez une commande Redis
SETetGET.Supprimez la VM Compute Engine que vous avez utilisée pour vous connecter au cluster Redis. Vous éviterez ainsi que des frais soient facturés sur votre compte de facturation Cloud.
Automatiser la récupération des jetons d'accès
(Facultatif) Si ce n'est pas déjà fait, créez un compte de service pour votre application (consultez Créer et gérer un compte de service).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"Remplacez les éléments suivants :
- SA_NAME est le nom du compte de service.
- DESCRIPTION est une description facultative du compte de service.
- DISPLAY_NAME est un nom de compte de service à afficher dans la Google Cloud console.
Attribuez le rôle
redis.dbConnectionUserà votre compte de service sur votre projet.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/"ROLE_NAME"
Remplacez les éléments suivants :
- PROJECT_ID : ID du projet.
- SA_NAME : nom du compte de service.
- ROLE_NAME : nom de rôle. Pour cet exemple :
redis.dbConnectionUser.
Authentifiez votre application en tant que compte de service donné. Pour en savoir plus, consultez la page sur les comptes de service.
Exemple de code pour se connecter à une instance qui utilise l'authentification IAM
Vous pouvez consulter un exemple de code qui montre comment authentifier votre application à l'aide de bibliothèques clientes courantes. Vous pouvez également voir comment utiliser cet exemple de code pour vous connecter à une instance qui utilise l'authentification IAM.
Résoudre les messages d'erreur avec l'authentification IAM
| Message d'erreur | Action recommandée | Description |
|---|---|---|
|
Vérifiez le nom d'utilisateur et le jeton d'accès fournis au serveur Memorystore for Redis Cluster. | Le nom d'utilisateur ou le jeton d'accès fourni n'est pas valide. "default" est le seul nom d'utilisateur accepté. Si votre application utilise déjà le nom d'utilisateur "default", vérifiez que le jeton d'accès n'a pas expiré et qu'il est récupéré en suivant les instructions de la section Se connecter à une instance qui utilise l'authentification IAM. La propagation des autorisations IAM peut prendre quelques minutes si elles ont été modifiées récemment. |
|
Vérifiez que l'application est configurée pour fournir un jeton d'accès IAM au serveur Memorystore for Redis Cluster. | L'application ne fournit pas de jeton d'accès au serveur Memorystore for Redis Cluster. Vérifiez que l'application est configurée pour fournir un jeton d'accès en suivant les instructions de la section Se connecter à une instance qui utilise l'authentification IAM. |
|
Réessayez avec un intervalle exponentiel entre les tentatives. | Le backend IAM est surchargé et a renvoyé une erreur de dépassement de quota au serveur Memorystore for Redis Cluster. Les applications doivent tenter de réessayer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion. |
|
Réessayez avec un intervalle exponentiel entre les tentatives. | Le backend IAM a renvoyé une erreur temporaire au serveur Memorystore for Redis Cluster. Les applications doivent tenter de réessayer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion. |