La administración de identidades y accesos (IAM) te permite controlar el acceso de usuarios y grupos a los recursos de Spanner a nivel del proyecto, de la instancia y de la 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 la 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.
Este documento se centra en los permisos de IAM relevantes para Spanner y las funciones de IAM que otorgan esos permisos. Consulta la guía para desarrolladores de Identity and Access Management para obtener una descripción detallada de IAM y sus características. En particular, consulta la sección sobre cómo administrar las 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 mediante la API de lectura de Spanner, mientras que spanner.databases.select
permite que un usuario ejecute una instrucción de selección 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 la configuración de instancias de Spanner. Si deseas 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 |
Crear una configuración de instancia personalizada |
spanner.instanceConfigs.delete |
Borrar 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 |
Actualizar 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. Si deseas obtener más información, consulta las referencias de instancias para 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 |
Obtener una operación de configuración de instancias específica |
spanner.instanceConfigOperations.cancel |
Cancelar una operación de configuración de instancias |
spanner.instanceConfigOperations.delete |
Borrar una operación de configuración de instancias |
Instancias
Los siguientes permisos se aplican a las instancias de Spanner. Si deseas obtener más información, consulta las referencias de instancias para 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 instancia de Spanner. Si deseas obtener más información, consulta las referencias de instancias para 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 |
Bases de datos
Los siguientes permisos se aplican a las bases de datos de Spanner. Si deseas obtener más información, consulta las referencias de bases de datos para 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) |
spanner.databases.create |
Crear 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 |
Usar 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 base de datos de Spanner. Si deseas obtener más información, consulta las referencias de bases 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 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 bases de datos de Spanner. Si deseas obtener más información, consulta las referencias de bases de datos para 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. Si deseas obtener más información, consulta las referencias sobre copias de seguridad para 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. Si deseas obtener más información, consulta las referencias de bases de datos para 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. |
Sesiones
Los siguientes permisos se aplican a las sesiones de Spanner. Si deseas obtener más información, consulta las referencias de bases de datos para 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 dos tipos de funciones predefinidas 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 muestra el control de acceso con las funciones predefinidas de IAM, incluida una lista de los permisos asociados con cada función:
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 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`. |
|
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. |
|
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.
Aunque Spanner admite las siguientes funciones básicas, debes usar una de las funciones predefinidas que se mostraron antes, siempre que sea posible. Las funciones básicas incluyen permisos amplios que se aplican a todos tus recursos de Google Cloud; en cambio, las funciones predefinidas 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. |
Roles personalizados
Si las funciones predefinidas de Spanner no satisfacen tus requisitos 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 función personalizada. 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
|
Funciones personalizadas para las tareas de Google Cloud Console
A fin de identificar la lista de permisos que necesitas para una tarea determinada en la consola de Google Cloud, determina el flujo de trabajo para 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:
Step | 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 |
|
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 |
|
Cómo ver la página Copias de seguridad/restablecimiento |
|
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 |
|
Administración de políticas de IAM de Spanner
Puedes obtener, configurar y probar políticas de IAM con las API 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 la administración de identidades y accesos.
- Obtén información sobre cómo aplicar roles de IAM para una base de datos, una instancia o un proyecto de Google Cloud de Spanner.
- Obtén información para controlar el acceso a los recursos de Google Cloud, incluido Spanner, desde Internet.