Control de acceso de 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. Estableces políticas de IAM en los recursos para controlar quién tiene acceso a qué recursos.
Los recursos de Bigtable se organizan en una jerarquía. Un proyecto de Google 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 a un nivel, automáticamente tienes permisos debajo de ese nivel. Por ejemplo, si tienes acceso a nivel del proyecto, también tienes acceso a las instancias, los clústeres, las tablas y las vistas autorizadas de ese proyecto. Si se te otorga acceso a una vista autorizada, no tienes acceso automático a los recursos de nivel superior que son superiores de la vista autorizada, 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 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
Estos son algunos ejemplos del uso del control de acceso a nivel de la copia de seguridad:
- Evita que un usuario borre una copia de seguridad.
- Evita que un usuario restablezca desde la copia de seguridad.
Estos son algunos ejemplos del uso del control de acceso a nivel de la vista autorizada:
- Permitir que un usuario lea una vista autorizada, pero no la modifique
- Permite que un usuario vea los datos de solo una de las varias vistas autorizadas de una tabla.
Consulta la guía para desarrolladores de IAM a fin de obtener una descripción detallada de IAM y sus características. 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 funciones de IAM de Bigtable, debes habilitar la API de Bigtable en tu proyecto. No podrás ver las funciones de Bigtable en la consola de Google Cloud hasta que habilites 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
autorizan a los usuarios a enumerar 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 |
Leer las listas de control de acceso (LCA) de una copia de seguridad Se muestran como políticas de IAM. |
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 sobrecargadas de un clúster. |
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 |
Borrar una etiqueta |
bigtable.instances.get |
Obtén información sobre una instancia de Bigtable |
bigtable.instances.getIamPolicy |
Leer las listas de control de acceso (LCA) de las instancias; se muestran como políticas de IAM |
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 del canal. |
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 |
Leer las LCA de las tablas; se muestran como políticas de IAM |
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 |
Recuperar 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 |
Borrar una vista autorizada |
bigtable.authorizedViews.get |
Obtén información sobre una vista autorizada. |
bigtable.authorizedViews.getIamPolicy |
Consulta el control de acceso de una vista autorizada. Se muestran como políticas de IAM. |
bigtable.authorizedViews.list |
Enumera las vistas autorizadas en una tabla. |
bigtable.authorizedViews.mutateRows |
Modificar filas dentro de una vista autorizada |
bigtable.authorizedViews.readRows |
Lee filas de una vista autorizada. |
bigtable.authorizedViews.sampleRowKeys |
Obtén 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 de una vista autorizada. |
bigtable.authorizedViews.update |
Actualiza la configuración de una vista autorizada. |
Funciones predefinidas
Cada función predefinida 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 |
---|---|
Bigtable Administrator( 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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 admitir el acceso a 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 consola de Google Cloud no funcionará de forma correcta.
Tarea de la consola de Google Cloud | Permisos necesarios |
---|---|
Acceso básico a la consola de Google Cloud |
|
Crear una instancia o un clúster |
Los permisos del acceso básico, además de los siguientes:
|
Modificar una instancia o un clúster |
Los permisos del acceso básico, además de los siguientes:
|
Administrar la configuración de la replicación |
Los permisos del acceso básico, además de los siguientes:
|
Borrar una instancia o un clúster |
Los permisos del acceso básico, además de los siguientes:
|
Ver grafos para supervisar una instancia |
Los permisos del acceso básico, además de los siguientes:
|
Crea y actualiza una tabla |
Los permisos del acceso básico, además de los siguientes:
|
Restablecer una copia de seguridad |
Los permisos del acceso básico, además de los siguientes:
|
Administración de IAM
En esta sección, se explica cómo administrar los roles de IAM y los permisos relacionados a nivel del proyecto, la instancia, la tabla y la copia de seguridad.
Administración de IAM a nivel de proyecto
A nivel de proyecto, puedes otorgar, cambiar y revocar roles de IAM con la consola de Google Cloud, la API de IAM o Google Cloud CLI. Consulta Otorga, cambia y revoca el acceso para obtener instrucciones.
Una vez que crees un proyecto, podrás otorgar a los usuarios los roles de IAM a nivel del proyecto según los niveles de acceso específicos.
Roles obligatorios
Antes de establecer las funciones de IAM a nivel de la instancia, a nivel de la tabla, a nivel de la copia de seguridad o autorizadas a nivel de la vista para un usuario, asegúrate de que este tenga, al menos, una de las siguientes funciones de IAM a nivel del proyecto:
- Usuario de Bigtable sin acceso a datos (recomendada)
- Lector de Bigtable
- Usuario de Bigtable
- Administrador de Bigtable
Elige una función a nivel del proyecto que no tenga más permisos que los que el usuario necesita en todas las instancias, tablas, copias de seguridad o vistas autorizadas del proyecto. Por este motivo, debes otorgar la función de usuario de Bigtable sin acceso a datos en la mayoría de los casos.
Si el usuario no tiene al menos uno de estos roles a nivel de proyecto, no tendrá acceso a Bigtable a través de la consola de Google Cloud. La consola de Google Cloud requiere uno de estos roles a nivel de proyecto para poder recuperar información sobre instancias, clústeres, tablas o copias de seguridad en nombre del usuario.
Otorga funciones de IAM a nivel de instancia
A nivel de instancia, puedes otorgar cualquiera de las funciones predefinidas de Bigtable a un usuario o una cuenta de servicio. También puedes otorgar las funciones personalizadas que hayas definido.
Para otorgar una función predefinida o personalizada a un usuario o cuenta de servicio a nivel de instancia, sigue estos pasos:
Console
Ve a la página Instancias de Bigtable en la consola de Google Cloud.
Marca las casillas que aparecen al costado de las instancias cuyas funciones desees administrar. Aparecerá un panel de información.
En el panel de información, haz clic en Permisos.
En Agregar principales, comienza a escribir la dirección de correo electrónico del usuario o la cuenta de servicio que desees agregar y haz clic en ella.
Haz clic en la lista desplegable Seleccionar una función y, luego, en Bigtable para seleccionar una función predefinida, o en Personalizada para seleccionar una personalizada.
Haz clic en el nombre de cada función que desees asignar.
Haz clic en Agregar. Las funciones que indiques a nivel de instancia se otorgarán al usuario o a la cuenta de servicio.
gcloud
Si no conoces el ID de la instancia, usa el comando
bigtable instances list
para ver una lista de las instancias de tu proyecto:gcloud bigtable instances list
Usa el comando
bigtable instances set-iam-policy
:gcloud bigtable instances set-iam-policy \ INSTANCE_ID \ POLICY_FILE
Proporcione lo siguiente:
- INSTANCE_ID: Es el identificador permanente de la instancia.
- POLICY_FILE: Ruta de acceso a un archivo local JSON o YAML que contiene una política de IAM válida.
Otorga funciones de IAM a nivel de tabla
A nivel de tabla, puedes otorgar cualquiera de las funciones predefinidas de Bigtable a una cuenta de usuario o de servicio. También puedes otorgar las funciones personalizadas que hayas definido.
Para otorgar una función predefinida o personalizada a una cuenta de usuario o de servicio a nivel de tabla, sigue estos pasos:
Console
Ve a la página Instancias de Bigtable en la consola de Google Cloud.
Haz clic en el nombre de la instancia que contiene la tabla cuya función de IAM deseas configurar.
Selecciona Tablas en el panel de navegación izquierdo.
Marca las casillas que aparecen junto a las tablas cuyas funciones desees administrar. Aparecerá un panel de información.
En el panel de información, haz clic en Permisos.
En Agregar principales, comienza a escribir la dirección de correo electrónico del usuario o la cuenta de servicio que desees agregar y haz clic en ella.
Haz clic en la lista desplegable Seleccionar una función y, luego, en Bigtable para seleccionar una función predefinida, o en Personalizada para seleccionar una personalizada.
Haz clic en el nombre de cada función que desees asignar.
Haz clic en Agregar. Las funciones que indiques a nivel de tabla se otorgarán al usuario o a la cuenta de servicio.
gcloud
Si no conoces el ID de la instancia, usa el comando
bigtable instances list
para ver una lista de las instancias de tu proyecto:gcloud bigtable instances list
Si no conoces los IDs de las tablas de la instancia, usa el comando
bigtable instances tables list
para ver una lista de ellas.gcloud bigtable instances tables list --instances=INSTANCE_ID
Proporcione lo siguiente:
- INSTANCE_ID: Es el identificador permanente de la instancia.
Usa el comando
bigtable instances tables set-iam-policy
:gcloud bigtable instances tables set-iam-policy \TABLE_ID \ --instance=INSTANCE_ID \ POLICY_FILE
Proporcione lo siguiente:
- TABLE_ID: Es el identificador permanente de la tabla.
- INSTANCE_ID: Es el identificador permanente de la instancia.
- POLICY_FILE: Ruta de acceso a un archivo local JSON o YAML que contiene una política de IAM válida.
Otorga roles de IAM a nivel de la copia de seguridad
A nivel de la copia de seguridad, puedes otorgar cualquiera de los roles predefinidos de Bigtable a un usuario o una cuenta de servicio. También puedes otorgar las funciones personalizadas que hayas definido.
Para otorgar una función predefinida o personalizada a un usuario o una cuenta de servicio a nivel de la copia de seguridad, sigue estos pasos:
gcloud
Si no conoces el ID de la instancia, usa el comando
bigtable instances list
para ver una lista de las instancias de tu proyecto:gcloud bigtable instances list
Si no conoces los IDs de las copias de seguridad de una instancia, usa el comando
bigtable instances backups list
para ver una lista de ellas.gcloud bigtable backups list --instances=INSTANCE_ID
Proporcione lo siguiente:
- INSTANCE_ID: Es el identificador permanente de la instancia.
Usa el comando
gcloud bigtable backups set-iam-policy
:gcloud bigtable backups set-iam-policy BACKUP_ID \ --instance=INSTANCE_ID \ --cluster=CLUSTER_ID \ POLICY_FILE
Proporcione lo siguiente:
- BACKUP_ID: Es el identificador permanente de la copia de seguridad.
- INSTANCE_ID: Es el identificador permanente de la instancia.
TABLE_ID
: El identificador permanente de la tablaPOLICY_FILE
: Ruta de acceso a un archivo local JSON o YAML que contiene una política de IAM válida.
Otorga roles de IAM a nivel de vista autorizada
A nivel de la vista autorizada, puedes otorgar cualquiera de los roles predefinidos de Bigtable a un usuario o una cuenta de servicio. También puedes otorgar los roles personalizados que hayas definido.
Para otorgar una función predefinida o personalizada a un usuario o una cuenta de servicio a nivel de la vista autorizada, sigue estos pasos:
Console
Abre la lista de instancias de Bigtable en la consola de Google Cloud.
Haz clic en la instancia que contiene la vista autorizada.
En el panel de navegación, haz clic en Bigtable Studio.
En el explorador, expande la tabla y Vistas autorizadas.
Junto a la vista autorizada que deseas modificar, haz clic en el menú de acciones more_vert y, luego, en Otorgar acceso.
Agrega al menos un principal y selecciona el rol al que se le debe asignar ese principal o grupo de principales.
Opcional: Para otorgar acceso a roles adicionales, haz clic en Agregar otro rol y, luego, ingresa el principal y el rol de cada rol adicional.
Haz clic en Guardar.
gcloud
Si no conoces el ID de la instancia, usa el comando
bigtable instances list
para ver una lista de las instancias de tu proyecto:gcloud bigtable instances list
Si no conoces los IDs de las tablas de la instancia, usa el comando
bigtable instances tables list
para ver una lista de ellas.gcloud bigtable instances tables list --instances=INSTANCE_ID
Si no conoces el ID de la vista, usa el comando
bigtable authorized-views list
para ver una lista de todas las vistas autorizadas de la tabla.gcloud bigtable instances tables authorized-views list \ --instance=INSTANCE_ID \ --table=TABLE_ID
Usa el comando
bigtable authorized-views set-iam-policy
:gcloud bigtable authorized-views set-iam-policy TABLE_ID \ AUTHORIZED_VIEW_ID --instance=INSTANCE_ID POLICY_FILE
Proporcione lo siguiente:
INSTANCE_ID
: Es el identificador permanente de la instancia.TABLE_ID
: El identificador permanente de la tablaAUTHORIZED_VIEW_ID
: El identificador permanente de la vistaPOLICY_FILE
: Ruta de acceso a un archivo local JSON o YAML que contiene una política de IAM válida.
Condiciones de IAM
Las condiciones de IAM te permiten definir y aplicar el control de acceso condicional basado en atributos para algunos recursos de Google Cloud, incluidos los recursos de Bigtable.
En Bigtable, puedes aplicar el acceso condicional según los siguientes atributos:
- Atributos de fecha y hora: Se usan para configurar el acceso temporal (que vence), programado o de duración limitada a los recursos de Bigtable. Por ejemplo, puedes permitir que un usuario acceda a una tabla hasta una fecha especificada.
- Atributos de recursos: Se usa para configurar el acceso condicional según el nombre, el tipo o los atributos del servicio de recursos. En Bigtable, puedes usar atributos de instancias, clústeres, tablas, copias de seguridad y vistas autorizadas para configurar el acceso condicional. Por ejemplo, puedes permitir que un usuario administre tablas solo en tablas que comienzan con un prefijo específico o que puede acceder solo a una tabla específica.
Para obtener más información sobre las Condiciones de IAM, consulta Descripción general de las Condiciones.
¿Qué sigue?
Obtén más información sobre IAM.