Gérer l'authentification IAM

Cette page fournit des instructions sur les tâches courantes de 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 --auth-mode=iam-auth

Remplacez les éléments suivants :

  • INSTANCE_ID est l'ID de l'instance Memorystore pour Valkey que vous créez. L'ID d'instance doit comporter entre 1 et 63 caractères (lettres minuscules, chiffres ou traits d'union). Il doit commencer par une lettre minuscule 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 respecter le format suivant : projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. L'ID de réseau utilisé ici doit correspondre à celui utilisé par la règle de connexion au service. Sinon, l'opération create échoue. Pour en savoir plus, consultez la section Mise en réseau.

  • NODE_TYPE correspond au type de nœud choisi. Les valeurs acceptées sont les suivantes :

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge
  • SHARD_COUNT détermine le nombre de segments dans votre instance. Le nombre de partitions détermine la capacité de mémoire totale pour stocker les données d'instance. Pour en savoir plus sur les spécifications des instances, consultez Spécifications des instances et des nœuds.

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 pour 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 à l'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 utilisant le même réseau autorisé que votre instance Valkey, créez-en une et connectez-vous en suivant les instructions de la page Démarrage rapide à l'aide d'une VM Linux.

  2. Pour vous connecter à votre instance, vous devez activer les niveaux d'accès et les API suivants pour votre projet :

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

  4. Exécutez la commande suivante pour obtenir un jeton d'accès pour votre utilisateur IAM :

    gcloud auth print-access-token
    
  5. Connectez-vous au point de terminaison de détection de votre instance :

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    Remplacez les éléments suivants :

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

  7. Connectez-vous au nœud de votre choix en exécutant la commande suivante :

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    Remplacez les éléments suivants :

    • NODE_IP_ADDRESS correspond à l'adresse IP du nœud que vous avez trouvée à l'étape précédente.
    • NODE_PORT correspond au numéro de port du nœud que vous avez trouvé à l'étape précédente.
  8. Exécutez une commande Valkey SET et GET pour vérifier que vous avez établi une connexion authentifiée au nœud de votre instance.

  9. Une fois que vous avez terminé de tester la connexion à l'instance Valkey, pensez à supprimer la VM Compute Engine que vous avez utilisée pour vous connecter à l'instance Valkey. Vous éviterez ainsi que des frais soient facturés sur votre compte de facturation Cloud.

  10. Exécutez la commande suivante pour vous authentifier et vous connecter à votre instance à l'aide de valkey-cli, en remplaçant les variables par les valeurs appropriées :

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    Remplacez les éléments suivants :

  11. Exécutez une commande Valkey SET et GET pour vérifier que vous avez établi une connexion authentifiée à votre instance.

  12. Une fois que vous avez terminé de tester la connexion à l'instance Valkey, pensez à supprimer la VM Compute Engine que vous avez utilisée pour vous connecter à l'instance Valkey. 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

Nous vous recommandons d'automatiser la récupération des jetons d'accès dans votre application, car ils ne peuvent pas être facilement codés en dur en raison de leur courte durée de vie.

  1. (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 est une description facultative du compte de service.
    • DISPLAY_NAME est le nom du compte de service à afficher dans la consoleGoogle Cloud .
  2. Accordez à votre compte de service l'autorisation memorystore.dbConnectionUser sur votre projet.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="memorystore.dbConnectionUser"
    

    Remplacez les éléments suivants :

    • PROJECT_ID est l'ID de projet.
    • SA_NAME correspond au nom du compte de service.
    • ROLE_NAME est un nom de rôle, par exemple roles/compute.osLogin.
  3. 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 populaires, 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 façon de configurer une bibliothèque cliente pour 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 avec l'authentification IAM

Message d'erreur Action recommandée Description

-WRONGPASS invalid username-password pair or user is disabled

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 accepté. Si votre application utilise déjà le nom d'utilisateur "par défaut", 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. Si vous avez modifié récemment vos autorisations IAM, la 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 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. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

Réessayer avec un intervalle exponentiel entre les tentatives Le backend IAM est surchargé et a renvoyé une erreur de quota dépassé au serveur Memorystore pour Valkey. Les applications doivent tenter de relancer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion.

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

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 relancer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion.