Introducción a los controles de acceso a tablas

En este documento, se proporciona una descripción general de la LCA de la tabla de BigQuery.

La LCA de tabla de BigQuery te permite establecer permisos a nivel de tabla en recursos como tablas y vistas. Los permisos a nivel de tabla determinan los usuarios, grupos y cuentas de servicio que pueden acceder a una tabla o vista. Puedes otorgar a un usuario acceso a tablas o vistas específicas sin darle acceso al conjunto de datos completo. Por ejemplo, otorga la función de visualizador de datos de BigQuery (roles/bigquery.dataViewer) a un usuario para permitir que ese usuario solo consulte la tabla o vista sin acceso completo del conjunto de datos.

Control de acceso con las políticas de administración de identidades y accesos

Puedes configurar la política de control de acceso en una tabla o vista mediante una política de administración de identidades y accesos (IAM).

Visualiza la política de IAM de una tabla o vista

Una vez que se crea una tabla o vista, puedes ver la política de IAM de las siguientes maneras:

Configura la política de IAM de una tabla o vista

Puedes configurar o actualizar la política de control de acceso en un recurso de las siguientes maneras:

Una vista también puede hacer referencia a otras tablas de origen y vistas que compartiste mediante la LCA de tablas de BigQuery.

El acceso con la LCA de la tabla de BigQuery es aditivo. Para obtener más información sobre el control de acceso aditivo, consulta Controla el acceso a las vistas. La LCA de la tabla de BigQuery no admite un permiso deny.

Puedes probar si un usuario tiene acceso a una tabla o vista específica con el método tables.testIamPermissions. Para obtener más información, consulta Prueba los permisos.

Para obtener más información sobre cómo configurar una política, con instrucciones paso a paso, consulta Controla el acceso a las tablas y vistas.

Ejemplo de caso de uso

Alice es propietario de una empresa que desea compartir la tabla inventory con propietarios de tiendas de franquicias. La tabla está en un conjunto de datos que contiene otras tablas que Alice no desea compartir con los propietarios de las franquicias.

Bob es propietario de una tienda de franquicias. Alice usa la herramienta de línea de comandos de bq para otorgar a Bob y al resto de los propietarios de las tiendas de franquicias la función de Visualizador de datos de BigQuery (roles/bigquery.dataViewer) en la tabla inventory. Ahora, Bob puede consultar la tabla inventory directamente sin necesidad de acceder al conjunto de datos completo.

Para permitir que Bob vea una lista de las tablas a las que tiene acceso, Alicia puede otorgar el permiso bigquery.tables.list al conjunto de datos. La función de visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer) incluye el permiso bigquery.tables.list.

Políticas de IAM

Los controles de acceso a nivel de la tabla se compilan sobre IAM. IAM te permite controlar quiénes (usuarios) tienen qué acceso (funciones) a qué recursos mediante la configuración de políticas. Una política define y aplica qué funciones se otorgan a qué miembros, y esta política se conecta a un recurso. Cuando un miembro autenticado intenta acceder a un recurso, IAM verifica la política del recurso para determinar si la acción está permitida.

Para la LCA de la tabla de BigQuery, el recurso es una tabla de BigQuery y los miembros son usuarios de la tabla.

En el siguiente ejemplo, se muestra una política con las siguientes funciones:

  • A alice@example.com se le otorgó la función de propietario de datos de BigQuery (roles/bigquery.dataOwner).

  • A bob@example.com se le otorgó la función de visualizador de datos de BigQuery (roles/bigquery.dataViewer).

{
  "bindings":[
    {
      "members":[
        "user:alice@example.com"
      ],
      "role":"roles/bigquery.dataOwner"
    },
    {
      "members":[
        "user:bob@example.com"
      ],
      "role":"roles/bigquery.dataViewer"
    }
  ],
  "etag":"ABAC",
  "version":1
}

Para obtener más información sobre las políticas de IAM, consulta Comprende las políticas.

Permisos de LCA de tablas de BigQuery

Para establecer o cambiar el acceso a una tabla o vista, debes tener el permiso bigquery.tables.setIamPolicy. Las siguientes funciones predefinidas de BigQuery tienen el permiso bigquery.tables.setIamPolicy.

  • Administrador de BigQuery (roles/bigquery.admin)
  • Propietario de datos de BigQuery (roles/bigquery.dataOwner)

Para recuperar el acceso configurado en una tabla o vista, debes tener el permiso bigquery.tables.getIamPolicy. Las siguientes funciones predefinidas de BigQuery tienen el permiso bigquery.tables.getIamPolicy.

  • Administrador de BigQuery (roles/bigquery.admin)
  • Editor de datos de BigQuery (roles/bigquery.dataEditor)
  • Visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer)
  • Propietario de datos de BigQuery (roles/bigquery.dataOwner)
  • Visualizador de datos de BigQuery (roles/bigquery.dataViewer)

Lapso de tiempo de cambio de la política

En general, cualquier cambio en la política entrará en vigor en 60 segundos. Sin embargo, en determinadas circunstancias, puede tomar hasta 7 minutos que tales cambios se propaguen por completo en todo el sistema. Para obtener más información, consulta Otorga, cambia y revoca el acceso a los recursos. Además, en este documento, consulta Impacto en el almacenamiento en caché.

Impacto en el almacenamiento en caché

Si el almacenamiento en caché está habilitado, es posible que una cuenta vea los resultados de las consultas autorizadas con anterioridad después de que la cuenta ya no tenga acceso a la tabla. En particular, si el usuario ejecutó la consulta con éxito y, luego, le quitaste el acceso al usuario, el usuario podría obtener resultados de la caché de resultados de la consulta. BigQuery solo almacena en caché los accesos autorizados y se almacena en caché durante solo unos minutos.

Impacto en la función retroactiva

La cláusula FOR SYSTEM_TIME AS OF es la función "retroactiva" de BigQuery que te permite recuperar datos de hasta 7 días atrás. Si usas esta función, BigQuery aplica la LCA de tabla actual a tu solicitud. Si tenías acceso a la tabla en el pasado, pero se quitó tu acceso, no podrás acceder a versiones anteriores de la tabla.

Impacto cuando se copian las tablas

Cuando copias datos en una tabla nueva, las LCA de la tabla de origen no se copian de manera automática. Si deseas una LCA de tabla en una tabla nueva que creaste cuando copias una tabla, debes establecer explícitamente una LCA de tabla en la tabla nueva.

Comparación con las vistas autorizadas

BigQuery también proporciona acceso mediante vistas autorizadas. Una vista autorizada te permite compartir resultados de consultas con usuarios y grupos específicos sin darles acceso a las tablas subyacentes. El acceso de lectura autorizado siempre es de solo lectura.

Por ejemplo, la vista autorizada dept_view permite que el usuario joe@example.com vea el salario promedio por departamento, pero no el salario de cada persona en el conjunto de datos salary subyacente. Si dept_view tiene acceso a la fuente de datos, joe@example.com solo necesita permisos en el dept_view.

La diferencia principal entre una vista normal y una vista autorizada es la autoridad que se usa para controlar el acceso a los datos de la tabla fuente. El acceso regular de una vista a los datos de la tabla fuente se verifica en nombre de la autoridad del usuario final. El acceso de una vista autorizada a los datos de la tabla fuente se comprueba con la autoridad de la vista autorizada.

Con la adición de la LCA de la tabla de BigQuery, tienes las siguientes opciones para el acceso a la tabla:

  • Comparte un conjunto de datos, incluidas todas sus tablas de origen, con los usuarios. Esta opción es el control de acceso de IAM configurado a nivel de conjunto de datos.
  • Crea una vista autorizada para acceder a los datos de origen a los que el usuario no tiene acceso de IAM. Se accede a los datos de origen según la autoridad propia de la vista autorizada, no la autoridad del usuario. Esta opción es la función de vistas autorizadas.
  • Comparte una tabla o vista con usuarios específicos sin compartir todos los datos del conjunto de datos superior. Esta opción es la función de LCA de la tabla de BigQuery.

Compatibilidad con otras funciones de BigQuery

En el modelo de acceso IAM, los permisos son aditivos. Los permisos de recursos se heredan de un recurso superior, como se describe en Jerarquía de recursos. Cualquier permiso agregado al recurso hace que se otorgue acceso adicional. Una LCA de tabla solo puede permitir más acceso; no puede quitar ningún conjunto de datos ni acceso a proyectos de Google Cloud. Si una función de BigQuery no puede verificar el acceso a nivel de la tabla, se recurre al control de acceso existente a nivel de conjunto de datos. Como resultado, la LCA de la tabla de BigQuery es compatible con otras funciones de BigQuery.

Compatibilidad con los Controles del servicio de VPC

Los Controles del servicio de VPC usan IAM para controlar el acceso a los servicios como BigQuery y Cloud Storage. La LCA de la tabla de BigQuery usa IAM para proporcionar un mayor nivel de detalle del control de acceso en tablas de BigQuery individuales. Debido a que usan IAM de manera complementaria, los Controles del servicio de VPC y la LCA de la tabla de BigQuery son compatibles.

Audit Logging

Establecer una política en una tabla o vista es una actividad de administrador. Una actividad de administrador siempre se registra. Para ver la actividad registrada, usa los registros de auditoría de Cloud a fin de encontrar los casos de methodName establecidos en "google.iam.v1.IAMPolicy.SetIamPolicy".

Registro de LCA de tabla

Limitaciones

  • No se admiten las vistas autorizadas en el nivel de la tabla. Las vistas autorizadas solo pueden tener acceso a conjuntos de datos completos. Sin embargo, puedes usar la LCA de tabla de BigQuery para dar a los usuarios acceso a una tabla o vista individual.

  • En la actualidad, si una tabla se comparte directamente sin su conjunto de datos subyacente, la tabla compartida no aparece en los resultados de la búsqueda de Data Catalog.

  • Cuando consultas tablas comodín, los controles de acceso a nivel de la tabla no están marcados. Si deseas compartir tablas de acceso a los usuarios con un comodín de tabla en una consulta, debes otorgar acceso al usuario al conjunto de datos que contiene las tablas.

  • Al igual que las tablas comodín, las tablas en el conjunto de datos INFORMATION_SCHEMA no están sujetas al control de acceso a nivel de la tabla. También requieren permisos a nivel del conjunto de datos.

¿Qué sigue?