En esta página, se proporcionan instrucciones sobre las tareas comunes de la función de autenticación de IAM para Memorystore for Redis Cluster. Para obtener más detalles sobre la función, consulta Acerca de la autenticación de IAM.
Crea una instancia con autenticación de IAM
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
Reemplaza lo siguiente:
INSTANCE_ID es el ID de la instancia de Memorystore for Redis Cluster que estás creando. El ID de la instancia debe tener entre 1 y 63 caracteres, y usar solo letras minúsculas, números o guiones. Debe comenzar con una letra minúscula y terminar con una letra minúscula o un número.
REGION_ID es la región en la que deseas colocar la instancia.
NETWORK es la red que se usa para crear tu instancia. Debe usar el siguiente formato:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID. El ID de red que se usa aquí debe coincidir con el ID de red que usa la política de conexión de servicio. De lo contrario, la operacióncreatefallará. Para obtener más detalles, consulta Herramientas de redes.NODE_TYPE es el tipo de nodo del clúster.
SHARD_COUNT determina la cantidad de fragmentos en tu instancia. La cantidad de fragmentos determina la capacidad total de memoria para almacenar datos del clúster. Para obtener más detalles sobre la especificación del clúster, consulta Especificación del clúster y del nodo.
Otorga permisos para la autenticación de IAM
Para otorgar acceso de IAM, usa las instrucciones que se indican en Otorga un rol de IAM para otorgar el
roles/redis.dbConnectionUser rol a la principal. La principal es una
identidad a la que puedes otorgar acceso a los recursos Google Cloud. Por ejemplo, una
principal puede ser una cuenta de servicio que puede acceder atu Google Cloud proyecto.
De forma predeterminada, otorgar a una principal el rol roles/redis.dbConnectionUser le permite acceder a todas las instancias de tu proyecto.
Crea un rol de administrador de IAM limitado para una instancia
Es posible que desees crear un rol que pueda modificar los permisos de IAM de conexión de instancias sin otorgar acceso completo de administrador de IAM. Para ello, crea un administrador de IAM limitado para el rol roles/redis.dbConnectionUser. Para obtener más detalles, visita Crea administradores de IAM limitados.
Conéctate a una instancia que usa la autenticación de IAM
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 sobre el uso de una VM de Linux.
Para tu proyecto, usa el
gcloud compute instances set-service-accountcomando para configurar una cuenta de servicio y habilitar el permiso de la API de Cloud Platform para tu VM de Compute Engine.gcloud compute instances set-service-account VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPE
Realiza los siguientes reemplazos:
- VM_NAME: El nombre de tu VM de Compute Engine
- SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de tu cuenta de servicio
- SCOPE: El permiso de la API de Cloud Platform para la VM (
cloud-platform)
Por ejemplo, el siguiente comando asigna la cuenta de servicio
my-sa-123@my-project-123.iam.gserviceaccount.coma una VM llamadaexample-VMy establece el permiso de acceso en esa VM a la API de Cloud Platform:gcloud compute instances set-service-account example-VM \ --service-account=my-sa-123@my-project-123.iam.gserviceaccount.com \ --scopes=cloud-platform
Para obtener más información sobre cómo habilitar este permiso de acceso, consulta Adjunta la cuenta de servicio y actualiza el permiso de acceso. Para obtener más información sobre las prácticas recomendadas para este permiso, consulta Prácticas recomendadas para los permisos.
Para tu proyecto, habilita la API de Memorystore para Redis.
Para instalar redis-cli en la VM de Compute Engine, ejecuta 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 extremo de detección de tu instancia:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Reemplaza lo siguiente:
NETWORK_ADDRESS es la dirección de red de la instancia. Para ver la dirección de red, consulta Visualiza la información de la instancia.
PORT es el número de puerto de las instancias. Para ver el número de puerto, consulta Visualiza la información de la instancia.
ACCESS_TOKEN es el token de acceso de IAM recuperado en los pasos anteriores.
Ejecuta el comando
CLUSTER SHARDSpara 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-clipara autenticarte y conectarte a tu nodo, usa el siguiente comando:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Reemplaza lo siguiente:
- NODE_IP_ADDRESS: La dirección IP del nodo que encontraste en el paso anterior
- NODE_PORT: El número de puerto del nodo que encontraste en el paso anterior
- ACCESS_TOKEN: El token de acceso de IAM que recuperaste en los pasos anteriores
Para verificar que tienes una conexión autenticada a tu nodo, ejecuta un comando
SETyGETde Redis.Borra la VM de Compute Engine que usaste para conectarte al clúster de Redis. Esto te ayuda a evitar que se generen cargos en tu cuenta de Facturación de Cloud.
Automatiza la recuperación de tokens de acceso
(Opcional) Si aún no lo hiciste, crea una cuenta de servicio para tu aplicación (consulta Crea y administra una cuenta de servicio).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"Reemplaza lo siguiente:
- SA_NAME es el nombre de la cuenta de servicio.
- DESCRIPTION es una descripción opcional de la cuenta de servicio.
- DISPLAY_NAME es un nombre de cuenta de servicio para mostrar en la Google Cloud consola.
Otorga a tu cuenta de servicio el rol
redis.dbConnectionUseren tu proyecto.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/"ROLE_NAME"
Reemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto.
- SA_NAME: Es el nombre de la cuenta de servicio.
- ROLE_NAME: Es un nombre de rol. Para este ejemplo:
redis.dbConnectionUser.
Autentica tu aplicación como la cuenta de servicio determinada. Para obtener más información, consulta la sección sobre cuentas de servicio.
Muestra de código para conectarse a una instancia que usa la autenticación de IAM
Puedes ver una muestra de código que te muestra cómo puedes autenticar tu aplicación con bibliotecas cliente populares. Además, puedes ver cómo usar esta muestra de código para conectarte a una instancia que usa la autenticación de IAM.
Soluciona problemas de mensajes de error con la autenticación de IAM
| 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", verifica que el token de acceso no haya vencido y se recupere siguiendo las instrucciones que se indican en Conéctate a una instancia que usa la autenticación de IAM. Los permisos de IAM pueden tardar unos minutos en propagarse si se cambiaron recientemente. |
|
Verifica que la aplicación esté configurada para proporcionar un token de acceso de IAM al servidor de Memorystore for Redis Cluster. | La aplicación no proporciona un token de acceso al servidor de Memorystore for Redis Cluster. Verifica que la aplicación esté configurada para proporcionar un token de acceso. siguiendo las instrucciones que se indican en Conéctate a una instancia que usa la autenticación de IAM |
|
Volver a intentarlo con una retirada exponencial | El backend de IAM está sobrecargado y mostró un error de cuota excedida al servidor de Memorystore for Redis Cluster. Las aplicaciones deben intentar volver a ejecutar este error con una retirada exponencial para evitar más fallas de conexión. |
|
Volver a intentarlo con una retirada exponencial | El backend de IAM mostró un error transitorio al servidor de Memorystore for Redis Cluster. Las aplicaciones deben intentar volver a ejecutar este error con una retirada exponencial para evitar más fallas de conexión. |