Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette page fournit des instructions sur les tâches courantes de la fonctionnalité d'authentification IAM pour Memorystore pour 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 pour Redis Cluster qui utilise l'authentification IAM, exécutez la commande create :
INSTANCE_ID est l'ID de l'instance Memorystore pour Redis Cluster 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 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 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 est le type de nœud choisi. Les valeurs acceptées sont les suivantes :
redis-shared-core-nano
redis-standard-small
redis-highmem-medium
redis-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 du cluster. Pour en savoir plus sur la spécification du cluster, consultez Spécification du cluster et des nœuds.
Accorder des autorisations pour l'authentification IAM
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 à l'administrateur IAM. Pour ce faire, créez un administrateur IAM limité pour le rôle roles/redis.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 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.
ACCESS_TOKEN correspond au jeton d'accès IAM récupéré lors des étapes précédentes.
Exécutez la commande CLUSTER SHARDS pour afficher la topologie de votre cluster. Notez l'une des adresses IP et l'un des numéros de port du nœud.
Pour utiliser redis-cli afin 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 SET et GET.
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 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 .
Accordez à votre compte de service l'autorisation redis.dbConnectionUser sur votre projet.
Exemple de code pour se connecter à une instance qui utilise l'authentification IAM
Vous pouvez consulter un exemple de code qui vous montre comment authentifier votre application à l'aide de bibliothèques clientes populaires. Vous pouvez également découvrir 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
-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 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 "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 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.
-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/cluster/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 Cluster pour Redis. 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/cluster/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 for Redis Cluster. Les applications doivent tenter de relancer cette erreur avec un intervalle exponentiel entre les tentatives pour éviter d'autres échecs de connexion.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[],[],null,["# Manage IAM authentication\n\nThis page provides instructions on common tasks for the IAM\nauthentication feature for Memorystore for Redis Cluster. For more details on the feature,\nsee [About IAM authentication](/memorystore/docs/cluster/about-iam-auth).\n\nCreate an instance with IAM authentication\n------------------------------------------\n\nTo create a Memorystore for Redis Cluster instance that uses IAM\nauthentication, run the `create` command: \n\n```\ngcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eINSTANCE_ID\u003c/var\u003e is the ID of the Memorystore for Redis Cluster instance you're\n creating. Your instance ID must be 1 to 63 characters and use only lowercase\n letters, numbers, or hyphens. It must start with a lowercase letter and end with\n a lowercase letter or number.\n\n- \u003cvar translate=\"no\"\u003eREGION_ID\u003c/var\u003e is the region where you want the instance placed.\n\n | **Note:** You can only create instances in the [supported regions](/memorystore/docs/cluster/locations) for Memorystore for Redis Cluster. Not all of the regions currently supported by Memorystore for Redis are available for Memorystore for Redis Cluster. The `gcloud redis regions list` commands shows supported regions for Memorystore for Redis, not Memorystore for Redis Cluster.\n- \u003cvar translate=\"no\"\u003eNETWORK\u003c/var\u003e is the network used to create your instance. It must use\n the format: `projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID`. The\n network ID used here must match the network ID used by the service connection\n policy. Otherwise, the `create` operation fails. For more details, see\n [Networking](/memorystore/docs/cluster/networking).\n\n- \u003cvar translate=\"no\"\u003eNODE_TYPE\u003c/var\u003e is your chosen node type. Accepted values are:\n\n - `redis-shared-core-nano`\n - `redis-standard-small`\n - `redis-highmem-medium`\n - `redis-highmem-xlarge`\n\n | **Caution** : We recommend that you use the `redis-shared-core-nano` node type for development or testing purposes only. If you run Memorystore for Redis Cluster in a production environment, then we recommend using the `redis-standard-small`, `redis-highmem-medium`, or `redis-highmem-xlarge` node types. For more information about these node types, see [Choose a node type](/memorystore/docs/cluster/cluster-node-specification#choose_a_node_type).\n- \u003cvar translate=\"no\"\u003eSHARD_COUNT\u003c/var\u003e determines the number of shards in your\n instance. Shard count determines the total memory capacity for storing\n cluster data. To see more details about cluster specification, see [Cluster and node specification](/memorystore/docs/cluster/cluster-node-specification).\n\nGrant permissions for IAM authentication\n----------------------------------------\n\nTo grant an IAM access, grant the principal the\n`roles/redis.dbConnectionUser` role using the [Grant IAM role instructions](/iam/docs/grant-role-console#grant_an_iam_role).\n\nBy default, granting a principal the `roles/redis.dbConnectionUser` role allows\nthe principal to access all instances in your project.\n| **Note:** For instructions on limiting user access on a per-instance basis, see [Grant access to a group of resources based on resource name prefixes](/iam/docs/configuring-resource-based-access#resource-name-instance). When granting limited access for your instance, use the `resource.name` attribute and the following format for the instance name - `projects/PROJECT/locations/REGION/clusters/INSTANCE_NAME`.\n\n### Create a limited IAM admin role for an instance\n\nYou might want to create a role that can modify instance connection\nIAM permissions without granting full IAM admin\naccess. This can be done by creating a limited IAM admin for the\n`roles/redis.dbConnectionUser`\\` role. For more details, visit [Create limited IAM admins](/iam/docs/setting-limits-on-granting-roles#limited-admins-example).\n\nConnect to an instance that uses IAM authentication\n---------------------------------------------------\n\n1. If you don't already have a Compute Engine VM that uses the same\n authorized network as your Redis cluster, create one and connect to it by\n following [Quickstart Using a Linux VM](/compute/docs/create-linux-vm-instance).\n\n2. For your project, enable the Cloud Platform API scope. For more\n information about enabling this access scope, see\n [Attach the service account and update the access scope](/compute/docs/instances/change-service-account#changeserviceaccountandscopes). For more information\n about best practices for this scope, see\n [Scopes best practice](/compute/docs/access/service-accounts#scopes_best_practice).\n\n3. For your project, enable the Memorystore for Redis API.\n\n [Memorystore for Redis API](https://console.cloud.google.com/apis/library/redis.googleapis.com)\n\n \u003cbr /\u003e\n\n4. Install redis-cli on the Compute Engine VM by running the following\n command from the Compute Engine SSH terminal:\n\n ```\n sudo apt-get install redis-tools\n ```\n5. Run the following command to get an access token for your IAM\n user:\n\n ```\n gcloud auth print-access-token\n ```\n | **Note:** Access tokens will expire in one hour. For more information, see [IAM access token timeframe](/memorystore/docs/cluster/about-iam-auth#iam_access_token_time_frame).\n6. Connect to your instance's discovery endpoint:\n\n ```\n redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eNETWORK_ADDRESS\u003c/var\u003e is the instance's network address. To view the\n network address, see [View instance information](/memorystore/docs/cluster/view-instance-information).\n\n - \u003cvar translate=\"no\"\u003ePORT\u003c/var\u003e is the instances port number. To view the port number, see\n [View instance information](/memorystore/docs/cluster/view-instance-information).\n\n - \u003cvar translate=\"no\"\u003eACCESS_TOKEN\u003c/var\u003e is the IAM access token retrieved in previous\n steps.\n\n | **Note:** Authenticated connections are valid for 12 hours. For more information, see [IAMaccess token time frame](/memorystore/docs/cluster/about-iam-auth#iam_access_token_time_frame).\n7. Run the `CLUSTER SHARDS` command to view your cluster topology. Take a note\n of one of the node's IP addresses and port numbers.\n\n8. To use `redis-cli` to authenticate and connect to your node, use the\n following command:\n\n ```\n redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eNODE_IP_ADDRESS\u003c/var\u003e: the node's IP address that you found in the previous step\n - \u003cvar translate=\"no\"\u003eNODE_PORT\u003c/var\u003e: the node's port number that you found in the previous step\n - \u003cvar translate=\"no\"\u003eACCESS_TOKEN\u003c/var\u003e: the IAM access token that you retrieved in previous steps\n\n | **Note:** Authenticated connections are valid for 12 hours. For more information, see [IAM access token time frame](/memorystore/docs/cluster/about-iam-auth#iam_access_token_time_frame).\n9. To verify that you have an authenticated connection to your node, run a Redis\n `SET` and `GET` command.\n\n10. [Delete the Compute Engine VM](/compute/docs/create-linux-vm-instance#clean-up)\n that you used to connect to the Redis cluster. This helps you avoid incurring\n charges to your Cloud Billing account.\n\nAutomate access token retrieval\n-------------------------------\n\n| **Note:**We strongly recommend that you automate access\n| token retrieval in your application. Because of the short lifetime of an access\n| token, it's difficult to hardcode the token.\n|\n| For a code sample that shows how you can authenticate your application by using\n| popular client libraries, see [IAM\n| authentication client library code sample](/memorystore/docs/cluster/client-library-connection#iam_authentication_client_library_code_sample).\n\n1. **(Optional)** If you haven't already, create a service account for your application (see [Creating and managing a service account](/iam/docs/creating-managing-service-accounts)).\n\n ```\n gcloud iam service-accounts create SA_NAME \\\n --description=\"DESCRIPTION\" \\\n --display-name=\"DISPLAY_NAME\"\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eSA_NAME\u003c/var\u003e is the name of the service account.\n - \u003cvar translate=\"no\"\u003eDESCRIPTION\u003c/var\u003e is an optional description of the service account.\n - \u003cvar translate=\"no\"\u003eDISPLAY_NAME\u003c/var\u003e is a service account name to display in the Google Cloud console.\n2. Grant your service account `redis.dbConnectionUser` permission on your\n project.\n\n ```\n gcloud projects add-iam-policy-binding PROJECT_ID \\\n --member=\"serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com\" \\\n --role=\"ROLE_NAME\"\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the project ID\n - \u003cvar translate=\"no\"\u003eSA_NAME\u003c/var\u003e: the name of the service account\n - \u003cvar translate=\"no\"\u003eROLE_NAME\u003c/var\u003e: a role name, such as `redis.dbConnectionUser`\n3. [Authenticate your application](#connect_to_an_instance_that_uses_iam_authentication) as the given service account. For more\n information, see [Service accounts](/docs/authentication#service-accounts).\n\nCode sample for connecting to an instance that uses IAM authentication\n----------------------------------------------------------------------\n\nYou can view a [code sample](/memorystore/docs/cluster/client-library-connection#iam_authentication_client_library_code_sample) that\nshows you how you can authenticate your\napplication by using popular client libraries. In addition, you can see how to\nuse this code sample to connect to an instance that uses IAM authentication.\n\nTroubleshooting error messages with IAM authentication\n------------------------------------------------------"]]