Identity and Access Management (IAM) te permite controlar el acceso de los usuarios y los 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 de una base de datos específica en una instancia específica de tu proyecto, pero que no pueda crear, modificar ni borrar ninguna instancia 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 instancia o base de datos de Spanner de forma individual.
En este documento, se describen los permisos de IAM relevantes para Spanner y los roles de IAM que otorgan esos permisos. Consulta la guía para desarrolladores de IAM a fin de obtener una descripción detallada de IAM y sus funciones. En particular, lee la sección Administra políticas de IAM.
Permisos
Los permisos permiten 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 sentencia SELECT de SQL 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 |
Borrar una configuración de 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 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 de REST y RPC.
| Nombre del permiso de la operación de configuración de la instancia | Descripción |
|---|---|
spanner.instanceConfigOperations.cancel |
Cancela 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 |
Borrar 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 |
Borrar una partición de instancia |
spanner.instancePartitions.get |
Obtén la configuración de una partición de instancia específica. |
spanner.instancePartitions.list |
Enumera las particiones de instancias. |
spanner.instancePartitions.update |
Actualizar 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 la operación de partición de instancia | 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 |
Obtiene una operación de partición de instancia específica. |
spanner.instancePartitionOperations.list |
Enumera 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 |
Inicia o revierte una transacción de lectura y escritura en una base de datos de Spanner. |
spanner.databases.beginPartitionedDmlTransaction |
Ejecuta una sentencia de lenguaje de manipulación de datos (DML) particionada de instancia. Para obtener más información sobre las consultas particionadas de instancias, consulta Lee datos en paralelo. |
spanner.databases.beginReadOnlyTransaction |
Inicia 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 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 |
Obtén 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 de instancias. |
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 base de datos de Spanner. Para obtener más información, consulta las referencias de la base de datos para las APIs de REST y RPC.
| Nombre del permiso del rol de la base de datos | Descripción |
|---|---|
spanner.databaseRoles.list |
Enumera los roles de la base 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 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 copia de seguridad. También requiere spanner.databases.createBackup en la base de datos de origen. |
spanner.backupSchedules.delete |
Borra una programación de copia de seguridad. |
spanner.backupSchedules.get |
Obtén una programación de copias 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 |
Roles predefinidos
Un rol predefinido es un paquete de uno o más permisos. Por
ejemplo, el rol predefinido roles/spanner.databaseUser contiene los
permisos spanner.databases.read y spanner.databases.write. Existen
dos tipos de roles predefinidos para Spanner:
- Roles 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 muestra el control de acceso con los roles predefinidos de IAM, incluida una lista de los permisos asociados a cada rol:
| Role | Permissions |
|---|---|
Cloud Spanner Admin( Has complete access to all Spanner resources in a Google Cloud project. A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Editor( Editor role for Cloud Spanner |
|
Cloud Spanner Viewer( A principal with this role can:
For example, you can combine this role with the 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:
|
|
Cloud Spanner Backup Admin( A principal with this role can:
This role cannot restore a database from a backup. Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Backup Writer( 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:
|
|
Cloud Spanner Database Admin( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Database Reader with DataBoost( 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:
|
|
Cloud Spanner Database Role User( 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:
|
|
Cloud Spanner Database User( A principal with this role can:
Lowest-level resources where you can grant this role:
|
|
Cloud Spanner Fine-grained Access User( 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:
|
|
Cloud Spanner Database Graph Intelligence features user( Access to Graph Intelligence features. |
|
Cloud Spanner Restore Admin( 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:
|
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Cloud Spanner API Service Agent( Cloud Spanner API Service Agent |
|
Funciones básicas
Las funciones básicas son funciones a nivel de proyecto anteriores a IAM. Consulta Roles básicos para obtener más detalles.
Aunque 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 se aplican solo 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 los roles predefinidos de Spanner no satisfacen tus necesidades empresariales, puedes definir tus propios roles personalizados con los permisos que especifiques.
Antes de crear un rol personalizado, debes identificar las tareas que necesitas realizar. Luego, puedes identificar los permisos que se requieren 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.createspanner.databases.createBackup |
| Lee datos | spanner.databases.selectspanner.sessions.createspanner.sessions.delete |
| Restablece una base de datos | spanner.backups.restoreDatabasespanner.databases.create |
| Insertar, actualizar o borrar datos | spanner.databases.beginOrRollbackReadWriteTransactionspanner.sessions.createspanner.sessions.deletespanner.databases.write |
Roles personalizados para las tareas de la consola de Google Cloud
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 recopila los permisos de ese flujo de trabajo. Por ejemplo, para ver los datos de una tabla, seguirías 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.getspanner.databases.getDdlspanner.databases.listspanner.databases.selectspanner.instances.getspanner.instances.listspanner.sessions.createspanner.sessions.delete
En la siguiente tabla, se enumeran los permisos necesarios para realizar 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.createspanner.databases.createBackupspanner.databases.list1spanner.backupOperations.list1 |
Crear una copia de seguridad |
spanner.backupSchedules.createspanner.databases.createBackup |
Crea una programación de copia de seguridad |
spanner.databases.create |
Crea una base de datos |
spanner.instancePartitions.listspanner.instancePartitionOperations.getspanner.instancePartitions.create |
Crea una partición de instancia |
spanner.databaseOperations.getspanner.databaseOperations.listspanner.databases.updateDdl |
Crea una tabla Actualiza el esquema de una tabla |
spanner.instanceConfigs.listspanner.instanceOperations.getspanner.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.getspanner.instancePartitions.update |
Modifica una partición de instancia |
spanner.instanceOperations.getspanner.instances.update |
Modificar una instancia |
spanner.databases.beginOrRollbackReadWriteTransactionspanner.databases.selectspanner.databases.writespanner.sessions.createspanner.sessions.delete |
Modificar datos en una tabla |
spanner.instanceConfigs.listspanner.instances.getspanner.backups.getspanner.backups.restoreDatabasespanner.instances.listspanner.databases.create |
Restablece una base de datos a partir de una copia de seguridad |
spanner.databases.getspanner.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.selectspanner.sessions.createspanner.sessions.delete |
Visualiza datos en la pestaña Datos de la página de detalles de la base de datos Crea y ejecuta una consulta |
spanner.backups.listspanner.backups.get |
Visualiza la página Copia de seguridad/Restablecimiento |
monitoring.metricDescriptors.getmonitoring.metricDescriptors.listmonitoring.timeSeries.listspanner.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.getspanner.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 |
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 instancia, base de datos y copia de seguridad 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?
- Obtén más información sobre IAM.
- Aprende a aplicar roles de IAM para una base de datos, instancia o proyecto de Google Cloud Spanner.
- Controlar el acceso a los recursos de Google Cloud , incluido Spanner, desde Internet.