Control de acceso con la gestión de identidades y accesos

En esta página se describe cómo puedes controlar el acceso y los permisos de los proyectos de Memorystore para Redis mediante Gestión de Identidades y Accesos (IAM).

Información general

Google Cloud ofrece IAM, que te permite dar acceso más granular a recursos específicos Google Cloud y evita el acceso no deseado a otros recursos. En esta página se describen los roles y permisos de gestión de identidades y accesos (IAM) de Memorystore para Redis. Para obtener una descripción detallada de los roles y permisos, consulta la documentación de gestión de identidades y accesos.

Memorystore para Redis proporciona un conjunto de roles predefinidos diseñados para ayudarte a controlar fácilmente el acceso a tus recursos de Redis. Si los roles predefinidos no proporcionan los conjuntos de permisos que necesitas, también puedes crear tus propios roles personalizados. Además, los roles básicos antiguos (Editor, Lector y Propietario) también están disponibles, aunque no proporcionan el mismo control detallado que los roles de Memorystore para Redis. En concreto, los roles básicos proporcionan acceso a los recursos deGoogle Cloud, no solo a los de Memorystore para Redis. Para obtener más información sobre los roles básicos, consulta Roles básicos.

Permisos y roles

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

Funciones predefinidas

Memorystore para Redis ofrece algunos roles predefinidos que puedes usar para proporcionar permisos más específicos a las entidades. El rol que asignes a una entidad principal controla las acciones que puede llevar a cabo. Las entidades principales pueden ser personas, grupos o cuentas de servicio.

Puedes conceder varios roles al mismo principal y, si tienes los permisos necesarios, puedes cambiar los roles concedidos a un principal en cualquier momento.

Entre las funciones más amplias se incluyen aquellas que están más estrechamente definidas. Por ejemplo, el rol Editor de Redis incluye todos los permisos del rol Lector de Redis, además de los permisos del rol Editor de Redis. Del mismo modo, el rol Administrador de Redis incluye todos los permisos del rol Editor de Redis, así como sus permisos adicionales.

Los roles básicos (Propietario, Editor y Lector) proporcionan permisos en Google Cloud. Los roles específicos de Memorystore para Redis solo proporcionan permisos de Memorystore para Redis, excepto los siguientes Google Cloud permisos, que son necesarios para el uso general: Google Cloud

resourcemanager.projects.get
resourcemanager.projects.list

En la siguiente tabla se enumeran los roles predefinidos disponibles en 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 completos de todos los Google Cloud recursos; gestiona el acceso de los usuarios

roles/editor

Editor Todos los redis permisos excepto *.getIamPolicy & .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, incluidos los recursos de Redis. Google Cloud

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

Gestionar instancias de Memorystore para Redis. No se pueden crear ni eliminar 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 siguiente tabla se enumeran los permisos que admite Memorystore para Redis y los roles de Memorystore para Redis que los incluyen:

Permiso Rol de Redis Rol básico

redis.instances.list

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.instances.get

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.instances.create

Administrador de Redis Editor

redis.instances.update

Administrador de Redis
Editor de Redis
Editor

redis.instances.updateAuth

Administrador de Redis Editor

redis.instances.getAuthString

Administrador de Redis Editor

redis.instances.delete

Administrador de Redis Editor

redis.instances.upgrade

Administrador de Redis Editor

redis.instances.import

Administrador de Redis Editor

redis.instances.export

Administrador de Redis Editor

redis.locations.list

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.locations.get

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.operations.list

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.operations.get

Administrador de Redis
Editor de Redis
Lector de Redis
Google Reader

redis.operations.delete

Administrador de Redis Editor

Roles personalizados

Si los roles predefinidos no se ajustan a los requisitos específicos de tu empresa, puedes definir tus propios roles personalizados con los permisos que especifiques. Para ello, Gestión de Identidades y Accesos ofrece roles personalizados. Cuando crees roles personalizados para Memorystore para Redis, asegúrate de incluir resourcemanager.projects.get y resourcemanager.projects.list. De lo contrario, la consola Google Cloud no funcionará correctamente en Memorystore para Redis. Para obtener más información, consulta Dependencias de permisos. Para saber cómo crear un rol personalizado, consulta el artículo Crear un rol personalizado.

Permisos necesarios para realizar tareas habituales en la consola Google Cloud

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

En la siguiente tabla se indican los permisos necesarios para realizar algunas tareas habituales en la consola de Google Cloud :

Tarea Permisos adicionales obligatorios
Mostrar la página de lista 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

Eliminar una instancia

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

Conectarse a una instancia de Cloud Shell

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

Ver información sobre instancias

redis.instances.get
monitoring.timeSeries.list

Importar y exportar archivos de copia de seguridad RDB

redis.instances.import
redis.instances.export

Actualizar 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 comandos gcloud, el rol 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 gcloud para cada subcomando gcloud redis:

Comando Permisos obligatorios
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 indican los permisos que debe tener el llamante para invocar cada método de la API Memorystore para Redis o para realizar tareas con las herramientas de Google Cloud que usan la API (como la consola de Google Cloud o la herramienta de línea de comandos de gcloud):

Método Permisos obligatorios

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 para comunicarse con otros recursos. Google Cloud

En ocasiones (por ejemplo, al exportar o usar CMEK), debes conceder roles o permisos específicos a la cuenta de servicio.

Formato de la cuenta de servicio de Memorystore para Redis

La cuenta de servicio de tu instancia usa uno de los dos formatos diferentes, en función de cuándo 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

Problemas conocidos

En ocasiones, una cuenta de servicio con el formato [PROJECT_NUMBER]-compute@developer.gserviceaccount.com puede entrar en conflicto con la política de tu organización. Para obtener más información y saber cómo solucionar este problema, consulta Problemas con la política de organización para compartir con dominio restringido.

Ver la cuenta de servicio de una instancia

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

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

Permisos de AUTH de Redis

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

Permisos necesarios Crear una instancia de Memorystore con Redis AUTH habilitado Habilitar o inhabilitar AUTH en una instancia de Redis Ver la cadena de AUTH Ver si AUTH está habilitado o inhabilitado en 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 cifrado en tránsito

En la siguiente tabla se muestran los permisos necesarios para habilitar y gestionar el cifrado en tránsito en Memorystore para Redis.

Permisos necesarios Crear una instancia de Memorystore con cifrado en tránsito Descargar la autoridad de certificación
redis.instances.create X
redis.instances.get X

Permisos de la política de mantenimiento

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

Permisos necesarios Crear una instancia de Memorystore con una política de mantenimiento habilitada Crear o modificar políticas de mantenimiento en una instancia de Memorystore Ver la configuración de la política de mantenimiento Reprogramar 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 importar y exportar

Para usar roles personalizados en la importación y la exportación, se necesitan dos roles personalizados independientes. Un rol personalizado para el usuario y otro rol personalizado para la cuenta de servicio de la instancia de Redis. El rol personalizado de la cuenta de servicio usa permisos a nivel de segmento de Cloud Storage.

Para encontrar la cuenta de servicio de tu instancia, consulta Ver la cuenta de servicio de una instancia.

Permisos de la cuenta de servicio

Ten en cuenta que solo tienes que conceder permisos de almacenamiento a la cuenta de servicio a nivel de segmento, no a todo el proyecto. Para obtener instrucciones, consulta Añadir un principal a una política a nivel de segmento.

Una vez que hayas concedido permisos a nivel de segmento a tu cuenta de servicio, 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. Para recibir ayuda con la verificación o la actualización de los permisos, ponte en contacto con el administrador del proyecto. Para obtener información sobre los permisos necesarios, consulta la documentación sobre los permisos para importar o exportar. Si aplicas los permisos que se indican a continuación a los roles personalizados de la cuenta de usuario y la cuenta de servicio, la importación o exportación se realizará correctamente.

Permisos del rol personalizado de la cuenta de servicio Importar con gcloud Exportar con gcloud Importar con la consola Google Cloud Exportar con la consola de Google Cloud
storage.buckets.get
storage.objects.get X X
storage.objects.create X X
storage.objects.delete X Opcional.
(concede permiso para sobrescribir el archivo RDB).
X Opcional.
(concede permiso para sobrescribir el archivo RDB).

Permisos de la cuenta de usuario

Permisos del rol personalizado de la cuenta de usuario Importar con gcloud Exportar con gcloud Importar con la consola Google Cloud Exportar 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

Siguientes pasos