Soluciona problemas de permisos de IAM en BigQuery
En este documento, se muestra cómo solucionar problemas relacionados con los permisos de Identity and Access Management (IAM) 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 denegó 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 Soluciona problemas relacionados con 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 Cloud Audit Logs para obtener información sobre el error.
En la Google Cloud consola, ve 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 arrayauthorizationInfo
y, luego, expande cada nodo del arrayauthorizationInfo
.El array
authorizationInfo
muestra 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: false
muestra la siguiente información:permission
: Es la cadena de permiso de IAM que se verificó. Por ejemplo,bigquery.tables.getData
resource
: 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 permisos
El Analizador de políticas para 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é el 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 principales, 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 > Policy Analyzer.
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 Seleccionar 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 de recurso completo. 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 la 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 algún tipo de acceso. Haz clic en Ver vinculación en cada resultado para ver los roles que brindan acceso al recurso del que el 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 Type:Custom 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 Enter a permission, 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.getData
para 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.
¿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 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 para 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.