Control de acceso para Cloud Spanner

Descripción general

La administración de identidades y accesos (IAM) te permite controlar el acceso de usuarios y grupos a los recursos de Cloud Spanner a nivel de proyecto, instancia y base de datos de Cloud Spanner. Por ejemplo, puedes especificar que un usuario tenga control total de una base de datos específica en una instancia específica de tu proyecto, pero que no pueda crear, modificar ni borrar instancias en tu proyecto. El uso de IAM de Cloud Spanner te permite otorgar un permiso a un usuario o grupo sin tener que modificar cada permiso de base de datos o instancia de Cloud Spanner de manera individual.

En este documento, se describen los permisos de IAM relevantes para Cloud Spanner y las funciones de IAM que otorgan esos permisos. Para obtener una descripción detallada de IAM y sus características, consulta la guía para desarrolladores de la administración de identidades y accesos. En particular, consulta la sección sobre cómo administrar las políticas de IAM .

Permisos

Los permisos se usan para permitir a los usuarios realizar acciones específicas en los recursos de Cloud Spanner. Por ejemplo, el permiso spanner.databases.read permite que un usuario lea desde una base de datos con la API de lectura de Cloud Spanner, mientras que spanner.databases.select permite que un usuario ejecute una instrucción de SQL de selección en una base de datos. No se otorgan permisos directamente a los usuarios; en su lugar, se otorgan funciones predefinidas o funciones personalizadas, que tienen uno o más permisos agrupados dentro de ellas.

En las siguientes tablas, se enumeran los permisos de IAM que están asociados con Cloud Spanner.

Configuración de instancias

Los siguientes permisos se aplican a la configuración de instancias de Cloud Spanner (consulta la referencia de configuración de instancias: REST, RPC).

Nombre del permiso de configuración de instancias Descripción
spanner.instanceConfigs.list Crear una lista del conjunto de opciones de configuración de instancias
spanner.instanceConfigs.get Obtener una configuración de instancia

Instancias

Los siguientes permisos se aplican a las instancias de Cloud Spanner (consulta la referencia de instancias: REST, RPC).

Nombre del permiso de instancias Descripción
spanner.instances.create Crear una instancia
spanner.instances.list Crear una lista de instancias
spanner.instances.get Obtener la configuración de una instancia específica
spanner.instances.getIamPolicy Obtener la política de IAM de una instancia
spanner.instances.update Actualizar una instancia
spanner.instances.setIamPolicy Establecer la política de IAM de una instancia
spanner.instances.delete Borrar una instancia

Operaciones de instancias

Los siguientes permisos se aplican a las operaciones de instancias de Cloud Spanner (consulta la referencia de instancias: REST, RPC).

Nombre del permiso de operación de instancias Descripción
spanner.instanceOperations.list Crear una lista de las operaciones de instancias
spanner.instanceOperations.get Obtener una operación de instancia específica
spanner.instanceOperations.cancel Cancelar una operación de instancia
spanner.instanceOperations.delete Borrar una operación de instancia

Bases de datos

Los siguientes permisos se aplican a las bases de datos de Cloud Spanner (consulta la referencia de bases de datos: REST, RPC).

Nombre del permiso de la base de datos Descripción
spanner.databases.beginPartitionedDmlTransaction

Ejecutar una declaración particionada de lenguaje de manipulación de datos (DML)

spanner.databases.create Crea una base de datos.
spanner.databases.createBackup Crea una copia de seguridad a partir de la base de datos. También requiere spanner.backups.create para crear el recurso de copia de seguridad.
spanner.databases.list Crear una lista de bases de datos
spanner.databases.update

Actualizar los metadatos de una base de datos

spanner.databases.updateDdl Actualizar el esquema de una base de datos
spanner.databases.get Obtener los metadatos de una base de datos
spanner.databases.getDdl Obtener el esquema de una base de datos
spanner.databases.getIamPolicy Obtener la política de IAM de una base de datos
spanner.databases.setIamPolicy Establecer la política de IAM de una base de datos
spanner.databases.beginReadOnlyTransaction Iniciar una transacción de solo lectura en una base de datos de Cloud Spanner
spanner.databases.beginOrRollbackReadWriteTransaction Iniciar o revertir una transacción de lectura y escritura en una base de datos de Cloud Spanner
spanner.databases.read Leer desde una base de datos con la API de lectura
spanner.databases.select Ejecutar una instrucción de SQL de selección en una base de datos
spanner.databases.write Escribir en una base de datos
spanner.databases.drop Descartar una base de datos

Operaciones de bases de datos

Los siguientes permisos se aplican a las operaciones de bases de datos de Cloud Spanner (consulta la referencia de bases de datos: REST, RPC).

Nombre del permiso de operación de bases de datos Descripción
spanner.databaseOperations.list Genera una lista de bases de datos y restable las operaciones de base de datos.
spanner.databaseOperations.get Obtener una operación de base de datos específica
spanner.databaseOperations.cancel Cancelar una operación de base de datos
spanner.databaseOperations.delete

Borrar una operación de base de datos

Copias de seguridad

Los siguientes permisos se aplican a las copias de seguridad de Cloud Spanner (consulta la referencia de copias de seguridad: REST y RPC).

Nombre del permiso de copia de seguridad Descripción
spanner.backups.create Crear una copia de seguridad También requiere spanner.databases.createBackup en la base de datos de origen.
spanner.backups.get Obtener una copia de seguridad.
spanner.backups.update Actualizar una copia de seguridad.
spanner.backups.delete Borra una copia de seguridad.
spanner.backups.list Muestra una lista de copias de seguridad.
spanner.backups.restoreDatabase Restablecer una base de datos a partir de una copia de seguridad. También requiere spanner.databases.create para crear la base de datos restablecida en la instancia de destino.
spanner.backups.getIamPolicy Obtener la política de IAM de una copia de seguridad
spanner.backups.setIamPolicy Establecer la política de IAM de una copia de seguridad.

Operaciones de creación de copia de seguridad

Los siguientes permisos se aplican a las operaciones de copia de seguridad de Cloud Spanner (consulta la referencia de la base de datos: REST y RPC).

Nombre del permiso para la operación de copia de seguridad Descripción
spanner.backupOperations.list Enumerar las operaciones de copia de seguridad.
spanner.backupOperations.get Obtener una operación de copia de seguridad específica.
spanner.backupOperations.cancel Cancela una operación de copia de seguridad.

Sesiones

Los siguientes permisos se aplican a las sesiones de Cloud Spanner (consulta la referencia de bases de datos: REST, RPC).

Nombre del permiso de sesiones Descripción
spanner.sessions.create Crear una sesión
spanner.sessions.get Obtener una sesión
spanner.sessions.delete Borrar una sesión
spanner.sessions.list Enumerar sesiones

Funciones predefinidas

Una función predefinida es un conjunto de uno o más permisos. Por ejemplo, la función predefinida roles/spanner.databaseUser contiene los permisos spanner.databases.read y spanner.database.write. Existen los siguientes tipos de funciones predefinidas para Cloud Spanner:

  • Funciones de persona: Se otorgan a usuarios o grupos, lo que les permite realizar acciones en los recursos de tu proyecto.
  • Funciones de máquina: Se otorgan a cuentas de servicio, lo que permite que las máquinas que se ejecutan como esas cuentas de servicio realicen acciones en los recursos de tu proyecto.

En la siguiente tabla, se enumeran las funciones de IAM predefinidas para Cloud Spanner, incluida una lista de los permisos asociados con cada función:

Función Título Descripción Permisos Recurso más bajo
roles/spanner.admin Administrador de Cloud Spanner

Tiene acceso completo a todos los recursos de Cloud Spanner en un proyecto de Google Cloud. Un miembro con esta función puede hacer lo siguiente:

  • Otorgar y revocar permisos a otros miembros en todos los recursos de Cloud Spanner del proyecto
  • Asignar y borrar recursos cobrables de Cloud Spanner
  • Ejecutar operaciones de obtención, enumeración y modificación en los recursos de Cloud Spanner
  • Leer y escribir en todas las bases de datos de Cloud Spanner del proyecto
  • Recuperar los metadatos del proyecto
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.*
Proyecto
roles/spanner.backupAdmin Administrador de copias de seguridad de Cloud Spanner

Un miembro con esta función puede hacer lo siguiente:

  • Crear, ver, actualizar y borrar copias de seguridad
  • Ver y administrar la política de IAM de una copia de seguridad

Mediante esta función no se puede restablecer una base de datos desde una copia de seguridad.

  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.backupOperations.*
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databases.createBackup
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get
  • spanner.instances.list
Instancia
roles/spanner.backupWriter Escritor de copias de seguridad de Cloud Spanner Esta función está diseñada para que la usen las secuencias de comandos que automatizan la creación de copias de seguridad. Un miembro que tenga esta función puede crear copias de seguridad, pero no puede actualizarlas ni borrarlas.
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backups.create
  • spanner.backups.get
  • spanner.backups.list
  • spanner.databases.createBackup
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get
Instancia
roles/spanner.databaseAdmin Administrador de base de datos de Cloud Spanner

Un miembro con esta función puede hacer lo siguiente:

  • Obtener y enumerar todas las instancias de Cloud Spanner del proyecto
  • Crear, enumerar y descartar bases de datos en una instancia
  • Otorgar y revocar el acceso a las bases de datos en el proyecto
  • Leer y escribir en todas las bases de datos de Cloud Spanner del proyecto
  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.databaseOperations.*
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.create
  • spanner.databases.drop
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.getIamPolicy
  • spanner.databases.list
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.setIamPolicy
  • spanner.databases.update
  • spanner.databases.updateDdl
  • spanner.databases.write
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.sessions.*
Instancia
roles/spanner.databaseReader Lector de base de datos de Cloud Spanner

Un miembro con esta función puede hacer lo siguiente:

  • Leer desde la base de datos de Cloud Spanner
  • Ejecutar consultas de SQL en la base de datos
  • Ver el esquema de la base de datos
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.getDdl
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.instances.get
  • spanner.sessions.*
Base de datos
roles/spanner.databaseUser Usuario de base de datos de Cloud Spanner

Un miembro con esta función puede hacer lo siguiente:

  • Leer y escribir en la base de datos de Cloud Spanner
  • Ejecutar consultas de SQL en la base de datos, incluido DML y DML particionado
  • Ver y actualizar el esquema de la base de datos
  • spanner.databaseOperations.*
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.getDdl
  • spanner.databases.partitionQuery
  • spanner.databases.partitionRead
  • spanner.databases.read
  • spanner.databases.select
  • spanner.databases.updateDdl
  • spanner.databases.write
  • spanner.instances.get
  • spanner.sessions.*
Base de datos
roles/spanner.restoreAdmin Administrador de restablecimiento de Cloud Spanner

Un miembro que tenga esta función puede restablecer bases de datos desde las copias de seguridad.

Si necesitas restablecer una copia de seguridad en una instancia diferente, debes aplicar esta función a nivel de proyecto o en ambas instancias. No se pueden crear copias de seguridad mediante esta función.

  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.backups.get
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databases.create
  • spanner.databases.get
  • spanner.databases.list
  • spanner.instances.get
  • spanner.instances.list
Instancia
roles/spanner.viewer Visualizador de Cloud Spanner

Un miembro con esta función puede hacer lo siguiente:

  • Visualizar todas las instancias de Cloud Spanner (pero no puede modificarlas)
  • Ver todas las bases de datos de Cloud Spanner (pero no modificarlas ni leer desde ellas)

Por ejemplo, puedes combinar esta función con la función roles/spanner.databaseUser para otorgar a un usuario acceso a una base de datos específica y que solo tenga acceso de lectura a otras instancias y bases de datos.

Esta función se recomienda a nivel de proyecto de Google Cloud para los usuarios que interactúan con recursos de Cloud Spanner en Google Cloud Console.

  • monitoring.timeSeries.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • spanner.databases.list
  • spanner.instanceConfigs.*
  • spanner.instances.get
  • spanner.instances.list
Proyecto

Funciones básicas

Las funciones básicas son funciones a nivel de proyecto anteriores a la IAM. Consulta Funciones básicas para obtener más detalles.

Si bien Cloud Spanner admite las siguientes funciones básicas, debes usar una de las funciones predefinidas que se muestran arriba siempre que sea posible. Las funciones básicas incluyen permisos abarcativos que se aplican a todos tus recursos de Google Cloud; en cambio, las funciones predefinidas de Cloud Spanner incluyen permisos específicos que se aplican solo a Cloud Spanner.

Función básica Descripción
roles/viewer Puede crear listas y obtener los metadatos de los esquemas y las instancias. También puede leer y consultar en una base de datos mediante SQL.
roles/editor Puede hacer lo mismo que roles/viewer. También crea instancias y bases de datos, y escribe datos en una base de datos.
roles/owner Puede hacer lo mismo que roles/editor. También modifica el acceso a instancias y bases de datos.

Funciones personalizadas

Si las funciones predefinidas de Cloud Spanner no satisfacen tus necesidades empresariales, puedes definir tus propias funciones personalizadas con los permisos que especifiques.

Antes de crear una función personalizada, debes identificar las tareas que necesitas realizar. Puedes identificar los permisos necesarios para cada tarea y agregarlos a la función personalizada.

Funciones personalizadas para tareas de cuentas de servicio

Para la mayoría de las tareas, es evidente qué permisos debes agregar a tu función personalizada. Por ejemplo, si deseas que tu cuenta de servicio pueda crear una base de datos, agrega el permiso spanner.databases.create a tu función personalizada.

Sin embargo, cuando lees o escribes datos en una tabla de Cloud Spanner, debes agregar varios permisos diferentes a tu función personalizada. En la siguiente tabla, se muestran los permisos necesarios para leer y escribir datos.

Tarea de cuenta de servicio Permisos necesarios
Leer datos spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Insertar, actualizar o borrar datos spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Crea una copia de seguridad spanner.backups.create
spanner.databases.createBackup
Restablece una base de datos spanner.databases.create
spanner.backups.restoreDatabase

Funciones personalizadas para las tareas de Google Cloud Console

A fin de identificar la lista de permisos que necesitas para una tarea determinada en Cloud Console, determina el flujo de trabajo de esa tarea y compila los permisos para ese flujo de trabajo. Por ejemplo, para visualizar los datos en una tabla, debes seguir estos pasos en Cloud Console:

Paso Permisos
1. Accede al proyecto. resourcemanager.projects.get
2. Visualiza la lista de instancias. spanner.instances.list
3. Selecciona una instancia. spanner.instances.get
4. Visualiza la lista de bases de datos. spanner.databases.list
5. Selecciona una base de datos y una tabla. spanner.databases.get, spanner.databases.getDdl
6. Visualiza datos en una tabla. spanner.databases.select, spanner.sessions.create, spanner.sessions.delete

En este ejemplo, necesitas estos permisos:

  • resourcemanager.projects.get
  • spanner.databases.get
  • spanner.databases.getDdl
  • spanner.databases.list
  • spanner.databases.select
  • spanner.instances.get
  • spanner.instances.list
  • spanner.sessions.create
  • spanner.sessions.delete

En la siguiente tabla, se enumeran los permisos necesarios para las acciones en Cloud Console.

Acción Permisos
Ver la lista de instancias en la página Instancias

resourcemanager.projects.get
spanner.instances.list

Ver la lista en la pestaña Permisos de la página Instancias

spanner.instances.getIamPolicy

Agregar miembros en la pestaña Permisos de la página Instancias

spanner.instances.setIamPolicy

Seleccionar una instancia de la lista de instancias para visualizar la página Detalles de la instancia

spanner.instances.get

Crear una instancia

spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create

Borrar una instancia

spanner.instances.delete

Modificar una instancia

spanner.instanceOperations.get
spanner.instances.update

Visualizar los grafos en la pestaña Supervisar en la página Detalles de la instancia o en la página Detalles de la base de datos

monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get

Visualizar la lista de bases de datos en la página Detalles de la instancia

spanner.databases.list

Visualizar la lista en la pestaña Permisos de la página Detalles de la base de datos

spanner.databases.getIamPolicy

Agregar miembros en la pestaña Permisos de la página Detalles de la base de datos

spanner.databases.setIamPolicy

Seleccionar una base de datos de la lista de bases de datos y consultar el esquema en la página Detalles de la base de datos

spanner.databases.get
spanner.databases.getDdl

Crear una base de datos

spanner.databases.create

Borrar una base de datos

spanner.databases.drop

Crear una tabla

Actualizar un esquema de tabla

spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl

Visualizar datos en la pestaña Datos de la página Detalles de la base de datos

Crear y ejecutar una consulta

spanner.databases.select
spanner.sessions.create
spanner.sessions.delete

Modificar datos en una tabla

spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete

Visualiza la pestaña Copia de seguridad/restablecimientos

spanner.backups.list
spanner.backups.get

Visualiza la lista de operaciones de copia de seguridad

spanner.backupOperations.list

Visualiza la lista de operaciones de restablecimiento

spanner.databaseOperations.list

Crea una copia de seguridad

spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1

Restablecer una base de datos a partir de una copia de seguridad

spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create

Actualizar una copia de seguridad

spanner.backups.update

Borra una copia de seguridad

spanner.backups.delete

1 Es obligatorio si creas una copia de seguridad desde la pestaña Copia de seguridad/restablecimientos a nivel de la instancia en lugar de a nivel de la base de datos.

Administración de políticas de IAM de Cloud Spanner

Puedes obtener, configurar y probar las políticas de IAM con las API de REST o RPC en los recursos de copia de seguridad, instancia y base de datos de Cloud Spanner.

Instancias

API de REST API de RPC
projects.instances.getIamPolicy GetIamPolicy
projects.instances.setIamPolicy SetIamPolicy
projects.instances.testIamPermissions TestIamPermissions

Bases de datos

API de REST API de RPC
projects.instances.databases.getIamPolicy GetIamPolicy
projects.instances.databases.setIamPolicy SetIamPolicy
projects.instances.databases.testIamPermissions TestIamPermissions

Copias de seguridad

API de REST API de RPC
projects.instances.backups.getIamPolicy GetIamPolicy
projects.instances.backups.setIamPolicy SetIamPolicy
projects.instances.backups.testIamPermissions TestIamPermissions

Qué sigue