En esta página, se proporcionan instrucciones sobre las tareas comunes de la función de autenticación de IAM para Memorystore for Valkey. 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 Valkey que use la autenticación de IAM, ejecuta el comando create:
gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --authorization-mode=iam-auth
Reemplaza lo siguiente:
INSTANCE_ID es el ID de la instancia de Memorystore for Valkey que crearás. El ID de la instancia debe tener entre 1 y 63 caracteres, y solo puede incluir 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 la 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 Redes.NODE_TYPE es el tipo de nodo de la instancia.
SHARD_COUNT determina la cantidad de fragmentos en tu instancia. La cantidad de fragmentos determina la capacidad total de memoria para almacenar datos de instancias. Para ver más detalles sobre la especificación de la instancia, consulta Especificación de la instancia y el nodo.
Otorga permisos para la autenticación de IAM
Para otorgar un acceso de IAM, otorga a la principal el
roles/memorystore.dbConnectionUser rol con las instrucciones para otorgar roles de IAM.
De forma predeterminada, otorgar a una principal el rol roles/memorystore.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/memorystore.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 instancia de Valkey, 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, habilita el alcance de la API de 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 alcance de acceso. Para obtener más información sobre las prácticas recomendadas para este alcance, consulta Prácticas recomendadas para los alcances.
Para tu proyecto, habilita la API de Memorystore for Valkey.
Instala
valkey-clien la VM de Compute Engine siguiendo las instrucciones en Instala Valkey.Ejecuta el siguiente comando para recuperar un token de acceso para tu usuario de IAM:
gcloud auth print-access-token
Los tokens de acceso vencen en una hora. Para obtener más información, consulta Período del token de acceso de IAM.
Conéctate al extremo de descubrimiento de tu instancia:
valkey-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 la instancia. Para ver el número de puerto, consulta Visualiza la información de la instancia.
ACCESS_TOKEN: Es el token de acceso que recuperaste en el paso anterior.
Si especificas un nombre de usuario, debes usar el nombre de usuario
defaulto la dirección de correo electrónico principal de IAM. Además, las conexiones autenticadas siguen siendo válidas después de que vence el token. Para obtener más información, consulta Período del token de acceso de IAM.Si habilitas la encriptación en tránsito en la instancia, debes agregar las marcas de seguridad de la capa de transporte (TLS). Por ejemplo:
valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c --tls --cacert /tmp/server_ca.pem
Opcional: Si tienes una instancia con el modo de clúster habilitado, ejecuta el comando
CLUSTER SHARDSpara ver la topología de tu nodo. Anota una de las direcciones IP y los números de puerto del nodo.Si tienes una instancia con el modo de clúster inhabilitado, puedes omitir este paso.
Para usar
valkey-clipara autenticarte y conectarte a tu nodo, usa el siguiente comando:valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Reemplaza lo siguiente:
- NODE_IP_ADDRESS: Es la dirección IP del nodo que anotaste en el paso anterior.
- NODE_PORT: Es el número de puerto del nodo que anotaste en el paso anterior
- ACCESS_TOKEN: Es el token de acceso de IAM que recuperaste anteriormente en este procedimiento.
Para verificar que tienes una conexión autenticada a tu nodo, ejecuta un comando
SETyGETde Valkey.Borra la VM de Compute Engine que usaste para conectarte a la instancia. 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
Te recomendamos que automatices la recuperación de tokens de acceso en tu aplicación. Debido a la corta duración de un token de acceso, es difícil codificarlo de forma rígida.
(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
memorystore.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:
memorystore.dbConnectionUser.
Autentica tu aplicación como la cuenta de servicio determinada. Consulta Cuentas de servicio para obtener más información.
Para obtener ejemplos de código que muestran cómo puedes autenticar tu aplicación con bibliotecas cliente populares, consulta Ejemplos de código de bibliotecas cliente.
Muestra de código para conectarse a una instancia que usa la autenticación de IAM
Para ver una muestra de código compatible con Valkey sobre cómo configurar una biblioteca cliente para conectarse a una instancia que usa la autenticación de IAM, consulta Muestra de código para la autenticación de IAM y la encriptación en tránsito.
Soluciona problemas de mensajes de error con la autenticación de IAM
| Mensaje de error | Acción recomendada | Descripción |
|---|---|---|
|
Verifica el token de acceso proporcionado al servidor de Memorystore for Valkey y asegúrate de que el usuario de ACL coincidente esté habilitado. | La principal de IAM no tiene los permisos necesarios, el token de acceso que proporcionaste no es válido o el usuario de ACL coincidente está inhabilitado. Verifica que el token de acceso no haya vencido y que lo hayas recuperado siguiendo las instrucciones en Conéctate a una instancia que usa la autenticación de IAM. Si cambiaste los permisos de IAM recientemente, es posible que tarden unos minutos en propagarse. |
|
Verifica que la aplicación esté configurada para proporcionar un token de acceso de IAM al servidor de Memorystore for Valkey. | La aplicación no proporciona un token de acceso al servidor de Memorystore for Valkey. Verifica que la aplicación esté configurada para proporcionar un token de acceso y que lo hayas recuperado siguiendo las instrucciones en Conéctate a una instancia que usa la autenticación de IAM. |
|
Vuelve a intentarlo con una retirada exponencial. | El backend de IAM está sobrecargado y mostró un error de cuota excedida al servidor de Memorystore for Valkey. Para evitar más fallas de conexión, te recomendamos que las aplicaciones vuelvan a intentar este error con una retirada exponencial. |
|
Verifica el nombre de usuario o vuelve a intentarlo con una retirada exponencial. | Este error se produce por los siguientes motivos:
Si el nombre de usuario es válido, te recomendamos que tu aplicación intente volver a intentar este error con una retirada exponencial para evitar más fallas de conexión. |