Introducción a los controles de acceso a tablas

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

La LCA de las tablas de BigQuery te permite establecer permisos a nivel de la 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 que tenga 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 permitirle que consulte solo la tabla o la vista sin acceso al conjunto de datos completo.

Control de acceso con las políticas de Identity and Access Management

Puedes configurar la política de control de acceso en una tabla o vista mediante una política de Identity and Access Management (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 y vistas de origen que compartiste mediante la LCA de las tablas de BigQuery.

El acceso con la LCA de las tablas 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 las tablas de BigQuery no admite un permiso deny.

Puedes probar si un usuario tiene acceso a una tabla o vista específica mediante 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, consulta las instrucciones paso a paso en la sección Controla el acceso a tablas y vistas.

Ejemplo de caso de uso

Alice es propietaria de datos de una empresa que desea compartir la tabla inventory con los propietarios de franquicias de tiendas. La tabla está en un conjunto de datos que contiene otras tablas que Alice no quiere compartir con los propietarios de 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 a los otros propietarios 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 a todo el conjunto de datos.

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é principales, y esta política se conecta a un recurso. Cuando una principal autenticada intenta acceder a un recurso, IAM verifica la política del recurso para determinar si la acción está permitida.

Para la LCA de las tablas de BigQuery, el recurso es una tabla de BigQuery y los principales 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 Información sobre las políticas.

Permisos de la LCA de las tablas de BigQuery

Para configurar 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 que se establece 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 un plazo de 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 resultados de consultas autorizados con anterioridad luego 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 la tabla actual a tu solicitud. Si tenías acceso a la tabla en el pasado, pero se te quitó, no podrás acceder a versiones anteriores de la tabla.

Impacto al copiar tablas

Cuando copias datos en una tabla nueva, las LCA de la tabla de origen no se copian de forma automática. Si deseas crear una LCA de tabla en una tabla nueva que creaste copiando una tabla, debes establecer una LCA de tabla de forma explícita 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 subyacente salary. Si dept_view tiene acceso a la fuente de datos, joe@example.com solo necesita permisos en la dept_view.

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

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

  • Compartir un conjunto de datos, incluidas todas sus tablas de origen, con los usuarios. Esta opción es el control de acceso de IAM que se establece a nivel del conjunto de datos.
  • Crear 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 de la vista autorizada, no la autoridad del usuario. Esta opción es la función de vistas autorizadas.
  • Compartir una tabla o una vista con usuarios específicos sin compartir todos los datos del conjunto de datos principal. Esta opción es la función de LCA de las tablas de BigQuery.

Compatibilidad con otras funciones de BigQuery

En el modelo de acceso de IAM, los permisos son acumulativos. Los permisos de los recursos se heredan de un recurso superior, como se describe en la Jerarquía de recursos. Cualquier permiso agregado al recurso da como resultado el acceso adicional. Una LCA de tabla solo puede permitir más acceso. No puede quitar ningún acceso al conjunto de datos o al proyecto de Google Cloud. Si una función de BigQuery no puede verificar el acceso a nivel de tabla, recurre al control de acceso existente a nivel del conjunto de datos. Como resultado, la LCA de las tablas 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 las tablas de BigQuery usa IAM para proporcionar un mayor nivel de detalle de control de acceso en tablas individuales de BigQuery. Debido a que usan IAM de manera complementaria, los Controles del servicio de VPC y la LCA de las tablas de BigQuery son compatibles.

Registros de auditoría

Configurar una política en una tabla o vista es una actividad del administrador. Una actividad de administrador siempre se registra. Si quieres ver la actividad registrada, usa los Registros de auditoría de Cloud para buscar casos de methodName configurado como "google.iam.v1.IAMPolicy.SetIamPolicy".

Registro de la LCA de la tabla

Limitaciones

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

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

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

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

¿Qué sigue?