Cette page fournit des instructions sur les tâches courantes liées à la fonctionnalité d'authentification IAM pour Memorystore pour Valkey. 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 pour Valkey qui utilise l'authentification IAM, exécutez la commande create :
gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --authorization-mode=iam-auth
Remplacez les éléments suivants :
INSTANCE_ID correspond à l'ID de l'instance Memorystore pour Valkey 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 correspond à la région dans laquelle vous souhaitez placer l'instance.
NETWORK correspond au 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 au service. Sinon, l'opérationcreateéchoue. Pour en savoir plus, consultez la section Mise en réseau.NODE_TYPE correspond au type de nœud de l' instance.
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 de l'instance. Pour en savoir plus sur les spécifications d'instance, consultez Spécifications d'instance et de nœud.
Accorder des autorisations pour l'authentification IAM
Pour accorder un accès IAM, attribuez au compte principal le
roles/memorystore.dbConnectionUser rôle en suivant les instructions de la section Attribuer un rôle IAM.
Par défaut, l'attribution du rôle roles/memorystore.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 à l'instance sans accorder un accès complet d'administrateur IAM. Pour ce faire, créez un administrateur IAM limité pour le rôle roles/memorystore.dbConnectionUser. Pour en savoir plus, consultez 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 qui utilise le même réseau autorisé que votre instance Valkey, créez-en une et connectez-vous en suivant les instructions de la section Démarrage rapide à l'aide d'une VM Linux.
Pour votre projet, activez le niveau d'accès de l'API Cloud Platform. Pour en savoir plus sur l'activation de ce niveau d'accès, consultez Associer le compte de service et mettre à jour le niveau d'accès. Pour en savoir plus sur les bonnes pratiques concernant ce niveau d'accès, consultez Bonnes pratiques concernant les niveaux d'accès.
Pour votre projet, activez l'API Memorystore pour Valkey.
Installez
valkey-clisur la VM Compute Engine en suivant les instructions de la section Installer Valkey.Exécutez la commande suivante pour récupérer un jeton d'accès pour votre utilisateur IAM :
gcloud auth print-access-token
Les jetons d'accès expirent au bout d'une heure. Pour en savoir plus, consultez la section Durée de validité des jetons d'accès IAM.
Connectez-vous au point de terminaison de découverte de votre instance :
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Remplacez les éléments suivants :
NETWORK_ADDRESS : adresse réseau de l'instance. Pour afficher l' adresse réseau, consultez Afficher les informations sur l'instance.
PORT : numéro de port de l'instance. Pour afficher le numéro de port, consultez Afficher les informations sur l'instance.
ACCESS_TOKEN : jeton d'accès que vous avez récupéré à l' étape précédente.
Les connexions authentifiées sont valides pendant 12 heures. Pour en savoir plus, consultez la section Durée de validité des jetons d'accès IAM.
Si vous activez le chiffrement en transit sur l'instance, vous devez ajouter les indicateurs TLS (Transport Layer Security). Exemple :
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
Exécutez la commande
CLUSTER SHARDSpour afficher la topologie de votre nœud. Notez l'adresse IP et le numéro de port de l'un des nœuds.Pour utiliser
valkey-cliafin de vous authentifier et de vous connecter à votre nœud, exécutez la commande suivante :valkey-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 notée à l'étape précédente.
- NODE_PORT : numéro de port du nœud que vous avez noté à l'étape précédente .
- ACCESS_TOKEN : jeton d'accès IAM que vous avez récupéré précédemment dans cette procédure.
Pour vérifier que vous disposez d'une connexion authentifiée à votre nœud, exécutez une commande
SETetGETValkey.Supprimez la VM Compute Engine que vous avez utilisée pour vous connecter à l'instance. Cela vous permet d'éviter que des frais ne soient facturés sur votre compte de facturation Cloud.
Automatiser la récupération des jetons d'accès
Nous vous recommandons vivement d'automatiser la récupération des jetons d'accès dans votre application. En raison de la courte durée de vie d'un jeton d'accès, il est difficile de le coder en dur.
Facultatif : Si vous ne l'avez 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 correspond au nom du compte de service.
- DESCRIPTION correspond à une description facultative du compte de service.
- DISPLAY_NAME correspond au nom du compte de service à afficher dans la Google Cloud console.
Attribuez le rôle
memorystore.dbConnectionUserà votre compte de service dans 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. Dans cet exemple :
memorystore.dbConnectionUser.
Authentifiez votre application en tant que compte de service donné. Pour en savoir plus, consultez la section Comptes de service.
Pour obtenir des exemples de code montrant comment authentifier votre application à l'aide de bibliothèques clientes courantes, consultez Exemples de code de bibliothèque cliente.
Exemple de code pour se connecter à une instance qui utilise l'authentification IAM
Pour afficher un exemple de code compatible avec Valkey sur la configuration d'une bibliothèque cliente afin de se connecter à une instance qui utilise l'authentification IAM, consultez Exemple de code pour l'authentification IAM et le chiffrement en transit.
Résoudre les messages d'erreur liés à 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 pour Valkey. | Le nom d'utilisateur ou le jeton d'accès fourni n'est pas valide. "default" est le seul nom d'utilisateur compatible. 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 pour Valkey. | L'application ne fournit pas de jeton d'accès au serveur Memorystore pour Valkey. 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éessayer 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 pour Valkey. Les applications doivent tenter de réessayer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion. |
|
Réessayer avec un intervalle exponentiel entre les tentatives | Le backend IAM a renvoyé une erreur temporaire au serveur Memorystore pour Valkey. Les applications doivent tenter de réessayer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion. |