Gestionar la autenticación de gestión de identidades y accesos

En esta página se proporcionan instrucciones sobre las tareas habituales de la función de autenticación de IAM de Memorystore para Valkey. 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 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 --auth-mode=iam-auth

Haz los cambios siguientes:

  • INSTANCE_ID es el ID de la instancia de Memorystore for Valkey 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:

    • shared-core-nano
    • standard-small
    • highmem-medium
    • 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 de instancias. Para obtener más información sobre la especificación de instancias, consulta Especificación de instancias 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/memorystore.dbConnectionUser siguiendo las instrucciones para conceder roles de gestión de identidades y accesos.

De forma predeterminada, si se asigna el rol roles/memorystore.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 IAM de conexión de instancias sin conceder acceso completo de administrador de IAM. Para ello, crea un administrador de IAM limitado para el rol roles/memorystore.dbConnectionUser. Para obtener más información, consulta el artículo Crear administradores de IAM con acceso limitado.

Conectarse a una instancia que usa la autenticación de gestión de identidades y accesos

  1. Si aún no tienes una máquina virtual 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 con una máquina virtual de Linux.

  2. 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.

  3. Habilita la API Memorystore for Valkey en tu proyecto.

    API Memorystore for Valkey

  4. Instala valkey-cli en la máquina virtual de Compute Engine siguiendo las instrucciones de Instalar Valkey.

  5. Ejecuta el siguiente comando para obtener un token de acceso para tu usuario de IAM:

    gcloud auth print-access-token
    
  6. Conéctate al endpoint de descubrimiento de tu instancia:

    valkey-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.

  7. Ejecuta el comando CLUSTER SHARDS para ver la topología de tu nodo. Anota una de las direcciones IP y los números de puerto del nodo.

  8. Conéctate al nodo que hayas elegido ejecutando el siguiente comando:

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    Haz los cambios siguientes:

    • NODE_IP_ADDRESS es la dirección IP del nodo que has encontrado en el paso anterior.
    • NODE_PORT es el número de puerto del nodo que has encontrado en el paso anterior.
  9. Ejecuta los comandos SET y GET de Valkey para verificar que has establecido una conexión autenticada con el nodo de tu instancia.

  10. Cuando hayas terminado de probar la conexión a la instancia de Valkey, te recomendamos que elimines la VM de Compute Engine que has usado para conectarte a la instancia de Valkey. De esta forma, evitarás que se apliquen cargos a tu cuenta de Facturación de Cloud.

  11. Ejecuta el siguiente comando para usar valkey-cli para autenticarte y conectarte a tu instancia. Sustituye las variables por los valores adecuados:

    valkey-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.

  12. Ejecuta los comandos SET y GET de Valkey para verificar que has establecido una conexión autenticada con tu instancia.

  13. Cuando hayas terminado de probar la conexión a la instancia de Valkey, te recomendamos que elimines la VM de Compute Engine que has usado para conectarte a la instancia de Valkey. De esta forma, evitarás que se apliquen cargos a tu cuenta de Facturación de Cloud.

Automatizar la obtención de tokens de acceso

Te recomendamos que automatices la obtención de tokens de acceso en tu aplicación, ya que no se pueden codificar fácilmente debido a su breve tiempo de validez.

  1. (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 .
  2. Concede a tu cuenta de servicio el permiso memorystore.dbConnectionUser en tu proyecto.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="memorystore.dbConnectionUser"
    

    Haz los cambios siguientes:

    • PROJECT_ID es el ID del proyecto.
    • SA_NAME es el nombre de la cuenta de servicio.
    • ROLE_NAME es el nombre de un rol, como roles/compute.osLogin.
  3. Autentica tu aplicación como la cuenta de servicio indicada. Consulta más información sobre las cuentas de servicio.

    Para ver ejemplos de código que muestran cómo autenticar tu aplicación mediante bibliotecas de cliente populares, consulta Ejemplos de código de bibliotecas de cliente.

Código de ejemplo para conectarse a una instancia que usa la autenticación de gestión de identidades y accesos

Para ver un ejemplo de código compatible con Valkey sobre cómo configurar una biblioteca de cliente para conectarse a una instancia que usa la autenticación de IAM, consulta el ejemplo de código para la autenticación de IAM y el cifrado en tránsito.

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

Verificar el nombre de usuario y el token de acceso proporcionados al servidor de Memorystore for Valkey 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 IAM al servidor de Memorystore para Valkey La aplicación no proporciona un token de acceso al servidor de Memorystore for Valkey. 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/valkey/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 para Valkey. 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/valkey/manage-iam-auth#error_messages.

Reintentar con un tiempo de espera exponencial El backend de gestión de identidades y accesos ha devuelto un error transitorio al servidor de Memorystore para Valkey. 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.