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
:
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
Haz los cambios siguientes:
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óncreate
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
Para conceder acceso de gestión de identidades y accesos, asigna a la entidad principal el rol roles/redis.dbConnectionUser
siguiendo las instrucciones para conceder roles 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.
Habilita el ámbito de la API Cloud Platform en tu proyecto. Para obtener más información sobre cómo habilitar este permiso de acceso, consulta Adjuntar la cuenta de servicio y actualizar el permiso de acceso. Para obtener más información sobre las prácticas recomendadas de este ámbito, consulta Prácticas recomendadas de los ámbitos.
Habilita la API Memorystore para Redis en tu proyecto.
Instala redis-cli en la VM de Compute Engine ejecutando el siguiente comando desde la terminal SSH de Compute Engine:
sudo apt-get install redis-tools
Ejecuta el siguiente comando para obtener un token de acceso para tu usuario de IAM:
gcloud auth print-access-token
Conéctate al endpoint de descubrimiento de tu instancia:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Haz los cambios siguientes:
NETWORK_ADDRESS es la dirección de red de la instancia. Para ver la dirección de red, consulta Ver información de instancias.
PORT es el número de puerto de las instancias. Para ver el número de puerto, consulta Ver información de la instancia.
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
yGET
.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.
Automatizar la obtención de tokens de acceso
(Opcional) Si aún no lo has hecho, crea una cuenta de servicio para tu aplicación (consulta Crear y gestionar cuentas de servicio).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Haz los cambios siguientes:
- SA_NAME es el nombre de la cuenta de servicio.
- DESCRIPTION es una descripción opcional de la cuenta de servicio.
- DISPLAY_NAME es el nombre de la cuenta de servicio que se mostrará en la consola deGoogle Cloud .
Concede a tu cuenta de servicio el permiso
redis.dbConnectionUser
en tu proyecto.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
Haz los cambios siguientes:
- PROJECT_ID: el ID del proyecto
- SA_NAME: el nombre de la cuenta de servicio
- ROLE_NAME: un nombre de rol, como
redis.dbConnectionUser
Autentica tu aplicación como la cuenta de servicio indicada. Para obtener más información, consulta el artículo Cuentas de servicio.
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 |
---|---|---|
|
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. |
|
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. |
|
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. |
|
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. |