La administración de identidades y accesos (IAM) te permite controlar el acceso de usuarios y grupos a los recursos de Spanner en el 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 de 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 que los usuarios realicen 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.list |
Enumera las operaciones de configuración de instancias. |
spanner.instanceConfigOperations.get |
Obtén una operación de configuración de instancia específica. |
spanner.instanceConfigOperations.cancel |
Cancelar una operación de configuración de instancia |
spanner.instanceConfigOperations.delete |
Borra una operación de configuración de instancia. |
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.list |
Crear una lista de instancias |
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.update |
Actualizar una instancia |
spanner.instances.setIamPolicy |
Establecer la política de IAM de una instancia |
spanner.instances.delete |
Borrar 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.list |
Crear una lista de las operaciones de instancias |
spanner.instanceOperations.get |
Obtener una operación de instancia específica |
spanner.instanceOperations.cancel |
Cancelar una operación de instancia |
spanner.instanceOperations.delete |
Borrar una operación de instancia |
Particiones
Los siguientes permisos se aplican a las particiones de Spanner. Para obtener más información, consulta las referencias de particiones de las APIs de REST y RPC.
Nombre del permiso de instancias | Descripción |
---|---|
spanner.instancePartitions.create |
Crea una partición. |
spanner.instancePartitions.get |
Obtén la configuración de una partición específica. |
spanner.instancePartitions.list |
Muestra una lista de las particiones. |
spanner.instancePartitions.update |
Actualiza una partición. |
spanner.instancePartitions.delete |
Borrar una partición |
Operaciones de partición
Los siguientes permisos se aplican a las operaciones de partición de Spanner. Para obtener más información, consulta las referencias de partición de instancias para las APIs de RPC y REST.
Nombre del permiso de operación de partición de instancias | Descripción |
---|---|
spanner.instancePartitionOperations.list |
Muestra una lista de las operaciones de partición. |
spanner.instancePartitionOperations.get |
Obtén una operación de partición específica. |
spanner.instancePartitionOperations.cancel |
Cancela una operación de partición. |
spanner.instancePartitionOperations.delete |
Borra una operación de partición. |
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.beginPartitionedDmlTransaction |
Ejecutar una declaración particionada de lenguaje de manipulación de datos (DML) Para obtener más información sobre las consultas particionadas, consulta Lee datos en paralelo. |
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.list |
Crear una lista de bases 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.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.setIamPolicy |
Establecer la política de IAM de una base de datos |
spanner.databases.beginReadOnlyTransaction |
Iniciar una transacción de solo lectura en una base de datos de Spanner |
spanner.databases.beginOrRollbackReadWriteTransaction |
Iniciar o revertir una transacción de lectura y escritura en una base de datos de Spanner |
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.write |
Escribir en una base de datos |
spanner.databases.drop |
Descartar una base de datos |
spanner.databases.useRoleBasedAccess |
Usa el control de acceso detallado. |
spanner.databases.useDataBoost |
Usa los recursos de procesamiento de Spanner Data Boost para procesar consultas particionadas. |
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.list |
Genera una lista de bases de datos y restable las operaciones de base de datos. |
spanner.databaseOperations.get |
Obtener una operación de base de datos específica |
spanner.databaseOperations.cancel |
Cancelar una operación 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.get |
Obtener una copia de seguridad. |
spanner.backups.update |
Actualizar una copia de seguridad. |
spanner.backups.delete |
Borra 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.getIamPolicy |
Obtener la política de IAM de una copia de seguridad |
spanner.backups.setIamPolicy |
Establecer la política de IAM de 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.list |
Enumerar las operaciones de copia de seguridad. |
spanner.backupOperations.get |
Obtener una operación de copia de seguridad específica. |
spanner.backupOperations.cancel |
Cancela una operación 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 un programa de copias de seguridad. También requiere spanner.databases.createBackup en la base de datos de origen. |
spanner.backupSchedules.get |
Obtén una programación de copia de seguridad. |
spanner.backupSchedules.update |
Actualiza una programación de copia de seguridad. |
spanner.backupSchedules.delete |
Borrar una programación de copia de seguridad |
spanner.backupSchedules.list |
Enumera las programaciones 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 de REST y RPC.
Nombre del permiso de sesiones | Descripción |
---|---|
spanner.sessions.create |
Crear una sesión |
spanner.sessions.get |
Obtener una sesión |
spanner.sessions.delete |
Borrar 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 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/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. |
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. |
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 una función personalizada, debes identificar las tareas que necesitas realizar. Puedes identificar los permisos necesarios para cada tarea y agregarlos a la función personalizada.
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 |
---|---|
Leer datos |
spanner.databases.select
|
Insertar, actualizar o borrar datos |
spanner.databases.beginOrRollbackReadWriteTransaction
|
Crea una copia de seguridad |
spanner.backups.create
|
Restablece una base de datos |
spanner.databases.create
|
Roles personalizados para las tareas de Google Cloud console
Para identificar la lista de permisos que necesitas para una tarea determinada en la consola de Google Cloud, determina el flujo de trabajo de esa tarea y compila los permisos para ese flujo de trabajo. Por ejemplo, para visualizar 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 de Google Cloud.
Acción | Permisos |
---|---|
Ver la lista de instancias en la página Instancias |
|
Ver la lista en la pestaña Permisos de la página Instancias |
|
Agregar principales en la pestaña Permisos de la página Instancias |
|
Seleccionar una instancia de la lista de instancias para visualizar la página Detalles de la instancia |
|
Crear una instancia |
|
Borrar una instancia |
|
Modificar una instancia |
|
Cómo crear una partición |
|
Borra una partición |
|
Cómo modificar una partición |
|
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 |
|
Visualizar la lista de bases de datos en la página Detalles de la instancia |
|
Visualizar la lista en la pestaña Permisos de la página Detalles de la base de datos |
|
Agregar principales en la pestaña Permisos de la página Detalles de la base de datos |
|
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 |
|
Crear una base de datos |
|
Borrar una base de datos |
|
Crear una tabla Actualizar un esquema de tabla |
|
Visualizar datos en la pestaña Datos de la página Detalles de la base de datos Crear y ejecutar una consulta |
|
Modificar datos en una tabla |
|
Visualiza la página Copia de seguridad/restablecimientos |
|
Visualiza la lista de operaciones de copia de seguridad |
|
Visualiza la lista de operaciones de restablecimiento |
|
Crea una copia de seguridad |
|
Restablecer una base de datos a partir de una copia de seguridad |
|
Actualizar una copia de seguridad |
|
Borrar una copia de seguridad |
|
Crea un programa de copia de seguridad |
|
Actualiza una programación de copia de seguridad |
|
Borra una programación de copia de seguridad |
|
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 proyecto de Spanner o de Google Cloud.
- Obtén información para controlar el acceso a los recursos de Google Cloud , incluido Spanner, desde Internet.