Gérer l'authentification IAM

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 de service. Sinon, l'opération create échoue. Pour en savoir plus, consultez Mise en réseau.

  • NODE_TYPE correspond au type de nœud de l' instance.

  • SHARD_COUNT détermine le nombre de segments dans votre instance. Le nombre de segments détermine la capacité de mémoire totale 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 le rôle roles/memorystore.dbConnectionUser au compte principal 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 à 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/memorystore.dbConnectionUser. Pour en savoir plus, consultez Créer des administrateurs IAM limités.

Se connecter à une instance qui utilise l'authentification IAM

  1. 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.

  2. 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.

  3. Pour votre projet, activez l'API Memorystore pour Valkey.

    API Memorystore pour Valkey

  4. Installez valkey-cli sur la VM Compute Engine en suivant les instructions de la section Installer Valkey.

  5. 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 Durée de validité des jetons d'accès IAM.

  6. 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 :

    Si vous spécifiez un nom d'utilisateur, vous devez utiliser le nom d'utilisateur default ou l'adresse e-mail du compte principal IAM. De plus, les connexions authentifiées restent valides après l'expiration du jeton. Pour en savoir plus, consultez 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
    
  7. Facultatif : Si vous disposez d'une instance en mode cluster activé, exécutez la commande CLUSTER SHARDS pour afficher la topologie de votre nœud. Notez l'une des adresses IP et l'un des numéros de port du nœud.

    Si vous disposez d'une instance en mode cluster désactivé, vous pouvez ignorer cette étape.

  8. Pour utiliser valkey-cli afin de vous authentifier et de vous connecter à votre nœud, utilisez 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
  9. Pour vérifier que vous disposez d'une connexion authentifiée à votre nœud, exécutez une commande Valkey SET et GET.

  10. 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 coder en dur le jeton.

  1. (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 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.
  2. 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." \
    --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.
  3. Authentifiez votre application en tant que compte de service donné. Pour en savoir plus, consultez 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

-WRONGPASS invalid username-password pair or user is disabled

Vérifiez le jeton d'accès fourni au serveur Memorystore pour Valkey et assurez-vous que l'utilisateur LCA correspondant est activé.

Le compte principal IAM ne dispose pas des autorisations requises, le jeton d'accès que vous avez fourni n'est pas valide ou l'utilisateur LCA correspondant est désactivé.

Vérifiez que le jeton d'accès n'a pas expiré et que vous l'avez récupéré en suivant les instructions de la section Se connecter à une instance qui utilise l'authentification IAM.

Si vous avez récemment modifié les autorisations IAM, leur propagation peut prendre quelques minutes.

-NOAUTH Authentication required

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 et que vous l'avez récupéré en suivant les instructions de la section Se connecter à une instance qui utilise l'authentification IAM.

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded.

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.

Pour éviter d'autres échecs de connexion, nous vous recommandons aux applications de réessayer cette erreur avec un intervalle exponentiel entre les tentatives.

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error.

Vérifiez le nom d'utilisateur ou réessayez avec un intervalle exponentiel entre les tentatives.

Cette erreur se produit pour les raisons suivantes :

  • Le nom d'utilisateur que vous avez fourni n'est pas valide. Vous pouvez utiliser le default nom d'utilisateur, omettre le nom d'utilisateur ou utiliser le adresse e-mail du compte principal IAM.
  • Le backend IAM a renvoyé une erreur temporaire au Memorystore pour Valkey server.

Si le nom d'utilisateur est valide, nous vous recommandons à votre application de réessayer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion.