Control de acceso de Bigtable con gestión de identidades y accesos

En esta página se describen las opciones de control de acceso de Bigtable.

Información general

Bigtable usa Gestión de Identidades y Accesos (IAM) para el control de acceso. Puedes definir políticas de gestión de identidades y accesos en los recursos para controlar quién tiene acceso a qué recursos.

Los recursos de Bigtable se organizan en una jerarquía. Un proyecto es el elemento principal de una instancia de Bigtable, que a su vez es el elemento principal de sus clústeres y tablas.Google Cloud Una tabla es el elemento superior de sus vistas autorizadas, mientras que un clúster es el elemento superior de sus copias de seguridad. Puedes configurar el control de acceso en cada nivel.

Si tiene permisos en un nivel, automáticamente tendrá permisos en los niveles inferiores. Por ejemplo, si tienes acceso a nivel de proyecto, tendrás acceso a las instancias, los clústeres, las tablas, las vistas autorizadas y las vistas materializadas continuas de ese proyecto. Si se te concede acceso a una vista autorizada o a una vista materializada continua, no tendrás acceso automáticamente a los recursos de nivel superior que sean elementos principales de la vista autorizada o de la vista materializada continua, como la tabla y la instancia. Este comportamiento se denomina herencia de políticas.

Para obtener más información sobre la jerarquía de IAM, consulta el artículo sobre la herencia de políticas de IAM.

A continuación, te mostramos algunos ejemplos de cómo usar el control de acceso a nivel de proyecto:

  • Permite que un usuario lea cualquier tabla del proyecto, pero no que escriba en ella.
  • Permite que un usuario lea y escriba en cualquier tabla del proyecto, pero no que gestione instancias.
  • Permite a un usuario leer y escribir en cualquier tabla del proyecto, así como gestionar instancias.

Estos son algunos ejemplos de cómo usar el control de acceso a nivel de instancia:

  • Permite que un usuario lea cualquier tabla de una sola instancia de un proyecto que tenga varias instancias.
  • Permite que un usuario gestione solo una instancia en un proyecto que tenga varias instancias.

Estos son algunos ejemplos de cómo usar el control de acceso a nivel de tabla:

  • Permite que un usuario escriba en una tabla, pero no que lea de ella.
  • Permite que un usuario lea una tabla, pero no que escriba en ella.

Estos son algunos ejemplos de cómo usar el control de acceso a nivel de copia de seguridad:

  • Impedir que un usuario elimine una copia de seguridad.
  • Impedir que un usuario restaure datos a partir de la copia de seguridad.

Estos son algunos ejemplos de cómo usar el control de acceso a nivel de vista autorizada:

  • Permite que un usuario lea una vista autorizada, pero no que la modifique.
  • Permite que un usuario vea los datos de una sola de las varias vistas autorizadas de una tabla.

Estos son algunos ejemplos de uso del control de acceso a nivel de vista materializada continua:

  • Permite que un usuario lea una vista materializada continua, pero no que modifique la tabla subyacente.

Para obtener una descripción detallada de IAM y de sus características, consulta la guía para desarrolladores de IAM. En concreto, consulta Conceder, cambiar y revocar el acceso.

En Bigtable, no puedes conceder acceso a los siguientes tipos de principales:

Para ver las listas de permisos y roles que admite Bigtable, consulta las siguientes secciones.

Habilitar la API Bigtable

Para ver y asignar roles de IAM de Bigtable, debes habilitar la API Bigtable en tu proyecto. No podrás ver los roles de Bigtable en la consola de Google Cloud hasta que habilites la API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

Permisos

En esta sección se resumen los permisos que admite Bigtable.

Los permisos permiten que los usuarios realicen acciones específicas en recursos de Bigtable. Por ejemplo, los permisos de bigtable.instances.list permiten a los usuarios enumerar todas las instancias de Bigtable de un proyecto. No se conceden permisos a los usuarios directamente, sino que se les asigna un rol predefinido o un rol personalizado, que les concede uno o varios permisos.

En las siguientes tablas se indican los permisos de gestión de identidades y accesos que están asociados con Bigtable:

Nombre del permiso de perfil de aplicación Descripción
bigtable.appProfiles.create Crea un perfil de aplicación de Bigtable.
bigtable.appProfiles.delete Elimina un perfil de aplicación de Bigtable.
bigtable.appProfiles.get Obtiene información sobre un perfil de aplicación de Bigtable.
bigtable.appProfiles.list Lista los perfiles de aplicación de Bigtable de una instancia.
bigtable.appProfiles.update Actualiza la configuración de un perfil de aplicación de Bigtable.
Nombre del permiso de copias de seguridad Descripción
bigtable.backups.create Crea una copia de seguridad de Bigtable.
bigtable.backups.delete Eliminar una copia de seguridad de Bigtable.
bigtable.backups.get Obtiene información sobre una copia de seguridad de Bigtable.
bigtable.backups.getIamPolicy Leer las listas de control de acceso (LCA) de una copia de seguridad. Se devuelven como políticas de gestión de identidades y accesos.
bigtable.backups.list Muestra las copias de seguridad de Bigtable.
bigtable.backups.restore Restaurar a partir de una copia de seguridad de Bigtable.
bigtable.backups.testIamPermissions Obtiene los permisos de la persona que llama en una copia de seguridad específica.
bigtable.backups.read Leer de una copia de seguridad de Bigtable.
bigtable.backups.setIamPolicy Actualiza las LCAs de la copia de seguridad.
bigtable.backups.update Modificar la fecha de vencimiento de una copia de seguridad de Bigtable.
Nombre del permiso del clúster Descripción
bigtable.clusters.create Crea un clúster de Bigtable.
bigtable.clusters.delete Elimina un clúster de Bigtable.
bigtable.clusters.get Obtiene información sobre un clúster de Bigtable.
bigtable.clusters.list Lista los clústeres de Bigtable de una instancia.
bigtable.clusters.update Actualiza la configuración de un clúster de Bigtable.
Nombre del permiso de tablets calientes Descripción
bigtable.hotTablets.list Lista las tablets activas de un clúster.
Nombre del permiso de instancia Descripción
bigtable.instances.create Crea una instancia de Bigtable.
bigtable.instances.createTagBinding Crea una etiqueta.
bigtable.instances.delete Elimina una instancia de Bigtable.
bigtable.instances.deleteTagBinding Eliminar una etiqueta.
bigtable.instances.get Obtener información sobre una instancia de Bigtable.
bigtable.instances.getIamPolicy Leer las listas de control de acceso (LCA) de las instancias. Se devuelven como políticas de gestión de identidades y accesos.
bigtable.instances.list Mostrar las instancias de Bigtable de un proyecto.
bigtable.instances.listEffectiveTagBindings Lista de todas las etiquetas que están en vigor en una instancia.
bigtable.instances.listTagBindings Lista las etiquetas de una instancia.
bigtable.instances.ping Envía solicitudes de priming de canales.
bigtable.instances.executeQuery Envía solicitudes ExecuteQuery y PrepareQuery a una instancia.
bigtable.instances.setIamPolicy Actualiza las LCAs.
bigtable.instances.update Actualiza la configuración de una instancia de Bigtable.
Nombre del permiso de Key Visualizer Descripción
bigtable.keyvisualizer.get Obtiene información de Key Visualizer sobre una tabla, incluidos metadatos sobre patrones de acceso y distribuciones de claves de fila.
bigtable.keyvisualizer.list Lista la información de Key Visualizer disponible de una tabla.
Nombre del permiso de ubicación Descripción
bigtable.locations.list Lista de ubicaciones de Bigtable.
Nombre del permiso de la tabla Descripción
bigtable.tables.checkConsistency Comprueba si una tabla replicada está actualizada.
bigtable.tables.create Crea una tabla.
bigtable.tables.delete Elimina una tabla.
bigtable.tables.generateConsistencyToken Genera un token para comprobar si una tabla replicada está actualizada.
bigtable.tables.get Obtener información sobre una tabla, incluidas las familias de columnas y sus ajustes individuales.
bigtable.tables.getIamPolicy Leer las LCAs de la tabla. Se devuelven como políticas de gestión de identidades y accesos.
bigtable.tables.list Mostrar las tablas de una instancia.
bigtable.tables.mutateRows Modificar las filas de una tabla o truncarla.
bigtable.tables.readRows Leer filas de una tabla. Esto incluye información sobre la tabla, como las familias de columnas y sus ajustes individuales.
bigtable.tables.sampleRowKeys Obtiene una muestra de las claves de las filas que se usan en una tabla.
bigtable.tables.setIamPolicy Actualiza las listas de control de acceso de la tabla.
bigtable.tables.undelete Recuperar una tabla eliminada.
bigtable.tables.update Actualizar la configuración de una tabla, incluidas las familias de columnas y sus ajustes individuales.
Nombre del permiso de ubicación Descripción
bigtable.locations.list Lista de ubicaciones de Bigtable.
Nombre del permiso de vista autorizada Descripción
bigtable.authorizedViews.create Crea una vista autorizada.
bigtable.authorizedViews.delete Elimina una vista autorizada.
bigtable.authorizedViews.get Obtener información sobre una vista autorizada.
bigtable.authorizedViews.getIamPolicy Consulta el control de acceso de una vista autorizada. Se devuelven como políticas de gestión de identidades y accesos.
bigtable.authorizedViews.list Muestra las vistas autorizadas en una tabla.
bigtable.authorizedViews.mutateRows Modificar filas en una vista autorizada.
bigtable.authorizedViews.readRows Leer filas de una vista autorizada.
bigtable.authorizedViews.sampleRowKeys Obtiene una muestra de las claves de las filas que se usan en una vista autorizada.
bigtable.authorizedViews.setIamPolicy Actualiza las políticas de control de acceso de una vista autorizada.
bigtable.authorizedViews.update Actualizar la configuración de una vista autorizada.
Nombre del permiso de vista materializada continua Descripción
bigtable.materializedViews.create Crea una vista materializada continua.
bigtable.materializedViews.delete Elimina una vista materializada continua.
bigtable.materializedViews.get Obtiene información sobre una vista materializada continua.
bigtable.materializedViews.getIamPolicy Ver el control de acceso de una vista materializada continua. Se devuelven como políticas de gestión de identidades y accesos.
bigtable.materializedViews.list Lista las vistas materializadas continuas de una instancia.
bigtable.materializedViews.readRows Lee filas de una vista materializada continua.
bigtable.materializedViews.sampleRowKeys Obtiene una muestra de las claves de fila que se usan en una vista materializada continua.
bigtable.materializedViews.setIamPolicy Actualiza las políticas de control de acceso de una vista materializada continua.
bigtable.materializedViews.update Actualiza los ajustes de una vista materializada continua.

Funciones predefinidas

Cada rol predefinido es un conjunto de uno o varios permisos. Por ejemplo, roles/bigtable.reader proporciona acceso de solo lectura a la información sobre instancias, clústeres, tablas y familias de columnas de Bigtable, así como a los datos contenidos en tus tablas. Asigna roles a usuarios o grupos, lo que les permite realizar acciones en los recursos de tu proyecto.

En la siguiente tabla se enumeran los roles predefinidos de Bigtable, así como los permisos asociados a cada rol:

Role Permissions

(roles/bigtable.admin)

Administers all Bigtable instances within a project, including the data stored within tables. Can create new instances. Intended for project administrators.

Lowest-level resources where you can grant this role:

  • Table

bigtable.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update
  • bigtable.authorizedViews.create
  • bigtable.authorizedViews.createTagBinding
  • bigtable.authorizedViews.delete
  • bigtable.authorizedViews.deleteTagBinding
  • bigtable.authorizedViews.get
  • bigtable.authorizedViews.getIamPolicy
  • bigtable.authorizedViews.list
  • bigtable.authorizedViews.listEffectiveTags
  • bigtable.authorizedViews.listTagBindings
  • bigtable.authorizedViews.mutateRows
  • bigtable.authorizedViews.readRows
  • bigtable.authorizedViews.sampleRowKeys
  • bigtable.authorizedViews.setIamPolicy
  • bigtable.authorizedViews.update
  • bigtable.backups.create
  • bigtable.backups.delete
  • bigtable.backups.get
  • bigtable.backups.getIamPolicy
  • bigtable.backups.list
  • bigtable.backups.read
  • bigtable.backups.restore
  • bigtable.backups.setIamPolicy
  • bigtable.backups.update
  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update
  • bigtable.hotTablets.list
  • bigtable.instances.create
  • bigtable.instances.createTagBinding
  • bigtable.instances.delete
  • bigtable.instances.deleteTagBinding
  • bigtable.instances.executeQuery
  • bigtable.instances.get
  • bigtable.instances.getIamPolicy
  • bigtable.instances.list
  • bigtable.instances.listEffectiveTags
  • bigtable.instances.listTagBindings
  • bigtable.instances.ping
  • bigtable.instances.setIamPolicy
  • bigtable.instances.update
  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list
  • bigtable.locations.list
  • bigtable.logicalViews.create
  • bigtable.logicalViews.delete
  • bigtable.logicalViews.get
  • bigtable.logicalViews.getIamPolicy
  • bigtable.logicalViews.list
  • bigtable.logicalViews.readRows
  • bigtable.logicalViews.setIamPolicy
  • bigtable.logicalViews.update
  • bigtable.materializedViews.create
  • bigtable.materializedViews.delete
  • bigtable.materializedViews.get
  • bigtable.materializedViews.getIamPolicy
  • bigtable.materializedViews.list
  • bigtable.materializedViews.readRows
  • bigtable.materializedViews.sampleRowKeys
  • bigtable.materializedViews.setIamPolicy
  • bigtable.materializedViews.update
  • bigtable.memoryLayers.get
  • bigtable.memoryLayers.list
  • bigtable.memoryLayers.update
  • bigtable.schemaBundles.create
  • bigtable.schemaBundles.delete
  • bigtable.schemaBundles.get
  • bigtable.schemaBundles.getIamPolicy
  • bigtable.schemaBundles.list
  • bigtable.schemaBundles.setIamPolicy
  • bigtable.schemaBundles.update
  • bigtable.tables.checkConsistency
  • bigtable.tables.create
  • bigtable.tables.delete
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.getIamPolicy
  • bigtable.tables.list
  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys
  • bigtable.tables.setIamPolicy
  • bigtable.tables.undelete
  • bigtable.tables.update