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 |
---|---|
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:
|
|
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.list 1spanner.backupOperations.list 1 |
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. |
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
- Más información sobre la gestión de identidades y accesos
- Consulta cómo aplicar roles de gestión de identidades y accesos a una base de datos, una instancia o un proyecto de Spanner Google Cloud .
- Consulta cómo controlar el acceso a recursos de Google Cloud , incluido Spanner, desde Internet.