Información general sobre IAM

Gestió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 de Spanner y base de datos de Spanner. Por ejemplo, puedes especificar que un usuario tenga control total sobre una base de datos concreta de una instancia específica de tu proyecto, pero que no pueda crear, modificar ni eliminar ninguna instancia de tu proyecto. El control de acceso con IAM te permite conceder un permiso a un usuario o grupo sin tener que modificar cada permiso de instancia o base de datos de Spanner individualmente.

Este documento se centra en los permisos de gestión de identidades y accesos relevantes para Spanner y en los roles de gestión de identidades y accesos que conceden esos permisos. Para obtener una descripción detallada de IAM y de sus características, consulta la guía para desarrolladores Gestión de identidades y accesos. En particular, consulta la sección Gestionar políticas de gestión de identidades y accesos.

Permisos

Los permisos permiten a los usuarios realizar acciones específicas en recursos de Spanner. Por ejemplo, el permiso spanner.databases.read permite a un usuario leer datos de una base de datos mediante la API de lectura de Spanner, mientras que spanner.databases.select permite a un usuario ejecutar una instrucción SELECT de SQL en una base de datos. No se conceden permisos directamente a los usuarios, sino que se les asignan roles predefinidos o roles personalizados, que incluyen uno o varios permisos.

En las siguientes tablas se indican los permisos de gestión de identidades y accesos que están asociados con Spanner.

Configuraciones 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 de las APIs REST y RPC.

Nombre del permiso de configuración de instancia Descripción
spanner.instanceConfigs.create Crea una configuración de instancia personalizada.
spanner.instanceConfigs.delete Elimina una configuración de instancia personalizada.
spanner.instanceConfigs.get Obtiene una configuración de instancia.
spanner.instanceConfigs.list Muestra el conjunto de configuraciones de instancia.
spanner.instanceConfigs.update Actualiza una configuración de 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 REST y RPC.

Nombre del permiso de operación de configuración de instancia Descripción
spanner.instanceConfigOperations.cancel Cancela una operación de configuración de instancia.
spanner.instanceConfigOperations.delete Elimina una operación de configuración de instancia.
spanner.instanceConfigOperations.get Obtener una operación de configuración de instancia.
spanner.instanceConfigOperations.list Muestra 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 REST y RPC.

Nombre del permiso de instancia Descripción
spanner.instances.create Crea una instancia.
spanner.instances.delete Elimina una instancia.
spanner.instances.get Obtiene la configuración de una instancia específica.
spanner.instances.getIamPolicy Obtiene la política de IAM de una instancia.
spanner.instances.list Muestra las instancias.
spanner.instances.setIamPolicy Establece la política de IAM de una instancia.
spanner.instances.update Actualiza 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 REST y RPC.

Nombre del permiso de operación de instancia Descripción
spanner.instanceOperations.cancel Cancela la operación de una instancia.
spanner.instanceOperations.delete Elimina la operación de una instancia.
spanner.instanceOperations.get Obtiene la operación de una instancia específica.
spanner.instanceOperations.list Muestra operaciones de instancia.

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 particiones de instancias de las APIs REST y RPC.

Nombre del permiso de instancia Descripción
spanner.instancePartitions.create Crea una partición de instancia.
spanner.instancePartitions.delete Eliminar una partición de instancia.
spanner.instancePartitions.get Obtiene la configuración de una partición de instancia específica.
spanner.instancePartitions.list Lista las particiones de una 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 particiones de instancias de las APIs REST y RPC.

Nombre del permiso de operación de partición de instancia Descripción
spanner.instancePartitionOperations.cancel Cancela una operación de partición de instancia.
spanner.instancePartitionOperations.delete Elimina una operación de partición de instancia.
spanner.instancePartitionOperations.get Obtiene una operación de partición de instancia específica.
spanner.instancePartitionOperations.list Muestra las operaciones de partición de la instancia.

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 REST y RPC.

Nombre del permiso de la base Descripción
spanner.databases.adapt Permite que la API del adaptador de Spanner interactúe directamente con Spanner.
spanner.databases.beginOrRollbackReadWriteTransaction Comenzar o restaurar una transacción de lectura y escritura en una base de datos de Spanner.
spanner.databases.beginPartitionedDmlTransaction Ejecuta una instrucción del lenguaje de manipulación de datos (DML) particionada por instancia. Para obtener más información sobre las consultas particionadas por instancia, consulta Leer datos en paralelo.
spanner.databases.beginReadOnlyTransaction Comienza una transacción de solo lectura en una base de datos de Spanner.
spanner.databases.create Crear una base de datos.
spanner.databases.createBackup Crea una copia de seguridad de la base de datos. También requiere que spanner.backups.create cree el recurso de copia de seguridad.
spanner.databases.drop Elimina una base de datos.
spanner.databases.get Obtiene los metadatos de una base de datos.
spanner.databases.getDdl Obtiene el esquema de una base de datos.
spanner.databases.getIamPolicy Obtener la política de gestión de identidades y accesos de una base de datos.
spanner.databases.list Muestra bases de datos.
spanner.databases.read Lee desde una base de datos a través de la API de lectura.
spanner.databases.select Ejecuta una instrucción de selección de SQL en una base de datos.
spanner.databases.setIamPolicy Definir la política de gestión de identidades y accesos de una base de datos.
spanner.databases.update Actualiza los metadatos de una base de datos.
spanner.databases.updateDdl Actualiza el esquema de una base de datos.
spanner.databases.useDataBoost Usa los recursos de computación de Spanner Data Boost para procesar consultas particionadas de instancias.
spanner.databases.useRoleBasedAccess Usa el control de acceso pormenorizado.
spanner.databases.write Escribe en una base de datos.

Roles de base de datos

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

Nombre del permiso del rol de base de datos Descripción
spanner.databaseRoles.list Muestra los roles de la base de datos.
spanner.databaseRoles.use Usar un rol de base de datos específico.

Operaciones de base de datos

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

Nombre del permiso de la operación de base de datos Descripción
spanner.databaseOperations.cancel Cancela la operación de una base de datos.
spanner.databaseOperations.get Obtiene la operación de una base de datos específica.
spanner.databaseOperations.list Mostrar operaciones de base de datos y de restauración de bases 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 copias de seguridad de las APIs REST y RPC.

Nombre del permiso de copia de seguridad Descripción
spanner.backups.create Crear copia de seguridad También requiere spanner.databases.createBackup en la base de datos de origen.
spanner.backups.delete Eliminar una copia de seguridad.
spanner.backups.get Obtener una copia de seguridad.
spanner.backups.getIamPolicy Obtiene la política de gestión de identidades y accesos de una copia de seguridad.
spanner.backups.list Muestra las copias de seguridad.
spanner.backups.restoreDatabase Restaurar la base de datos a partir de una copia de seguridad. También requiere spanner.databases.create para crear la base de datos restaurada en la instancia de destino.
spanner.backups.setIamPolicy Defina la política de gestión de identidades y accesos 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 REST y RPC.

Nombre del permiso de operación de copia de seguridad Descripción
spanner.backupOperations.cancel Cancela una operación de copia de seguridad.
spanner.backupOperations.get Obtiene una operación de copia de seguridad específica.
spanner.backupOperations.list Muestra las operaciones de copia de seguridad.

Frecuencias de las 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 REST y RPC.

Nombre del permiso de la programación de la copia 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 Eliminar una programación de copias de seguridad.
spanner.backupSchedules.get Obtener una programación de copias de seguridad.
spanner.backupSchedules.list Muestra las programaciones de copias de seguridad.
spanner.backupSchedules.update Actualizar una programación de copias 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 REST y RPC.

Nombre del permiso de sesión Descripción
spanner.sessions.create Crea una sesión.
spanner.sessions.delete Elimina una sesión.
spanner.sessions.get Obtiene una sesión.
spanner.sessions.list Muestra sesiones.

Funciones predefinidas

Una función predefinida es un conjunto de uno o más permisos. Por ejemplo, el rol predefinido roles/spanner.databaseUser contiene los permisos spanner.databases.read y spanner.databases.write. Hay dos tipos de roles predefinidos para Spanner:

  • Roles de persona: se conceden a usuarios o grupos, lo que les permite realizar acciones en los recursos de tu proyecto.
  • Funciones de la máquina: otorgado a cuentas de servicio, que permite que las máquinas se ejecuten como esas cuentas de servicio para realizar acciones en los recursos del proyecto.

En la siguiente tabla se muestra el control de acceso con roles predefinidos de gestión de identidades y accesos, así como una lista de los permisos asociados a 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

compute.disks.create

compute.disks.createTagBinding

compute.disks.use

compute.instances.create

compute.instances.createTagBinding

compute.instances.delete

compute.instances.get

compute.instances.setLabels

compute.instances.setMetadata

compute.instances.setServiceAccount

compute.networks.create

compute.networks.use

compute.networks.useExternalIp

compute.subnetworks.create

compute.subnetworks.use

compute.subnetworks.useExternalIp

logging.logEntries.create

spanner.databases.beginReadOnlyTransaction

spanner.databases.partitionQuery

spanner.databases.select

spanner.databases.useDataBoost

spanner.sessions.create

storage.buckets.create

storage.buckets.get

storage.buckets.list

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.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

Roles básicos

Los roles básicos son roles a nivel de proyecto anteriores a la gestión de identidades y accesos. Consulta más información sobre los roles básicos.

Aunque Spanner admite los siguientes roles básicos, te recomendamos que uses uno de los roles predefinidos que se han mostrado anteriormente siempre que sea posible. Los roles básicos incluyen permisos generales que se aplican a todos tus recursos de Google Cloud . Por el contrario, los roles predefinidos de Spanner incluyen permisos específicos que solo se aplican a Spanner.

Rol básico Descripción
roles/editor Puede hacer todo lo que puede hacer un roles/viewer. También puede crear instancias y bases de datos, y escribir datos en una base de datos.
roles/owner Puede hacer todo lo que puede hacer un roles/editor. También puede modificar el acceso a bases de datos e instancias.
roles/viewer Puede mostrar y obtener los metadatos de esquemas e instancias. También puede leer y consultar usando SQL en una base de datos.

Roles personalizados

Si los roles predefinidos de Spanner no se ajustan a tus requisitos empresariales, puedes definir tus propios roles personalizados con los permisos que especifiques.

Antes de crear un rol personalizado, debes identificar las tareas que necesitas llevar a cabo. Después, puedes identificar los permisos necesarios para cada tarea y añadirlos al rol personalizado.

Roles personalizados para tareas de cuentas de servicio

Para la mayoría de las tareas, los permisos que necesitas añadir a tu función personalizada son obvios. Por ejemplo, si quieres que tu cuenta de servicio pueda crear una base de datos, añade el permiso spanner.databases.create a tu rol personalizado.

Sin embargo, cuando lees o escribes datos en una tabla de Spanner, debes añadir varios permisos diferentes a tu rol personalizado. La siguiente tabla muestra los permisos necesarios para leer y escribir datos.

Tarea de cuenta de servicio Permisos obligatorios
Crear una copia de seguridad spanner.backups.create
spanner.databases.createBackup
Leer datos spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Restaurar una base de datos spanner.backups.restoreDatabase
spanner.databases.create
Insertar, actualizar o eliminar datos spanner.databases.beginOrRollbackReadWriteTransaction
spanner.sessions.create
spanner.sessions.delete
spanner.databases.write

Roles personalizados para las tareas de la consola Google Cloud

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

Paso Permisos
1. Acceder al proyecto resourcemanager.projects.get
2. Ver la lista de instancias spanner.instances.list
3. Selecciona una instancia spanner.instances.get
4. Ver la lista de bases de datos spanner.databases.list
5. Seleccionar una base de datos y una tabla spanner.databases.getDdl
6. Ver 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 realizar acciones en la consolaGoogle Cloud .

Permisos Acción
spanner.databases.setIamPolicy Añadir principales en la pestaña Permisos de la página Detalles de la base de datos
spanner.instances.setIamPolicy Añadir principales en la pestaña Permisos de la página Instancia
spanner.backups.create
spanner.databases.createBackup
spanner.databases.list1
spanner.backupOperations.list1
Crear una copia de seguridad
spanner.backupSchedules.create
spanner.databases.createBackup
Crear una programación de copias de seguridad
spanner.databases.create Crear una base de datos
spanner.instancePartitions.list
spanner.instancePartitionOperations.get
spanner.instancePartitions.create
Crear una partición de instancia
spanner.databaseOperations.get
spanner.databaseOperations.list
spanner.databases.updateDdl
Crear una tabla
Actualizar el esquema de una tabla
spanner.instanceConfigs.list
spanner.instanceOperations.get
spanner.instances.create
Crear una instancia
spanner.backups.delete Eliminar una copia de seguridad
spanner.backupSchedules.delete Eliminar una programación de copias de seguridad
spanner.databases.drop Eliminar una base de datos
spanner.instancePartitions.delete Eliminar una partición de instancia
spanner.instances.delete Eliminar una instancia
spanner.instancePartitionOperations.get
spanner.instancePartitions.update
Modificar 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
Restaurar una base de datos a partir de una copia de seguridad
spanner.databases.get
spanner.databases.getDdl
Selecciona una base de datos de la lista y consulta el esquema en la página de detalles de la base de datos.
spanner.instances.get Selecciona una instancia de la lista para ver la página Detalles de la instancia.
spanner.backups.update Actualizar una copia de seguridad
spanner.backupSchedules.update Actualizar una programación de copias de seguridad
spanner.databases.select
spanner.sessions.create
spanner.sessions.delete
Ver 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
Ver la página Copia de seguridad/Restaurar
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.timeSeries.list
spanner.instances.get
Ver los gráficos de la pestaña Monitor de la página Detalles de la instancia o Detalles de la base de datos
spanner.backupOperations.list Ver la lista de operaciones de copia de seguridad
spanner.databases.list Ver 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 Ver la lista de operaciones de restauración
spanner.databases.getIamPolicy Consulta la lista en la pestaña Permisos de la página Detalles de la base de datos.
spanner.instances.getIamPolicy Consulta la lista en la pestaña Permisos de la página Instancia.
1 Obligatorio si vas a crear una copia de seguridad desde la página Copia de seguridad o restauración a nivel de instancia en lugar de a nivel de base de datos.

Gestión de políticas de gestión de identidades y accesos de Spanner

Puede obtener, definir y probar políticas de gestión de identidades y accesos mediante las APIs REST o RPC en recursos de instancias, bases de datos y copias de seguridad de Spanner.

Instancias

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

Bases de datos

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

Copias de seguridad

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

Siguientes pasos