Пользовательская роль IAM для вставки в определенный набор данных BigQuery
У меня есть несколько проектов для клиентов, которые записывают аналитические события в набор данных BigQuery. Настройка организована так:
1) Каждый проект GCP имеет свой собственный набор ресурсов GCP, и некоторые из них сообщают об аналитике с использованием API вставки BigQuery.
2) Существует один проект "Основная аналитика", который собирает все данные из разных проектов в стандартизированной таблице (все проекты записывают в одном и том же формате данных).
Я создал пользовательскую роль IAM в "Основной аналитике" с необходимыми разрешениями для выполнения операции вставки строки:
bigquery.datasets.get
bigquery.tables.get
bigquery.tables.updateData
Для каждого проекта клиента я создал уникальную учетную запись службы с указанной выше ролью. Это позволяет каждому ресурсу в любом проекте аутентифицировать и вставлять строки (но не создавать / удалять таблицы).
Проблема: что я действительно хочу сделать, так это ограничить учетные записи службы только для записи в конкретный набор данных, который принимает все данные. Вышеуказанная роль IAM позволяет учетной записи службы перечислять все наборы данных / таблицы в проекте "Основная аналитика" и вставлять в них.
Если я использую разрешения набора данных - добавьте электронную почту учетной записи службы в качестве пользователя в ACL набора данных - тогда это должно быть WRITER
роль набора данных, которая позволяет учетной записи службы создавать и удалять таблицы в наборе данных, который является слишком широким.
Объединение роли IAM с разрешениями набора данных приводит к объединению, поэтому WRITER
разрешение вступает в силу по более узкой роли IAM.
В любом случае я могу настроить роли / разрешения, чтобы разрешить каждой учетной записи службы вставлять и только вставлять в определенный набор данных?
1 ответ
Вы можете бросить bigquery.datasets.get
разрешение от пользовательской роли IAM, чтобы они не могли перечислить все наборы данных, а затем в разрешениях набора данных дать READER
роль вместо WRITER
пользователю для этого конкретного набора данных.