Descripción general de IAM

La administración de identidades y accesos (IAM) te permite controlar el acceso de usuarios y grupos a los recursos de Spanner a nivel de proyecto, instancia y base de datos de 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 del control de acceso con IAM te permite otorgar un permiso a un usuario o grupo sin tener que modificar cada permiso de base de datos o instancia de Spanner de manera individual.

En este documento, se describen los permisos de IAM relevantes para Spanner y los roles de IAM que otorgan esos permisos. Para obtener una descripción detallada de IAM y sus funciones, consulta la guía para desarrolladores de Identity and Access Management. 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 Spanner. Por ejemplo, el permiso spanner.databases.read permite que un usuario lea desde una base de datos con la API de lectura de 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 asociados con Spanner.

Configuración de instancias

Los siguientes permisos se aplican a las configuraciones de instancias de Spanner. Para obtener más información, consulta las referencias de configuración de instancias para las APIs de REST y RPC.

Nombre del permiso de configuración de instancias Descripción
spanner.instanceConfigs.create Crea una configuración de instancia personalizada.
spanner.instanceConfigs.delete Borra la configuración de una instancia personalizada.
spanner.instanceConfigs.get Obtener una configuración de instancia
spanner.instanceConfigs.list Crear una lista del conjunto de opciones de configuración de instancias
spanner.instanceConfigs.update Actualiza la configuración de una instancia personalizada.

Operaciones de configuración de instancias

Los siguientes permisos se aplican a las operaciones de configuración de instancias de Spanner. Para obtener más información, consulta las referencias de instancias de las APIs de REST y RPC.

Nombre del permiso de operación de configuración de instancias Descripción
spanner.instanceConfigOperations.cancel Cancelar una operación de configuración de instancia
spanner.instanceConfigOperations.delete Borra una operación de configuración de instancia.
spanner.instanceConfigOperations.get Obtén una operación de configuración de instancia.
spanner.instanceConfigOperations.list Enumera las operaciones de configuración de instancias.

Instancias

Los siguientes permisos se aplican a las instancias de Spanner. Para obtener más información, consulta las referencias de instancias de las APIs de REST y RPC.

Nombre del permiso de instancias Descripción
spanner.instances.create Crear una instancia
spanner.instances.delete Borra una instancia.
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.list Crear una lista de instancias
spanner.instances.setIamPolicy Establecer la política de IAM de una instancia
spanner.instances.update Actualizar una instancia

Operaciones de instancias

Los siguientes permisos se aplican a las operaciones de instancias de Spanner. Para obtener más información, consulta las referencias de instancias de las APIs de REST y RPC.

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

Particiones de instancias

Los siguientes permisos se aplican a las particiones de instancias de Spanner. Para obtener más información, consulta las referencias de partición de instancias para las APIs de REST y RPC.

Nombre del permiso de instancias Descripción
spanner.instancePartitions.create Crea una partición de instancia.
spanner.instancePartitions.delete Borra una partición de instancia.
spanner.instancePartitions.get Obtén la configuración de una partición de instancia específica.
spanner.instancePartitions.list Muestra una lista de las particiones de la instancia.
spanner.instancePartitions.update Actualiza una partición de instancia.

Operaciones de partición de instancias

Los siguientes permisos se aplican a las operaciones de partición de instancias de Spanner. Para obtener más información, consulta las referencias de partición de instancias para las APIs de REST y RPC.

Nombre del permiso de operación de partición de instancias Descripción
spanner.instancePartitionOperations.cancel Cancela una operación de partición de instancia.
spanner.instancePartitionOperations.delete Borra una operación de partición de instancia.
spanner.instancePartitionOperations.get Obtén una operación de partición de instancia específica.
spanner.instancePartitionOperations.list Muestra una lista de las operaciones de partición de instancias.

Bases de datos

Los siguientes permisos se aplican a las bases de datos de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

Nombre del permiso de la base de datos Descripción
spanner.databases.adapt Permite que la API de Spanner Adapter interactúe directamente con Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Iniciar o revertir una transacción de lectura y escritura en una base de datos de Spanner
spanner.databases.beginPartitionedDmlTransaction Ejecutar una declaración de lenguaje de manipulación de datos (DML) particionada de instancia Para obtener más información sobre las consultas particionadas por instancias, consulta Lee datos en paralelo.
spanner.databases.beginReadOnlyTransaction Iniciar una transacción de solo lectura en una base de datos de Spanner
spanner.databases.create Crea una base de datos.
spanner.databases.createBackup Crea una copia de seguridad de la base de datos. También requiere spanner.backups.create para crear el recurso de la copia de seguridad.
spanner.databases.drop Descartar 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.list Crear una lista de bases de datos
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.setIamPolicy Establece la política de IAM de una base 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.useDataBoost Usa los recursos de procesamiento de Spanner Data Boost para procesar consultas particionadas por instancia.
spanner.databases.useRoleBasedAccess Usa el control de acceso detallado.
spanner.databases.write Escribir en una base de datos

Roles de bases de datos

Los siguientes permisos se aplican a los roles de la base de datos de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

Nombre del permiso de rol de la base de datos Descripción
spanner.databaseRoles.list Crear una lista de roles de bases de datos
spanner.databaseRoles.use Usa un rol de base de datos especificado.

Operaciones de bases de datos

Los siguientes permisos se aplican a las operaciones de la base de datos de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

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

Copias de seguridad

Los siguientes permisos se aplican a las copias de seguridad de Spanner. Para obtener más información, consulta las referencias de las copias de seguridad de las APIs de REST y RPC.

Nombre del permiso de la 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.delete Borra una copia de seguridad.
spanner.backups.get Obtener una copia de seguridad.
spanner.backups.getIamPolicy Obtener la política de IAM de una copia de seguridad
spanner.backups.list Muestra una lista de copias de seguridad.
spanner.backups.restoreDatabase Restablece la base de datos desde una copia de seguridad. También requiere spanner.databases.create para crear la base de datos restablecida en la instancia de destino.
spanner.backups.setIamPolicy Establecer la política de IAM de una copia de seguridad.
spanner.backups.update Actualizar una copia de seguridad.

Operaciones de copia de seguridad

Los siguientes permisos se aplican a las operaciones de copia de seguridad de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

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

Programaciones de copias de seguridad

Los siguientes permisos se aplican a las programaciones de copias de seguridad de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

Nombre del permiso de la programación de copias de seguridad Descripción
spanner.backupSchedules.create Crea una programación de copias de seguridad. También requiere spanner.databases.createBackup en la base de datos de origen.
spanner.backupSchedules.delete Borrar una programación de copia de seguridad
spanner.backupSchedules.get Obtén una programación de copia de seguridad.
spanner.backupSchedules.list Enumera las programaciones de copias de seguridad.
spanner.backupSchedules.update Actualiza una programación de copia de seguridad.

Sesiones

Los siguientes permisos se aplican a las sesiones de Spanner. Para obtener más información, consulta las referencias de la base de datos de las APIs de REST y RPC.

Nombre del permiso de sesiones Descripción
spanner.sessions.create Crear una sesión
spanner.sessions.delete Borrar una sesión
spanner.sessions.get Obtener 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.databases.write. Existen los siguientes dos tipos de roles predefinidos para 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 enumera el control de acceso con roles predefinidos de IAM, incluida una lista de los permisos asociados con cada rol:

Role Permissions

(roles/spanner.admin)

Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:

  • Grant and revoke permissions to other principals for all Spanner resources in the project.
  • Allocate and delete chargeable Spanner resources.
  • Issue get/list/modify operations on Cloud Spanner resources.
  • Read from and write to all Cloud Spanner databases in the project.
  • Fetch project metadata.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list
  • spanner.backupSchedules.create
  • spanner.backupSchedules.delete
  • spanner.backupSchedules.get
  • spanner.backupSchedules.getIamPolicy
  • spanner.backupSchedules.list
  • spanner.backupSchedules.setIamPolicy
  • spanner.backupSchedules.update
  • spanner.backups.copy
  • spanner.backups.create
  • spanner.backups.delete
  • spanner.backups.get
  • spanner.backups.getIamPolicy
  • spanner.backups.list
  • spanner.backups.restoreDatabase
  • spanner.backups.setIamPolicy
  • spanner.backups.update
  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list
  • spanner.databaseRoles.list
  • spanner.databases.adapt
  • spanner.databases.addSplitPoints
  • spanner.databases.beginOrRollbackReadWriteTransaction
  • spanner.databases.beginPartitionedDmlTransaction
  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.changequorum
  • spanner.databases.create
  • spanner.databases.createBackup
  • 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.useDataBoost
  • spanner.databases.useRoleBasedAccess
  • spanner.databases.write
  • spanner.instanceConfigOperations.cancel
  • spanner.instanceConfigOperations.delete
  • spanner.instanceConfigOperations.get
  • spanner.instanceConfigOperations.list
  • spanner.instanceConfigs.create
  • spanner.instanceConfigs.delete
  • spanner.instanceConfigs.get
  • spanner.instanceConfigs.list
  • spanner.instanceConfigs.update
  • spanner.instanceOperations.cancel
  • spanner.instanceOperations.delete
  • spanner.instanceOperations.get
  • spanner.instanceOperations.list
  • spanner.instancePartitionOperations.cancel
  • spanner.instancePartitionOperations.delete
  • spanner.instancePartitionOperations.get
  • spanner.instancePartitionOperations.list
  • spanner.instancePartitions.create
  • spanner.instancePartitions.delete
  • spanner.instancePartitions.get
  • spanner.instancePartitions.list
  • spanner.instancePartitions.update
  • spanner.instances.create
  • spanner.instances.createTagBinding
  • spanner.instances.delete
  • spanner.instances.deleteTagBinding
  • spanner.instances.get
  • spanner.instances.getIamPolicy
  • spanner.instances.list
  • spanner.instances.listEffectiveTags
  • spanner.instances.listTagBindings
  • spanner.instances.setIamPolicy
  • spanner.instances.update
  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.backupAdmin)

A principal with this role can:

  • Create, view, update, and delete backups.
  • View and manage a backup's allow policy.

This role cannot restore a database from a backup.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backupOperations.*

  • spanner.backupOperations.cancel
  • spanner.backupOperations.get
  • spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.delete

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backupSchedules.update

spanner.backups.copy

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.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.backupWriter)

This role is intended to be used by scripts that automate backup creation. A principal with this role can create backups, but cannot update or delete them.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.backupOperations.get

spanner.backupOperations.list

spanner.backupSchedules.create

spanner.backupSchedules.get

spanner.backupSchedules.list

spanner.backups.copy

spanner.backups.create

spanner.backups.get

spanner.backups.list

spanner.databases.createBackup

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instances.get

(roles/spanner.databaseAdmin)

A principal with this role can:

  • Get/list all Spanner instances in the project.
  • Create/list/drop databases in an instance.
  • Grant/revoke access to databases in the project.
  • Read from and write to all Cloud Spanner databases in the project.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databaseRoles.list

spanner.databases.adapt

spanner.databases.addSplitPoints

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

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

spanner.databases.useRoleBasedAccess

spanner.databases.write

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.getIamPolicy

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReader)

A principal with this role can:

  • Read from the Spanner database.
  • Execute SQL queries on the database.
  • View schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseReaderWithDataBoost)

Includes all permissions in the spanner.databaseReader role enabling access to read and/or query a Cloud Spanner database using instance resources, as well as the permission to access the database with Data Boost, a fully managed serverless service that provides independent compute resources.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.useDataBoost

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.databaseRoleUser)

In conjunction with the IAM role Cloud Spanner Fine-grained Access User, grants permissions to individual Spanner database roles. Add a condition for each desired Spanner database role that includes the resource type of `spanner.googleapis.com/DatabaseRole` and the resource name ending with `/YOUR_SPANNER_DATABASE_ROLE`.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

(roles/spanner.databaseUser)

A principal with this role can:

  • Read from and write to the Spanner database.
  • Execute SQL queries on the database, including DML and Partitioned DML.
  • View and update schema for the database.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.create

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.adapt

spanner.databases.beginOrRollbackReadWriteTransaction

spanner.databases.beginPartitionedDmlTransaction

spanner.databases.beginReadOnlyTransaction

spanner.databases.changequorum

spanner.databases.getDdl

spanner.databases.partitionQuery

spanner.databases.partitionRead

spanner.databases.read

spanner.databases.select

spanner.databases.updateDdl

spanner.databases.write

spanner.instancePartitions.get

spanner.instances.get

spanner.sessions.*

  • spanner.sessions.create
  • spanner.sessions.delete
  • spanner.sessions.get
  • spanner.sessions.list

(roles/spanner.fineGrainedAccessUser)

Grants permissions to use Spanner's fine-grained access control framework. To grant access to specific database roles, also add the `roles/spanner.databaseRoleUser` IAM role and its necessary conditions.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

spanner.databaseRoles.list

spanner.databases.useRoleBasedAccess

(roles/spanner.restoreAdmin)

A principal with this role can restore databases from backups.

If you need to restore a backup to a different instance, apply this role at the project level or to both instances. This role cannot create backups.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.backups.get

spanner.backups.list

spanner.backups.restoreDatabase

spanner.databaseOperations.*

  • spanner.databaseOperations.cancel
  • spanner.databaseOperations.get
  • spanner.databaseOperations.list

spanner.databases.create

spanner.databases.get

spanner.databases.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.createTagBinding

spanner.instances.deleteTagBinding

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

(roles/spanner.serviceAgent)

Cloud Spanner API Service Agent

aiplatform.endpoints.get

aiplatform.endpoints.list

aiplatform.endpoints.predict

aiplatform.models.get

aiplatform.models.list

(roles/spanner.viewer)

A principal with this role can:

  • View all Spanner instances (but cannot modify instances).
  • View all Spanner databases (but cannot modify or read from databases).

For example, you can combine this role with the roles/spanner.databaseUser role to grant a user with access to a specific database, but only view access to other instances and databases.

This role is recommended at the Google Cloud project level for users interacting with Cloud Spanner resources in the Google Cloud console.

Lowest-level resources where you can grant this role:

  • Instance
  • Database

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

spanner.databases.list

spanner.instanceConfigs.get

spanner.instanceConfigs.list

spanner.instancePartitions.get

spanner.instancePartitions.list

spanner.instances.get

spanner.instances.list

spanner.instances.listEffectiveTags

spanner.instances.listTagBindings

Funciones básicas

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

Si bien Spanner admite los siguientes roles básicos, debes usar uno de los roles predefinidos que se mostraron antes siempre que sea posible. Los roles básicos incluyen permisos amplios que se aplican a todos tus recursos de Google Cloud . En cambio, los roles predefinidos de Spanner incluyen permisos detallados que solo se aplican a Spanner.

Rol básico Descripción
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.
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.

Funciones personalizadas

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

Antes de crear un rol personalizado, debes identificar las tareas que necesitas realizar. Luego, puedes identificar los permisos necesarios para cada tarea y agregarlos al rol personalizado.

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 Spanner, debes agregar varios permisos diferentes a tu rol personalizado. En la siguiente tabla, se muestran los permisos necesarios para leer y escribir datos.

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

Roles personalizados para las tareas de Google Cloud console

Para identificar la lista de permisos que necesitas para una tarea determinada en la consola deGoogle Cloud , determina el flujo de trabajo de esa tarea y compila los permisos para ese flujo de trabajo. Por ejemplo, para ver los datos en una tabla, debes seguir estos pasos en la consola de Google Cloud :

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.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.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 la consola deGoogle Cloud .

Permisos Acción
spanner.databases.setIamPolicy Agregar principales en la pestaña Permisos de la página Detalles de la base de datos
spanner.instances.setIamPolicy Agregar principales en la pestaña Permisos de la página Instancias
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Crear una copia de seguridad
spanner.backupSchedules.create
spanner.databases.createBackup
Crea una programación de copia de seguridad
spanner.databases.create Crea una base de datos
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Crea una partición de instancia
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Crea una tabla
Actualiza el esquema de una tabla
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Crea una instancia
spanner.backups.delete Borrar una copia de seguridad
spanner.backupSchedules.delete Borra una programación de copia de seguridad
spanner.databases.drop Borrar una base de datos
spanner.instancePartitions.delete Borra una partición de instancia
spanner.instances.delete Borrar una instancia
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modifica una partición de instancia
spanner.instanceOperations.get
spanner.instances.update
Modificar una instancia
spanner.databases.beginOrRollbackReadWriteTransaction
spanner.databases.select
spanner.databases.write
spanner.sessions.create
spanner.sessions.delete
Modificar datos en una tabla
spanner.instanceConfigs.list
spanner.instances.get
spanner.backups.get
spanner.backups.restoreDatabase
spanner.instances.list
spanner.databases.create
Restablece una base de datos a partir de una copia de seguridad
spanner.databases.get
spanner.databases.getDdl
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.instances.get Seleccionar una instancia de la lista de instancias para visualizar la página Detalles de la instancia
spanner.backups.update Actualizar una copia de seguridad
spanner.backupSchedules.update Actualiza una programación de copia de seguridad
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Visualizar datos en la pestaña Datos de la página Detalles de la base de datos
Crear y ejecutar una consulta
spanner.backups.list
spanner.backups.get
Visualiza la página Copia de seguridad/restablecimientos
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
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
spanner.backupOperations.list Visualiza la lista de operaciones de copia de seguridad
spanner.databases.list Visualizar la lista de bases de datos en la página Detalles de la instancia
resourcemanager.projects.get
spanner.instances.list
Ver la lista de instancias en la página Instancias
spanner.databaseOperations.list Visualiza la lista de operaciones de restablecimiento
spanner.databases.getIamPolicy Visualizar la lista en la pestaña Permisos de la página Detalles de la base de datos
spanner.instances.getIamPolicy Ver la lista en la pestaña Permisos de la página Instancias
1 Es obligatorio si creas una copia de seguridad desde la página 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 Spanner

Puedes obtener, configurar y probar las políticas de IAM con las APIs de REST o RPC en los recursos de copia de seguridad, instancia y base de datos de 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?