Solucionar problemas con los permisos de gestión de identidades y accesos en BigQuery
En este documento se explica cómo solucionar problemas con los permisos de gestión de identidades y accesos (IAM) en BigQuery. Los problemas de permisos de IAM suelen provocar 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 empezar
- Para solucionar problemas de acceso de una entidad a un recurso de BigQuery, comprueba que tienes los permisos de gestión de identidades y accesos 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 entidad principal de gestión de identidades y accesos a la que se le ha denegado el acceso y el recurso al que intentaba acceder la entidad principal.
Obtener información del historial de errores o de tareas
Para obtener información sobre la entidad de seguridad, el recurso y los permisos, examine el resultado de la herramienta de línea de comandos bq, la respuesta de la API o BigQuery en la Google Cloud consola.
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 entidad principal, el recurso y los permisos.
En algunos casos, puede solicitar los permisos que faltan directamente desde el mensaje de error. Para obtener más información, consulta el artículo Solucionar mensajes de error de permisos de la documentación de IAM.
Obtener 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 ha fallado 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.
También puedes ir al menú de navegación y elegir Monitorización > Explorador de registros.
En el Explorador de registros, en el ámbito de los registros, elige Registros del proyecto.
En la ventana de consulta, introduce la siguiente consulta para obtener errores relacionados con los permisos de los registros de acceso a 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
Sustituye PROJECT_ID por el ID del proyecto.
En los resultados de la consulta, despliega la entrada de registro que corresponda a la operación fallida.
En la sección
protoPayload
, despliega la matrizauthorizationInfo
y, a continuación, despliega cada nodo de la matrizauthorizationInfo
.La matriz
authorizationInfo
muestra todas las comprobaciones de permisos realizadas 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
: la cadena de permiso de gestión de identidades y accesos que se ha comprobado. Por ejemplo,bigquery.tables.getData
.resource
: nombre completo del recurso al que ha intentado acceder la entidad de seguridad. Por ejemplo,projects/myproject/datasets/mydataset/tables/mytable
.principalEmail
(si está disponible): hace referencia aprotoPayload.authenticationInfo
, que es el principal que ha intentado realizar la acción.
Usar el analizador de políticas para las políticas de permiso
Analizador de políticas de las políticas de permiso te permite saber qué principales de gestión de identidades y accesos tienen acceso a qué recursos de BigQuery en función de tus políticas de permiso de gestión de identidades y accesos.
Una vez que hayas recopilado información sobre el error de permisos, puedes usar el analizador de políticas para saber por qué el principal no tiene el acceso necesario. Esta herramienta analiza todas las políticas pertinentes, las pertenencias a grupos de Google y la herencia de recursos superiores, como un proyecto, una carpeta y tu organización.
Para usar Analizador de políticas en las políticas de permiso, debes crear una consulta de análisis, especificar un ámbito para el análisis y, a continuación, ejecutar la consulta.
En la Google Cloud consola, ve a la página Analizador de políticas.
También puedes ir al menú de navegación y seleccionar IAM y administración > Analizador de políticas.
Haz clic en Crear consulta personalizada.
En la página Configura tu consulta, introduce la información que has recogido anteriormente:
En la sección Select the scope (Seleccionar el ámbito), en el campo Select query scope (Seleccionar el ámbito de la consulta), comprueba que aparece tu proyecto actual o haz clic en Browse (Explorar) para elegir otro recurso.
En la sección Define los parámetros de consulta, en Parámetro 1, elige Principal y, en el campo Principal, introduce el correo del usuario, el grupo o la cuenta de servicio.
Haz clic en
Añadir parámetro.En Parámetro 2, elija Permiso y, en el campo Permiso, haga clic en Seleccionar, elija el permiso de BigQuery y, a continuación, haga clic en Añadir. Por ejemplo, selecciona
bigquery.tables.getData
.Haz clic en
Añadir parámetro.En Parámetro 3, elija Recurso y, en el campo Recurso, introduzca 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, haga clic en Analizar > Ejecutar consulta.
Examina los resultados de la consulta. El resultado puede ser uno de los siguientes:
- Una lista vacía. No hay resultados que confirmen que la entidad principal no tiene el permiso necesario. Deberás asignar al principal un rol que le proporcione los permisos correctos.
- Uno o varios resultados. Si el analizador encuentra una política de permiso, significa que existe algún tipo de acceso. Haz clic en Ver enlace en cada resultado para ver los roles que proporcionan acceso al recurso del que es miembro la principal. El enlace de la política muestra si el acceso se concede a través de la pertenencia a un grupo o de la herencia, o si se deniega mediante una condición de gestión de identidades y accesos o una política de denegación de gestión de identidades y accesos.
Buscar el rol de gestión de identidades y accesos correcto que conceda los permisos necesarios
Una vez que hayas confirmado que la entidad de seguridad no tiene suficiente acceso, el siguiente paso es buscar el rol de gestión de identidades y accesos predefinido o personalizado adecuado que le conceda los permisos necesarios. El rol que elijas debe cumplir el principio de privilegio mínimo.
Si tu organización usa roles personalizados, puedes encontrar el rol correcto consultando todos los roles personalizados creados en tu proyecto u organización. 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 gestión de identidades y accesos de BigQuery.
En la barra de búsqueda Introduce un permiso, escribe el permiso que has obtenido del mensaje de error, del historial de trabajos o de los registros de auditoría. Por ejemplo,
bigquery.tables.getData
.En los resultados de búsqueda se muestran todos los roles predefinidos de BigQuery que conceden el permiso.
Aplica el principio de mínimos accesos: en la lista de roles, elige el rol menos permisivo que conceda los permisos necesarios. Por ejemplo, si buscas
bigquery.tables.getData
para conceder la capacidad de consultar datos de tablas, Lector de datos de BigQuery es el rol con menos permisos que concede ese permiso.Asigna el rol adecuado a la cuenta principal. Para obtener información sobre cómo asignar un rol de gestión de identidades y accesos a un recurso de BigQuery, consulta el artículo sobre cómo controlar el acceso a los recursos con la gestión de identidades y accesos.
Siguientes pasos
- Para ver una lista de todos los roles y permisos de gestión de identidades y accesos de BigQuery, consulta el artículo Roles y permisos de gestión de identidades y accesos de BigQuery.
- Para obtener más información sobre cómo solucionar problemas con las políticas de permitir y denegar en IAM, consulta Solucionar problemas con las políticas.
- Para obtener más información sobre el analizador de políticas de la función Estadísticas de políticas, consulta el artículo Analizador de políticas para políticas de permiso.
- Para obtener más información sobre la herramienta para solucionar problemas con las políticas, consulta el artículo Usar la herramienta para solucionar problemas con las políticas.