Control de acceso a Bigtable con IAM

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

Descripción general

Bigtable usa Identity and Access Management (IAM) para el control de acceso. Para controlar quién tiene qué acceso a qué recursos, establece políticas de IAM en los recursos.

Los recursos de Bigtable se organizan en una jerarquía. Un proyecto deGoogle Cloud es el elemento superior de una instancia de Bigtable, que es el elemento superior de sus clústeres y tablas. 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 tienes permisos en un nivel, automáticamente tendrás permisos en los niveles inferiores. Por ejemplo, si tienes acceso a nivel del proyecto, también lo tendrás a las instancias, los clústeres, las tablas, las vistas autorizadas y las vistas materializadas continuas de ese proyecto. Si se te otorga 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 recursos 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 la herencia de políticas de IAM.

Estos son algunos ejemplos del uso del control de acceso a nivel del proyecto:

  • Permitir a cualquier usuario leer las tablas del proyecto, pero no escribir en ellas.
  • Permitir a cualquier usuario leer las tablas del proyecto y escribir en ellas, pero no administrar las instancias.
  • Permitir a cualquier usuario leer las tablas del proyecto, escribir en ellas y administrar las instancias.

Estos son algunos ejemplos del uso del control de acceso a nivel de la instancia:

  • Permitir que un usuario lea desde cualquier tabla en una sola instancia de un proyecto de varias instancias
  • Permitir que un usuario administre solo una instancia en un proyecto de varias instancias

Los siguientes son algunos ejemplos del uso del control de acceso a nivel de la tabla:

  • Permitir que un usuario escriba en una tabla, pero que no pueda leerla
  • Permitir que un usuario lea una tabla, pero que no pueda escribir en ella

Los siguientes son algunos ejemplos del uso del control de acceso a nivel de la copia de seguridad:

  • Impedir que un usuario borre una copia de seguridad
  • Impedir que un usuario restablezca la copia de seguridad

Los siguientes son algunos ejemplos del uso del control de acceso a nivel de la vista autorizada:

  • Permite que un usuario lea una vista autorizada, pero no la modifique.
  • Permite que un usuario vea datos de solo una de las múltiples vistas autorizadas de una tabla.

Los siguientes son algunos ejemplos del uso del control de acceso a nivel de la vista materializada continua:

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

Para obtener más información sobre IAM y sus funciones, consulta la guía para desarrolladores de IAM. En particular, consulta Otorga, cambia y revoca el acceso.

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

Para obtener una lista de los permisos y las funciones compatibles con Bigtable, consulta las siguientes secciones.

Habilita la API de Bigtable

Para ver y asignar roles de IAM de Bigtable, debes habilitar la API de Bigtable en tu proyecto. Hasta que habilites la API, los roles de Bigtable no aparecerán en laGoogle Cloud consola.

Roles necesarios para habilitar las APIs

Para habilitar APIs, necesitas el permiso serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.

Habilitar la API

Permisos

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

Los permisos se usan para permitir que los usuarios realicen ciertas acciones en los recursos de Bigtable. Por ejemplo, los permisos bigtable.instances.list permiten que los usuarios enumeren todas las instancias de Bigtable dentro de un proyecto. Los permisos no se otorgan directamente a los usuarios; en cambio, se asigna a cada uno una función predefinida o función personalizada, que otorga uno o más permisos.

En las siguientes tablas, se enumeran los permisos de IAM asociados con Bigtable:

Nombre del permiso del perfil de la aplicación Descripción
bigtable.appProfiles.create Crea un perfil de la aplicación de Bigtable
bigtable.appProfiles.delete Borra un perfil de aplicación de Bigtable
bigtable.appProfiles.get Obtener información sobre un perfil de la aplicación de Bigtable
bigtable.appProfiles.list Enumerar los perfiles de la aplicación de Bigtable de una instancia
bigtable.appProfiles.update Actualizar la configuración de un perfil de la app de Bigtable
Nombre del permiso de las copias de seguridad Descripción
bigtable.backups.create Crea una copia de seguridad de Bigtable
bigtable.backups.delete Borra una copia de seguridad de Bigtable
bigtable.backups.get Obtén información sobre una copia de seguridad de Bigtable
bigtable.backups.getIamPolicy Obtener la política de IAM de una copia de seguridad
bigtable.backups.list Enumera copias de seguridad de Bigtable
bigtable.backups.restore Restablece una copia de seguridad de Bigtable.
bigtable.backups.testIamPermissions Obtén los permisos del emisor en una copia de seguridad especificada.
bigtable.backups.read Lee desde una copia de seguridad de Bigtable
bigtable.backups.setIamPolicy Actualiza las LCA de la copia de seguridad.
bigtable.backups.update Modificar el 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 Borra un clúster de Bigtable
bigtable.clusters.get Obtén información sobre un clúster de Bigtable
bigtable.clusters.list Enumerar los clústeres de Bigtable de una instancia
bigtable.clusters.update Actualizar la configuración de un clúster de Bigtable
Nombre del permiso de tablets sobrecargadas Descripción
bigtable.hotTablets.list Enumera las tablets más populares de un clúster.
Nombre del permiso del nivel en la memoria (versión preliminar) Descripción
bigtable.memoryLayer.get Consulta información sobre un nivel en la memoria de Bigtable.
bigtable.memoryLayer.list Enumera los niveles en memoria de Bigtable.
bigtable.memoryLayer.update Habilita, desactiva o cambia el tamaño del nivel en la memoria de Bigtable.
Nombre del permiso de instancias Descripción
bigtable.instances.create Crear una instancia de Bigtable.
bigtable.instances.createTagBinding Crea una etiqueta.
bigtable.instances.delete Borra una instancia de Bigtable
bigtable.instances.deleteTagBinding Borra una etiqueta.
bigtable.instances.get Obtén información sobre una instancia de Bigtable
bigtable.instances.getIamPolicy Obtener la política de IAM de una instancia
bigtable.instances.list Enumerar las instancias de Bigtable de un proyecto
bigtable.instances.listEffectiveTagBindings Enumera todas las etiquetas vigentes para una instancia.
bigtable.instances.listTagBindings Enumera las etiquetas de una instancia.
bigtable.instances.ping Envía solicitudes de preparación de canales.
bigtable.instances.executeQuery Envía solicitudes ExecuteQuery y PrepareQuery a una instancia.
bigtable.instances.setIamPolicy Actualizar las LCA
bigtable.instances.update Actualizar la configuración de una instancia de Bigtable
Nombre del permiso de Key Visualizer Descripción
bigtable.keyvisualizer.get Obtener información de Key Visualizer acerca de una tabla, incluidos los metadatos sobre los patrones de acceso y las distribuciones de claves de filas.
bigtable.keyvisualizer.list Ver la información disponible de una tabla de Key Visualizer.
Nombre del permiso de ubicación Descripción
bigtable.locations.list Enumera ubicaciones de Bigtable
Nombre del permiso de la tabla Descripción
bigtable.tables.checkConsistency Revisar si una tabla replicada está actualizada
bigtable.tables.create Crear una tabla
bigtable.tables.delete Borrar una tabla
bigtable.tables.generateConsistencyToken Generar un token para revisar si la tabla replicada está actualizada
bigtable.tables.get Obtener información sobre una tabla, incluidas las familias de columnas y su configuración individual
bigtable.tables.getIamPolicy Obtiene la política de IAM de una tabla.
bigtable.tables.list Enumerar las tablas de una instancia
bigtable.tables.mutateRows Modificar las filas de una tabla o truncarla
bigtable.tables.readRows Leer las filas de una tabla Esto incluye información sobre la tabla, como las familias de columnas y su configuración individual.
bigtable.tables.sampleRowKeys Obtener una muestra de las claves de fila que se usan en una tabla
bigtable.tables.setIamPolicy Actualizar las LCA de la tabla
bigtable.tables.undelete Recupera una tabla borrada.
bigtable.tables.update Actualizar la configuración de una tabla, incluidas las familias de columnas y su configuración individual
Nombre del permiso de ubicación Descripción
bigtable.locations.list Enumera ubicaciones de Bigtable
Nombre del permiso de vista autorizada Descripción
bigtable.authorizedViews.create Crea una vista autorizada.
bigtable.authorizedViews.delete Borra una vista autorizada.
bigtable.authorizedViews.get Obtiene información sobre una vista autorizada.
bigtable.authorizedViews.getIamPolicy Obtén la política de IAM de una vista autorizada.
bigtable.authorizedViews.list Enumera las vistas autorizadas en una tabla.
bigtable.authorizedViews.mutateRows Modifica filas dentro de una vista autorizada.
bigtable.authorizedViews.readRows Lee filas de una vista autorizada.
bigtable.authorizedViews.sampleRowKeys Obtener una muestra de las claves de fila que se usan en una vista autorizada
bigtable.authorizedViews.setIamPolicy Actualiza las políticas de control de acceso para una vista autorizada.
bigtable.authorizedViews.update Actualiza la configuración de una vista autorizada.
Nombre del permiso de la vista materializada continua Descripción
bigtable.materializedViews.create Crea una vista materializada continua.
bigtable.materializedViews.delete Borra una vista materializada continua.
bigtable.materializedViews.get Obtiene información sobre una vista materializada continua.
bigtable.materializedViews.getIamPolicy Obtiene la política de IAM de una vista materializada continua.
bigtable.materializedViews.list Enumera las vistas materializadas continuas en una instancia.
bigtable.materializedViews.readRows Lee filas de una vista materializada continua.
bigtable.materializedViews.sampleRowKeys Obtener 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 para una vista materializada continua.
bigtable.materializedViews.update Actualiza la configuración de una vista materializada continua.

Funciones predefinidas

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

En la siguiente tabla, se muestran las funciones predefinidas de Bigtable, incluida una lista de los permisos asociados con cada una:

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

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.editor)

Editor role for bigtable

bigtable.appProfiles.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update

bigtable.authorizedViews.create

bigtable.authorizedViews.delete

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.update

bigtable.backups.create

bigtable.backups.delete

bigtable.backups.get

bigtable.backups.getIamPolicy

bigtable.backups.list

bigtable.backups.read

bigtable.backups.restore

bigtable.backups.update

bigtable.clusters.*

  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update

bigtable.hotTablets.list

bigtable.instances.create

bigtable.instances.delete

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.getIamPolicy

bigtable.instances.list

bigtable.instances.listEffectiveTags

bigtable.instances.listTagBindings

bigtable.instances.ping

bigtable.instances.update

bigtable.keyvisualizer.*

  • 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.update

bigtable.materializedViews.create

bigtable.materializedViews.delete

bigtable.materializedViews.get

bigtable.materializedViews.getIamPolicy

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.materializedViews.update

bigtable.memoryLayers.*

  • 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.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.undelete

bigtable.tables.update

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/bigtable.user)

Provides read-write access to the data stored within Bigtable tables. Intended for application developers or service accounts.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.authorizedViews.mutateRows

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list

bigtable.locations.list

bigtable.logicalViews.get

bigtable.logicalViews.list

bigtable.logicalViews.readRows

bigtable.materializedViews.get

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.memoryLayers.get

bigtable.memoryLayers.list

bigtable.schemaBundles.get

bigtable.schemaBundles.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

bigtable.tables.mutateRows

bigtable.tables.readRows

bigtable.tables.sampleRowKeys

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.viewer)

Provides no data access. Intended as a minimal set of permissions to access the Google Cloud console for Bigtable.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.get

bigtable.instances.list

bigtable.instances.listEffectiveTags

bigtable.instances.listTagBindings

bigtable.locations.list

bigtable.logicalViews.get

bigtable.logicalViews.list

bigtable.materializedViews.get

bigtable.materializedViews.list

bigtable.memoryLayers.get

bigtable.memoryLayers.list

bigtable.schemaBundles.get

bigtable.schemaBundles.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.reader)

Provides read-only access to the data stored within Bigtable tables. Intended for data scientists, dashboard generators, and other data-analysis scenarios.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list

bigtable.locations.list

bigtable.logicalViews.get

bigtable.logicalViews.list

bigtable.logicalViews.readRows

bigtable.materializedViews.get

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.memoryLayers.get

bigtable.memoryLayers.list

bigtable.schemaBundles.get

bigtable.schemaBundles.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

bigtable.tables.readRows

bigtable.tables.sampleRowKeys

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

Funciones personalizadas

Si las funciones predefinidas de Bigtable no satisfacen tus necesidades empresariales, puedes definir tus propias funciones personalizadas con los permisos que especifiques.

Si el rol personalizado requiere compatibilidad de acceso con la consola de Google Cloud , debes identificar las tareas que realizarán los usuarios y asegurarte de que el rol personalizado tenga los permisos necesarios para cada tarea, como se muestra en la siguiente tabla. Si un rol personalizado no tiene todos los permisos necesarios para una tarea y un usuario intenta realizar esa tarea, la Google Cloud consola no funcionará correctamente.

Google Cloud tarea de la consola Permisos necesarios
Acceso básico a la Google Cloud consola
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • bigtable.tables.get
  • bigtable.tables.list
  • resourcemanager.projects.get
Crear una instancia o un clúster

Los permisos del acceso básico, además de los siguientes:

  • bigtable.clusters.create
  • bigtable.instances.create
Modificar una instancia o un clúster