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. Usando el control de acceso con IAM te permite otorgar un permiso a un usuario o grupo sin tener que modificar cada instancia de Spanner o el permiso de la base de datos individualmente.
Este documento se enfoca en los permisos de IAM relevantes para Spanner y las funciones de IAM que otorgan esos permisos Para obtener una descripción detallada de IAM y sus funciones, consulta la Guía para desarrolladores sobre la administración de identidades y accesos. 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 Spanner
de Google Cloud. Por ejemplo, el permiso spanner.databases.read
le permite a un usuario
leer 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 selección de SQL en un
en la 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 instancia de Spanner parámetros de configuración. Para obtener más información, consulta las referencias de configuración de instancias para REST y RPC APIs
Nombre del permiso de configuración de instancias | Descripción |
---|---|
spanner.instanceConfigs.create |
Crear 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 |
Actualizar una configuración de instancia personalizada |
Operaciones de configuración de instancias
Los siguientes permisos se aplican a la configuración de instancias de Spanner las operaciones. Para obtener más información, consulta las referencias de instancias de REST y RPC APIs
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 instancias específica. |
spanner.instanceConfigOperations.cancel |
Cancela una operación de configuración de instancia. |
spanner.instanceConfigOperations.delete |
Borrar una operación de configuración de instancias |
Instancias
Los siguientes permisos se aplican a las instancias de Spanner. Para ver más consulta las referencias de instancias de REST y RPC APIs
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 REST y RPC APIs
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
Se aplican los siguientes permisos a las particiones de Spanner. Para ver más consulta las referencias de particiones de REST y RPC APIs
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 |
Enumera 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 a particiones de instancias para APIs de REST y RPC.
Nombre del permiso de operación de partición de instancias | Descripción |
---|---|
spanner.instancePartitionOperations.list |
Enumera 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 ver más consulta las referencias de bases de datos de REST y RPC APIs
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 |
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 |
Inicia 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 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 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 específico de base de datos. |
Operaciones de bases 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 bases de datos de REST. y RPC APIs
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 ver más consulta las referencias de copias de seguridad de REST y RPC APIs
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 Para obtener más información, consulta las referencias de bases de datos de REST. y las APIs de 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. 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
Existen 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 enumeran los controles de acceso con roles predefinidos de IAM, que incluyen un 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. |
|
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 los siguientes roles básicos, deberías usar uno de los roles predefinidos que se mostraron antes siempre que sea posible. Roles básicos incluir permisos amplios que se apliquen a todos tus recursos de Google Cloud en los roles predefinidos de Spanner incluyen permisos que se aplican solo 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 los roles predefinidos de Spanner no resuelven el problema, requisitos empresariales, puedes definir tus propios roles personalizados con 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, puedes debes agregar 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
|
Funciones personalizadas para las tareas de Google Cloud Console
Para identificar la lista de permisos que necesitas para una tarea determinada en la con la consola de Google Cloud, determinas el flujo de trabajo para esa tarea y compilas los permisos para ese flujo de trabajo. Por ejemplo, para ver los datos en un 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 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 |
|
Crea una partición |
|
Borra una partición |
|
Modifica 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 |
|
Cómo ver la página de Copia 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 APIs de REST o RPC en 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 para aplicar roles de IAM a una base de datos, una instancia o un proyecto de Spanner o de Google Cloud.
- Aprende a controlar el acceso a los recursos de Google Cloud, lo que incluye Spanner, desde Internet.