Перейти к основному содержанию
Вы можете записаться в список ожидания закрытой предварительной версии здесь.
В этой статье описаны разрешения GCP IAM, необходимые ClickPipes для аутентификации в Google Cloud Pub/Sub и чтения данных из ваших топиков, а также то, как настроить сервисный аккаунт с ровно этими разрешениями.

Предварительные требования

Чтобы выполнить действия из этого руководства, вам понадобятся:
  • Активный сервис ClickHouse Cloud
  • Проект GCP с топиком Pub/Sub, из которого вы хотите выполнять приём данных
  • Разрешения IAM в этом проекте на создание сервисных аккаунтов и назначение ролей

Модель аутентификации

ClickPipes for Pub/Sub аутентифицируется в GCP с помощью JSON-ключа сервисного аккаунта. Когда вы создаёте пайп, вы загружаете файл ключа; ClickPipes шифрует его при хранении и использует во время выполнения для следующих задач:
  • получать список топиков в вашем проекте и читать их,
  • создавать и удалять управляемую подписку, которую ClickPipes использует для получения сообщений,
  • получать сообщения из этой подписки,
  • (необязательно) читать нативные схемы Pub/Sub из реестра схем.
На данный момент варианты с Workload Identity или вставкой учётных данных напрямую не поддерживаются — JSON-ключ сервисного аккаунта остаётся единственным поддерживаемым методом аутентификации.

Необходимые разрешения

Для ClickPipes требуются следующие IAM-разрешения в проекте GCP, которому принадлежит топик. Они охватывают весь жизненный цикл пайпа: обнаружение (получение списка топиков, проверка и сэмплирование), управление подписками, стабильную ингестию и очистку.

Доступ к топику (обнаружение и проверка)

Жизненный цикл подписки (обнаружение и ингестия)

Доступ к схемам (необязательно — только для нативных топиков Avro/Protobuf)

Предопределённые роли

Настройка

Создайте пользовательскую роль (рекомендуется)

Чтобы предоставить доступ по принципу наименьших привилегий, создайте пользовательскую роль ровно с теми разрешениями, которые нужны ClickPipes. Это можно сделать с помощью CLI gcloud:
Или в консоли GCP перейдите в IAM & Admin → Roles → Create role и добавьте разрешения, перечисленные в разделе Required permissions.
Необязательные разрешенияДобавьте pubsub.schemas.get в список --permissions, если выполняете приём из топиков, использующих нативные схемы Avro или Protobuf Pub/Sub. В противном случае не добавляйте его, чтобы роль оставалась минимально необходимой.
Если не хотите создавать пользовательскую роль, можно вместо этого назначить roles/pubsub.editor.

Создайте сервисный аккаунт

Создайте отдельный сервисный аккаунт для ClickPipe:

Назначьте роль сервисному аккаунту

Назначьте созданную роль (или roles/pubsub.editor) сервисному аккаунту на уровне проекта:

Создайте и скачайте ключ сервисного аккаунта

Создайте JSON-ключ для сервисного аккаунта и скачайте его на локальный компьютер:
Загрузите файл clickpipes-pubsub-key.json в интерфейсе ClickPipes при создании пайпа.
Обращайтесь с этим ключом как с секретомКлючи сервисного аккаунта предоставляют доступ к вашему проекту GCP. Храните файл в безопасном месте, не добавляйте его в систему контроля версий и регулярно заменяйте. После загрузки ClickPipes шифрует ключ при хранении.

Примечания

  • pubsub.topics.attachSubscription требуется для ресурса топика, а не подписки. Это часто упускают из виду, когда выдают только разрешения на уровне подписки.
  • Если ваш топик не использует нативную схему Pub/Sub (Avro или Protobuf), разрешение pubsub.schemas.get не требуется.
  • Управляемые подписки именуются clickpipes-{pipeID} и имеют срок подтверждения 60 с, хранение сообщений в течение 7 дней и включенное упорядочивание сообщений.
  • Эфемерные подписки для обнаружения именуются clickpipes-discovery-{uuid} и имеют срок подтверждения 10 с, хранение в течение 10 минут и TTL с автоматическим истечением через 24 часа.
  • ClickPipes считает ошибки PermissionDenied и Unauthenticated не подлежащими повторным попыткам — если разрешение отсутствует, пайп сразу завершается с ошибкой вместо бесконечных повторных попыток.
Последнее изменение 2 июля 2026 г.