Gestionar la autenticación de gestión de identidades y accesos
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
En esta página se proporcionan instrucciones sobre las tareas habituales de la función de autenticación de IAM de Memorystore for Redis Cluster. Para obtener más información sobre esta función, consulta el artículo Acerca de la autenticación de gestión de identidades y accesos.
Crear una instancia con la autenticación de gestión de identidades y accesos
Para crear una instancia de Memorystore for Redis Cluster que use la autenticación de IAM, ejecuta el comando create:
INSTANCE_ID es el ID de la instancia de Memorystore for Redis Cluster que vas a crear. El ID de instancia debe tener entre 1 y 63 caracteres, y solo puede incluir letras minúsculas, números o guiones. Debe empezar por una letra minúscula y terminar por una letra minúscula o un número.
REGION_ID es la región en la que quieres colocar la instancia.
NETWORK es la red que se ha usado para crear la instancia. Debe usar el formato projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. El ID de red que se usa aquí debe coincidir con el que usa la política de conexión de servicio. De lo contrario, la operación create no se realizará. Para obtener más información, consulta Redes.
NODE_TYPE es el tipo de nodo que has elegido. Los valores aceptados son:
redis-shared-core-nano
redis-standard-small
redis-highmem-medium
redis-highmem-xlarge
SHARD_COUNT determina el número de particiones de tu instancia. El número de particiones determina la capacidad total de memoria para almacenar datos del clúster. Para obtener más información sobre las especificaciones de los clústeres, consulta Especificaciones de clústeres y nodos.
Conceder permisos para la autenticación de gestión de identidades y accesos
De forma predeterminada, si se asigna el rol roles/redis.dbConnectionUser a una entidad de seguridad, esta podrá acceder a todas las instancias de tu proyecto.
.
Crear un rol de administrador de gestión de identidades y accesos limitado para una instancia
Puede que quieras crear un rol que pueda modificar los permisos de gestión de identidades y accesos de la conexión de instancias sin conceder acceso completo de administrador de gestión de identidades y accesos. Para ello, crea un administrador de gestión de identidades y accesos limitado para el rol roles/redis.dbConnectionUser` Para obtener más información, consulta el artículo Crear administradores de gestión de identidades y accesos con acceso limitado.
Conectarse a una instancia que usa la autenticación de gestión de identidades y accesos
Si aún no tienes una VM de Compute Engine que use la misma red autorizada que tu clúster de Redis, crea una y conéctate a ella siguiendo la guía de inicio rápido con una VM de Linux.
ACCESS_TOKEN es el token de acceso de gestión de identidades y accesos que se ha obtenido en pasos anteriores.
Ejecuta el comando CLUSTER SHARDS para ver la topología de tu clúster. Anota una de las direcciones IP y los números de puerto del nodo.
Para usar redis-cli para autenticarte y conectarte a tu nodo, usa el siguiente comando:
redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Haz los cambios siguientes:
NODE_IP_ADDRESS: la dirección IP del nodo que has encontrado en el paso anterior
NODE_PORT: el número de puerto del nodo que has encontrado en el paso anterior.
ACCESS_TOKEN: el token de acceso de gestión de identidades y accesos que has obtenido en los pasos anteriores.
Para verificar que tienes una conexión autenticada a tu nodo, ejecuta un comando de Redis
SET y GET.
Elimina la VM de Compute Engine
que has usado para conectarte al clúster de Redis. De esta forma, no se te cobrará en tu cuenta de facturación de Cloud.
Código de ejemplo para conectarse a una instancia que usa la autenticación de gestión de identidades y accesos
Puedes consultar un ejemplo de código que te muestra cómo autenticar tu aplicación mediante bibliotecas de cliente populares. Además, puedes consultar cómo usar este código de ejemplo para conectarte a una instancia que usa la autenticación de gestión de identidades y accesos.
Solucionar problemas de mensajes de error con la autenticación de gestión de identidades y accesos
Mensaje de error
Acción recomendada
Descripción
-WRONGPASS invalid username-password pair or user is disabled
Verifica el nombre de usuario y el token de acceso proporcionados al servidor de Memorystore for Redis Cluster
El nombre de usuario o el token de acceso proporcionados no son válidos. "default" es el único nombre de usuario admitido. Si tu aplicación ya usa el nombre de usuario "default", comprueba que el token de acceso no haya caducado y que se haya obtenido siguiendo las instrucciones de Conectarse a una instancia que usa la autenticación de IAM. Los permisos de gestión de identidades y accesos pueden tardar unos minutos en propagarse si se han cambiado recientemente.
-NOAUTH Authentication required
Comprueba que la aplicación esté configurada para proporcionar un token de acceso de gestión de identidades y accesos al servidor de Memorystore for Redis Cluster
La aplicación no proporciona un token de acceso al servidor de Memorystore for Redis Cluster. Comprueba que la aplicación esté configurada para proporcionar un token de acceso. Para ello, sigue las instrucciones que se indican en Conectarse a una instancia que usa la autenticación de IAM.
-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.
Reintentar con un tiempo de espera exponencial
El backend de IAM está sobrecargado y ha devuelto un error de cuota superada al servidor de Memorystore for Redis Cluster. Las aplicaciones deben intentar volver a realizar esta operación con un tiempo de espera exponencial para evitar que se produzcan más errores de conexión.
-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/cluster/manage-iam-auth#error_messages.
Reintentar con un tiempo de espera exponencial
El backend de IAM ha devuelto un error transitorio al servidor de Memorystore for Redis Cluster. Las aplicaciones deben intentar volver a realizar esta operación con un tiempo de espera exponencial para evitar que se produzcan más errores de conexión.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-10 (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------------------------------------------------------"]]