Soluciona problemas de control de acceso
En este documento, se muestra cómo solucionar problemas de seguridad relacionados con los permisos de Identity and Access Management (IAM), el control de acceso a nivel de columna y las claves de encriptación administradas por el cliente (CMEK) en BigQuery.
Por lo general, los problemas de permisos de IAM generan errores Access Denied como los siguientes:
Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.Access Denied: Project PROJECT_ID: User does not have bigquery.datasets.get permission on dataset DATASET.User does not have permission to query table PROJECT_ID:DATASET.TABLE.Access Denied: Table PROJECT_ID:DATASET.TABLE: User does not have permission to query table PROJECT_ID:DATASET.TABLE, or perhaps it does not exist.Access Denied: User PRINCIPAL does not have permission to perform bigquery.tables.getData on resource 'projects/PROJECT_ID/datasets/DATASET/tables/TABLE'.
Antes de comenzar
- Para solucionar problemas relacionados con el acceso de una principal a un recurso de BigQuery, asegúrate de tener los permisos de IAM necesarios.
Recopila información sobre el problema
El primer paso para solucionar un problema de acceso a un recurso es determinar el permiso que falta, la principal de IAM a la que se le negó el acceso y el recurso al que la principal intentaba acceder.
Obtén información del historial de errores o trabajos
Para obtener información sobre la principal, el recurso y los permisos, examina el resultado de la herramienta de línea de comandos de bq, la respuesta de la API o BigQuery en la consola de Google Cloud .
Por ejemplo, si intentas ejecutar una consulta con permisos insuficientes, verás un error como el siguiente en la pestaña Información del trabajo de la sección Resultados de la consulta de la consola de Google Cloud .
Examina el error para determinar la principal, el recurso y los permisos.
En algunos casos, es posible que puedas solicitar los permisos faltantes directamente desde el mensaje de error. Para obtener más información, consulta Mensajes de error de permisos en la documentación de IAM.
Obtén información de los registros de auditoría de Cloud
Si el mensaje de error es genérico, falta información o la acción falló en un proceso en segundo plano, usa el Explorador de registros de los Registros de auditoría de Cloud para obtener información sobre el error.
En la consola de Google Cloud , accede a la página Explorador de registros.
Como alternativa, en el menú de navegación, elige Monitoring > Explorador de registros.
En el Explorador de registros, para el alcance de los registros, elige Registros del proyecto.
En la ventana de consulta, ingresa la siguiente consulta para obtener errores relacionados con los permisos de los registros de acceso a los datos de BigQuery:
resource.type="bigquery_resource" AND logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access" AND protoPayload.status.message:"Access Denied" OR protoPayload.status.message:"Permission denied" OR protoPayload.status.code=7
Reemplaza PROJECT_ID con el ID del proyecto.
En los resultados de la consulta, expande la entrada de registro que corresponde a la operación fallida.
En la sección
protoPayload, expande el arrayauthorizationInfoy, luego, expande cada nodo del arrayauthorizationInfo.El array
authorizationInfomuestra cada verificación de permisos que se realizó durante la llamada a la API.Para ver la causa del error, busca la entrada
granted: false. La entradagranted: falsemuestra la siguiente información:permission: Es la cadena de permiso de IAM que se verificó. Por ejemplo,bigquery.tables.getDataresource: Es el nombre completamente calificado del recurso al que intentó acceder la principal. Por ejemplo,projects/myproject/datasets/mydataset/tables/mytable.principalEmail(si está disponible): Se hace referencia enprotoPayload.authenticationInfo. Es la principal que intentó realizar la acción.
Usa el Analizador de políticas para las políticas de permiso
El Analizador de políticas de permisos te permite descubrir qué principales de IAM tienen qué tipo de acceso a cuáles recursos de BigQuery en función de tus políticas de permisos de IAM.
Después de recopilar información sobre el error de permisos, puedes usar el Analizador de políticas para comprender por qué la principal no tiene el acceso requerido. Esta herramienta analiza todas las políticas pertinentes, las membresías en Grupos de Google y la herencia de recursos superiores, como un proyecto, una carpeta y tu organización.
Para usar el Analizador de políticas en políticas de permiso, crea una consulta de análisis, especifica un alcance para el análisis y, luego, ejecuta la consulta.
En la consola de Google Cloud , ve a la página Analizador de políticas.
Como alternativa, en el menú de navegación, elige IAM y administración > Analizador de políticas.
Haz clic en Crear consulta personalizada.
En la página Configura tu consulta, ingresa la información que recopilaste anteriormente:
En la sección Selecciona el alcance, en el campo Selecciona el alcance de la consulta, verifica que aparezca tu proyecto actual o haz clic en Explorar para elegir otro recurso.
En la sección Configura los parámetros de consulta, para Parámetro 1, elige Principal y, en el campo Principal, ingresa el correo electrónico del usuario, el grupo o la cuenta de servicio.
Haz clic en Agregar parámetro.
En Parámetro 2, elige Permiso y, en el campo Permiso, haz clic en Seleccionar, elige el permiso de BigQuery y, luego, haz clic en Agregar. Por ejemplo, selecciona
bigquery.tables.getData.Haz clic en Agregar parámetro.
En Parámetro 3, elige Recurso y, en el campo Recurso, ingresa el nombre del recurso completamente calificado. El nombre del recurso debe incluir el prefijo del servicio, como en los siguientes ejemplos:
- Proyecto de BigQuery:
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID - Conjunto de datos de BigQuery:
//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET - Tabla de BigQuery:
//bigquery.googleapis.com/projects/PROJECT/datasets/DATASET/tables/TABLE
- Proyecto de BigQuery:
En el panel Consulta personalizada, haz clic en Analizar > Ejecutar consulta.
Examina los resultados de la consulta. El resultado puede ser uno de los siguientes:
- Una lista vacía Si no se muestran resultados, se confirma que el principal no tiene el permiso requerido. Deberás otorgarle a la principal un rol que proporcione los permisos correctos.
- Uno o más resultados Si el analizador encuentra una política de permisos, significa que existe alguna forma de acceso. Haz clic en View Binding en cada resultado para ver los roles que brindan acceso al recurso del que la principal es miembro. La vinculación de la política muestra si el acceso se otorga a través de la membresía o la herencia de un grupo, o si se rechaza por una condición de IAM o una política de denegación de IAM.
Encuentra el rol de IAM correcto que otorga los permisos necesarios
Después de confirmar que el principal no tiene acceso suficiente, el siguiente paso es encontrar el rol de IAM predefinido o personalizado adecuado que otorgue los permisos necesarios. El rol que elijas debe cumplir con el principio de privilegio mínimo.
Si tu organización usa roles personalizados, puedes encontrar el rol correcto enumerando todos los roles personalizados creados en tu organización o proyecto. Por ejemplo, en la consola de Google Cloud , en la página Roles, puedes filtrar la lista por Tipo:Personalizado para ver solo los roles personalizados.
Para encontrar el rol de IAM predefinido correcto, sigue estos pasos.
Abre la sección de permisos de BigQuery de la página Roles y permisos de IAM de BigQuery.
En la barra de búsqueda Ingresa un permiso, ingresa el permiso que recuperaste del mensaje de error, el historial de trabajos o los registros de auditoría. Por ejemplo,
bigquery.tables.getData.En los resultados de la búsqueda, se muestran todos los roles predefinidos de BigQuery que otorgan el permiso.
Aplica el principio de privilegio mínimo: En la lista de roles, elige el rol menos permisivo que otorga los permisos necesarios. Por ejemplo, si buscaste
bigquery.tables.getDatapara otorgar la capacidad de consultar datos de tablas, Visualizador de datos de BigQuery es el rol menos permisivo que otorga ese permiso.Otorga a la principal el rol adecuado. Para obtener información sobre cómo otorgar un rol de IAM a un recurso de BigQuery, consulta Controla el acceso a los recursos con IAM.
Soluciona problemas relacionados con el control de acceso a nivel de columna
En las siguientes secciones, se explica cómo solucionar problemas relacionados con el control de acceso a nivel de la columna y las etiquetas de política de Data Catalog.
No puedo ver los roles de Data Catalog
Si no puedes ver roles como el de lector detallado de Data Catalog, es posible que no hayas habilitado la API de Data Catalog en tu proyecto. Para obtener información sobre cómo habilitar la API de Data Catalog, consulta Antes de comenzar. Los roles de Data Catalog aparecen varios minutos después de que habilitas la API de Data Catalog.
No puedo ver la página Taxonomías
Necesitas permisos adicionales para ver la página Taxonomías de etiquetas de política en la consola deGoogle Cloud . Por ejemplo, el rol de administrador de etiquetas de política de Data Catalog tiene acceso a la página Taxonomías.
Apliqué las etiquetas de política, pero no funcionan.
Si sigues recibiendo resultados de la búsqueda para una cuenta que no debería tener acceso, es posible que la cuenta esté recibiendo resultados almacenados en caché. Específicamente, si ejecutaste la consulta correctamente y, luego, aplicaste etiquetas de política, es posible que obtengas resultados de la caché de resultados de la búsqueda. De forma predeterminada, los resultados de las consultas se almacenan en caché durante 24 horas. La consulta falla de inmediato si inhabilitas la caché de resultados. Para obtener más detalles sobre el almacenamiento en caché, consulta Impacto del control de acceso a nivel de columna.
En general, las actualizaciones de IAM tardan unos 30 segundos en propagarse. Los cambios en la jerarquía de etiquetas de política pueden demorar hasta 30 minutos en propagarse.
No tengo permiso para leer desde una tabla con seguridad a nivel de columnas
Necesitas el rol de lector detallado o el rol de lector enmascarado en diferentes niveles, como la organización, la carpeta, el proyecto y la etiqueta de política. El rol de lector detallado otorga acceso a los datos sin procesar, mientras que el rol de lector enmascarado otorga acceso a los datos enmascarados. Puedes usar el solucionador de problemas de políticas de IAM para verificar este permiso a nivel del proyecto.
Configuré el control de acceso detallado en la taxonomía de etiqueta de política, pero los usuarios ven datos protegidos
Para solucionar este problema, confirma los siguientes detalles:
- En la página Taxonomías de etiquetas de política del Centro de seguridad de BigQuery, confirma que el botón de activación Aplicar control de acceso esté en la posición Activado.
Asegúrate de que tus consultas no usen resultados de consultas almacenados en caché. Si usas la herramienta de línea de comandos de bq para probar tus consultas, usa la marca
--nouse_cachepara inhabilitar la caché de consultas. Por ejemplo:bq query --nouse_cache --use_legacy_sql=false "SELECT * EXCEPT (customer_pii) FROM my_table;"
Consideraciones sobre la migración de proyectos
Las etiquetas de política y las taxonomías se almacenan en una Google Cloud organización específica y no se vuelven a asociar automáticamente cuando se migra un proyecto a una nueva organización. Si migras un proyecto que usa etiquetas de política para el control de acceso a nivel de la columna a otra organización, se producen los siguientes problemas:
- Las etiquetas de política ya no se pueden administrar en la Google Cloud consola del proyecto migrado.
- No puedes aplicar estas etiquetas de política a las columnas nuevas del proyecto migrado.
- Es posible que los controles de acceso a nivel de la columna existentes parezcan seguir vigentes, pero el vínculo a la taxonomía de origen en la organización original está roto a los efectos de la administración.
Para resolver este problema, el equipo de asistencia de Google Cloud debe intervenir de forma manual para volver a asociar la taxonomía con la nueva organización. Si migraste un proyecto con etiquetas de política y tienes estos problemas, comunícate con Atención al cliente de Cloud.
Soluciona problemas de claves de encriptación administradas por el cliente
En la siguiente lista, se describen los errores comunes y las resoluciones recomendadas cuando usas claves de encriptación administradas por el cliente (CMEK) con Cloud Key Management Service:
- Error:
Please grant Cloud KMS CryptoKey Encrypter/Decrypter role - Resolución: La cuenta de servicio de BigQuery asociada a tu proyecto no tiene permisos de IAM suficientes para operar en la clave de Cloud KMS especificada. Para otorgar el permiso de IAM requerido, sigue las instrucciones del mensaje de error o de Otorga permisos de encriptación y desencriptación.
- Error:
Existing table encryption settings don't match encryption settings specified in the request - Resolución: Este error puede ocurrir cuando la tabla de destino tiene una configuración de encriptación que no coincide con la configuración de encriptación en tu solicitud. Para solucionar este problema, usa la disposición de escritura
TRUNCATEpara reemplazar la tabla o especifica una tabla de destino diferente. - Error:
This region is not supported - Resolución: La región de la clave de Cloud KMS no coincide con la región del conjunto de datos de BigQuery para la tabla de destino. Para resolver este problema, selecciona una clave en una región que coincida con tu conjunto de datos o carga datos en un conjunto de datos que coincida con la región de la clave.
- Error:
Your administrator requires that you specify an encryption key for queries in project PROJECT_ID. - Resolución: Una política de la organización impidió crear un recurso o ejecutar una consulta. Para obtener más información sobre esta política, consulta Requerir CMEK para todos los recursos.
- Error:
Your administrator prevents using KMS keys from project KMS_PROJECT_ID to protect resources in project PROJECT_ID. - Resolución: Una política de la organización impidió crear un recurso o ejecutar una consulta. Para obtener más información sobre esta política, consulta Restringe las claves de Cloud KMS de un proyecto de BigQuery.
¿Qué sigue?
- Para obtener una lista de todos los roles y permisos de IAM de BigQuery, consulta Roles y permisos de IAM de BigQuery.
- Para obtener más información sobre la seguridad a nivel de columna, consulta Restringe el acceso con el control de acceso a nivel de columna.
- Para obtener más información sobre las claves de encriptación administradas por el cliente, consulta Protege datos con claves de Cloud KMS.
- Para obtener más información sobre cómo solucionar problemas relacionados con políticas de permiso y denegación en IAM, consulta Soluciona problemas relacionados con políticas.
- Para obtener más información sobre el Analizador de políticas de Policy Intelligence, consulta Analizador de políticas de permisos.
- Para obtener más información sobre el Solucionador de problemas de políticas, consulta Cómo usar el Solucionador de problemas de políticas.