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 |
---|---|
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 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 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:
|
|
Cloud Spanner API Service Agent( Cloud Spanner API Service Agent |
|
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:
|
|
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.list 1spanner.backupOperations.list 1 |
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 |
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?
- Obtén más información sobre la administración de identidades y accesos.
- Obtén información para aplicar roles de IAM a una base de datos, una instancia o un Google Cloud proyecto de Spanner.
- Obtén información para controlar el acceso a los recursos de Google Cloud , incluido Spanner, desde Internet.