Control de acceso con IAM

En esta página, se describe cómo puedes controlar los permisos y el acceso a un proyecto de Memorystore para Redis mediante la administración de identidades y accesos (IAM).

Descripción general

Google Cloud ofrece IAM, que te permite otorgar acceso detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. En esta página, se describen las funciones y los permisos de IAM de Memorystore para Redis. Para obtener una descripción detallada de las funciones y los permisos, consulta la documentación de Cloud IAM.

Memorystore para Redis proporciona un conjunto de funciones predefinidas diseñadas con el fin de ayudarte a controlar fácilmente el acceso a tus recursos de Redis. Si las funciones predefinidas no proporcionan los conjuntos de permisos que necesitas, también puedes crear tus propias funciones personalizadas. Además, las funciones básicas más antiguas (editor, visualizador y propietario) aún están disponibles, aunque no proporcionan el mismo control detallado que las funciones de Memorystore para Redis. En particular, las funciones básicas brindan acceso a los recursos en Google Cloud, en lugar de solo a Memorystore para Redis. Para obtener más información sobre las funciones básicas, consulta Funciones básicas.

Permisos y funciones

En esta sección, se resumen los permisos y las funciones que admite Memorystore para Redis.

Funciones predefinidas

Memorystore para Redis proporciona algunas funciones predefinidas que puedes usar a fin de proporcionar permisos más detallados a las principales. La función que otorgas a una principal controla las acciones que puede realizar. Los principales pueden ser personas, grupos o cuentas de servicios.

Puedes otorgar varios roles a la misma principal y, si tienes los permisos para hacerlo, puedes cambiar los roles otorgados a una principal en cualquier momento.

Las funciones más amplias incluyen las más específicas. Por ejemplo, la función Editor de Redis incluye todos los permisos de la función Lector de Redis, junto con todos los permisos para la función Editor de Redis. Del mismo modo, la función Administrador de Redis incluye todos los permisos de la función Editor de Redis, junto con sus permisos adicionales.

Las funciones básicas (Propietario, Editor y Visualizador) proporcionan permisos en Google Cloud. Las funciones específicas de Memorystore para Redis solo proporcionan permisos de Memorystore para Redis, excepto los siguientes permisos de Google Cloud, que son necesarios para el uso general de Google Cloud:

resourcemanager.projects.get
resourcemanager.projects.list

En la siguiente tabla, se enumeran las funciones predefinidas disponibles de Memorystore para Redis, junto con sus permisos de Memorystore para Redis:

Rol Nombre Permisos de Redis Descripción

roles/owner

Propietario

redis.*

Acceso y control totales para todos los recursos de Google Cloud; administración del acceso de los usuarios

roles/editor

Editor Todos los permisos de redis , excepto *.getIamPolicy y .setIamPolicy Acceso de lectura y escritura a todos los recursos de Google Cloud y Redis (control total, excepto la capacidad de modificar permisos)

roles/viewer

Lector

redis.*.get redis.*.list

Acceso de solo lectura a todos los recursos de Google Cloud, incluidos los recursos de Redis

roles/redis.admin

Administrador de Redis

redis.*

Control total de todos los recursos de Memorystore para Redis.

roles/redis.editor

Editor de Redis Todos los permisos de redis, excepto

redis.instances.create redis.instances.delete redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

Administra instancias de Memorystore para Redis No se pueden crear ni borrar instancias.

roles/redis.viewer

Lector de Redis Todos los permisos de redis, excepto

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

Acceso de solo lectura a todos los recursos de Memorystore para Redis.

Permisos y sus funciones

En la tabla siguiente, se enumeran los permisos que admite Memorystore para Redis y las funciones de Memorystore para Redis que lo incluyen:

Permiso Función de Redis Función básica

redis.instances.list

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.instances.get

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.instances.create

Administrador de Redis Escritor

redis.instances.update

Administrador de Redis
Editor de Redis
Escritor

redis.instances.updateAuth

Administrador de Redis Escritor

redis.instances.getAuthString

Administrador de Redis Escritor

redis.instances.delete

Administrador de Redis Escritor

redis.instances.upgrade

Administrador de Redis Escritor

redis.instances.import

Administrador de Redis Escritor

redis.instances.export

Administrador de Redis Escritor

redis.locations.list

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.locations.get

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.operations.list

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.operations.get

Administrador de Redis
Editor de Redis
Visualizador de Redis
Lector

redis.operations.delete

Administrador de Redis Escritor

Funciones personalizadas

Si las funciones predefinidas no responden a tus requisitos comerciales únicos, puedes definir tus propias funciones personalizadas con los permisos que especifiques. Para responder a estas necesidades, IAM ofrece funciones personalizadas. Cuando crees funciones personalizadas de Memorystore para Redis, asegúrate de incluir resourcemanager.projects.get y resourcemanager.projects.list. De lo contrario, la consola de Google Cloud no funcionará correctamente en Memorystore para Redis. Para obtener más información, consulta las dependencias de permisos. Para aprender a crear una función personalizada, consulta Crea una función personalizada.

Permisos necesarios para realizar tareas comunes en la consola de Google Cloud

Para permitir que un usuario trabaje con Memorystore para Redis mediante la consola de Google Cloud, la función del usuario debe incluir los permisos resourcemanager.projects.get y resourcemanager.projects.list.

En la siguiente tabla, se proporcionan los otros permisos necesarios para algunas tareas comunes en Google Cloud Console:

Tarea Permisos adicionales obligatorios
Mostrar la página de listas de instancias

redis.instances.get
redis.instances.list

Crear y editar una instancia

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

Borrar una instancia

redis.instances.delete
redis.instances.get
redis.instances.list

Conectar una instancia desde Cloud Shell

redis.instances.get
redis.instances.list
redis.instances.update

Ver información de instancias

redis.instances.get
monitoring.timeSeries.list

Importar y exportar archivos de copia de seguridad de RDB

redis.instances.import
redis.instances.export

Actualiza la versión de Redis de una instancia

redis.instances.upgrade

Permisos obligatorios para los comandos de gcloud

Para permitir que un usuario trabaje con Memorystore para Redis mediante los comandos de gcloud, la función del usuario debe incluir los permisos resourcemanager.projects.get y resourcemanager.projects.list.

En la siguiente tabla, se enumeran los permisos que debe tener el usuario que invoca un comando de gcloud para cada subcomando gcloud redis:

Comando Permisos necesarios
gcloud redis instances auth

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.list

Permisos obligatorios para los métodos de API

En la siguiente tabla, se enumeran los permisos que debe tener el emisor para llamar a cada método de la API de Memorystore para Redis o realizar tareas con las herramientas de Google Cloud que usan la API (como Google Cloud Console o la herramienta de línea de comandos de gcloud):

Método Permisos necesarios

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

La cuenta de servicio de Memorystore para Redis

Cada instancia de Memorystore para Redis tiene una cuenta de servicio que usa a fin de comunicarse con otros recursos de Google Cloud.

A veces, como cuando exporting o usas CMEK, debes otorgar funciones o permisos específicos a la cuenta de servicio.

Formato de cuenta de servicio de Memorystore para Redis

La cuenta de servicio de la instancia usa uno de dos formatos diferentes, según el momento en que se creó.

  • El primer formato es el siguiente:

    [PROJECT_NUMBER]-compute@developer.gserviceaccount.com

  • El segundo formato es el siguiente:

    service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Para ver la fuente de información sobre la cuenta de servicio que usa tu instancia, consulta Visualiza la cuenta de servicio de tu instancia.

Problemas conocidos

A veces, una cuenta de servicio que usa el formato [PROJECT_NUMBER]-compute@developer.gserviceaccount.com puede entrar en conflicto con la política de la organización. Si deseas obtener más información y los pasos para resolver este problema, consulta Problemas con la política de la organización de uso compartido restringido al dominio.

Visualiza la cuenta de servicio de la instancia:

Para ver la cuenta de servicio de tu instancia, ejecuta el siguiente comando y toma nota de la cuenta de servicio que aparece en persistenceIamIdentity:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

Permisos AUTH para Redis

En la siguiente tabla, se muestran los permisos mínimos que un usuario necesita con el fin de completar algunas tareas básicas de AUTH de Memorystore para Redis.

Se necesitan permisos Crea una instancia de Memorystore con AUTH para Redis habilitado. Habilita o inhabilita AUTH en una instancia existente de Redis Visualiza la string AUTH Visualiza si AUTH está habilitado o inhabilitado para una instancia de Redis
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.updateAuth X X
redis.instances.getAuthString X X X

Permisos de encriptación en tránsito

En la siguiente tabla, se muestran los permisos necesarios para habilitar y administrar la encriptación en tránsito de Memorystore para Redis.

Se necesitan permisos Crea una instancia de Memorystore con encriptación en tránsito Descargar la autoridad certificada
redis.instances.create X
redis.instances.get X

Permisos de la política de mantenimiento

En la siguiente tabla, se muestran los permisos necesarios para administrar la política de mantenimiento de Memorystore para Redis.

Se necesitan permisos Crea una instancia de Memorystore con una política de mantenimiento habilitada Crea o modifica las políticas de mantenimiento en una instancia de Memorystore existente. Visualiza la configuración de la política de mantenimiento Reprograma el mantenimiento
redis.instances.create X X X
redis.instances.update X X X
redis.instances.get X X X
redis.instances.rescheduleMaintenance X X X

Permisos necesarios para la importación y exportación

El uso de funciones personalizadas para importar y exportar requiere dos funciones personalizadas independientes. Una función personalizada para el usuario y una función personalizada adicional para la cuenta de servicio de la instancia de Redis. La función personalizada para la cuenta de servicio usa permisos a nivel de bucket de Cloud Storage.

Para encontrar la cuenta de servicio de tu instancia, consulta la sección sobre cómo ver la cuenta de servicio de tu instancia.

Permisos para la cuenta de servicio

Ten en cuenta que solo debes otorgar permisos de almacenamiento a la cuenta de servicio a nivel de bucket, no a todo el proyecto. Para obtener instrucciones, consulta Agrega un principal a una política a nivel de bucket.

Una vez que otorgues a tu cuenta de servicio permisos a nivel de bucket, puedes ignorar el mensaje que dice “Memorystore no puede verificar si la cuenta de servicio xxxx@xxxx.gserviceaccount.com tiene los permisos necesarios para importar o exportar. Si necesitas ayuda para verificar o actualizar los permisos, comunícate con el administrador de tu proyecto. Para conocer los permisos necesarios, consulta la documentación de permisos de importación y exportación”. Si aplicas los permisos que se indican a continuación a las funciones personalizadas para la cuenta de usuario y la cuenta de servicio, la importación o exportación se realizará de forma correcta.

Permisos para una función personalizada de la cuenta de servicio Importar con gcloud Exportar con gcloud Realiza la importación con la consola de Google Cloud Exporta con la consola de Google Cloud
storage.buckets.get
storage.objects.get X X
storage.objects.create X X
storage.objects.delete X Opcional.
(Otorga permiso para reemplazar el archivo RDB existente).
X Opcional.
(Otorga permiso para reemplazar el archivo RDB existente).

Permisos para la cuenta de usuario

Permisos para funciones personalizadas de cuentas de usuario Importar con gcloud Exportar con gcloud Realiza la importación con la consola de Google Cloud Exporta con la consola de Google Cloud
resourcemanager.projects.get X X
redis.instances.get
redis.instances.list X X X X
redis.instances.import X X
redis.instances.export X X
redis.operations.get X
redis.operations.list X X
redis.operations.cancel
storage.buckets.list X X
storage.buckets.get X X
storage.objects.list X X
storage.objects.get X X

¿Qué sigue?