Перейти к основному содержанию
В этом руководстве показано, как безопасно пройти аутентификацию в Google Cloud Storage (GCS) и получить доступ к своим данным из ClickHouse Cloud.

Введение

ClickHouse Cloud подключается к GCS с помощью HMAC-ключей (Hash-based Message Authentication Code), связанных с сервисным аккаунтом Google Cloud. Этот подход обеспечивает безопасный доступ к вашим бакетам GCS без прямой передачи учетных данных в запросах. Как это работает:
  1. Вы создаете сервисный аккаунт Google Cloud с соответствующими разрешениями для GCS
  2. Вы генерируете HMAC-ключи для этого сервисного аккаунта
  3. Вы предоставляете эти HMAC-учетные данные ClickHouse Cloud
  4. ClickHouse Cloud использует эти учетные данные для доступа к вашим бакетам GCS
Этот подход позволяет централизованно управлять доступом к бакетам GCS через политики IAM сервисного аккаунта, поэтому предоставлять или отзывать доступ можно без изменения политик отдельных бакетов.

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

Чтобы следовать этому руководству, вам потребуется:
  • Активный сервис ClickHouse Cloud
  • Проект Google Cloud с включенным Cloud Storage
  • Разрешения на создание сервисных аккаунтов и генерацию HMAC-ключей в вашем проекте GCP

Настройка

1

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

  1. В консоли Google Cloud перейдите в IAM & Admin → Service Accounts
  1. В левом меню выберите Service accounts, затем нажмите Create service account:
Введите имя и описание для сервисного аккаунта, например:
Service account name: clickhouse-gcs-access (or your preferred name)
Service account description: Service account for ClickHouse Cloud to access GCS buckets
Нажмите Create and continueНазначьте сервисному аккаунту роль Storage Object User:Эта роль предоставляет доступ к объектам GCS на чтение и запись
Для доступа только для чтения используйте Storage Object Viewer Для более детального управления можно создать пользовательскую роль
Нажмите Continue, затем DoneСохраните адрес электронной почты сервисного аккаунта:
2

Предоставьте сервисному аккаунту доступ к бакету

Вы можете предоставить доступ либо на уровне проекта, либо на уровне отдельного бакета.

Вариант 1: Предоставить доступ к конкретным бакетам (рекомендуется)

  1. Перейдите в Cloud StorageBuckets
  2. Нажмите на бакет, к которому хотите предоставить доступ
  3. Откройте вкладку Permissions
  4. В разделе “Permissions” нажмите Grant access для субъекта, созданного на предыдущих шагах
  5. В поле “New principals” введите адрес электронной почты вашего сервисного аккаунта
  6. Выберите подходящую роль:
  • Storage Object User для доступа на чтение и запись
  • Storage Object Viewer для доступа только для чтения
  1. Нажмите Save
  2. Повторите эти действия для всех остальных бакетов

Вариант 2: Предоставить доступ на уровне проекта

  1. Перейдите в IAM & AdminIAM
  2. Нажмите Grant access
  3. Введите адрес электронной почты вашего сервисного аккаунта в поле New principals
  4. Выберите Storage Object User (или Storage Object Viewer для доступа только для чтения)
  5. Нажмите SAVE
Рекомендация по безопасностиПредоставляйте доступ только к тем бакетам, которые нужны ClickHouse, а не разрешения на уровне всего проекта.
3

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

Перейдите в Cloud StorageSettingsInteroperability:Если раздела “Access keys” нет, нажмите Enable interoperability accessВ разделе “Access keys for service accounts” нажмите Create a key for a service account:Выберите сервисный аккаунт, который вы создали ранее (например, clickhouse-gcs-access@your-project.iam.gserviceaccount.com)Нажмите Create key:На экране отобразится HMAC-ключ. Сразу сохраните и Access Key, и Secret — позже секретный ключ посмотреть уже не получится.Ниже приведены примеры ключей:
Access Key: GOOG1EF4YBJVNFQ2YGCP3SLV4Y7CMFHW7HPC6EO7RITLJDDQ75639JK56SQVD
Secret: nFy6DFRr4sM9OnV6BG4FtWVPR25JfqpmcdZ6w9nV
ВажноНадёжно сохраните эти учетные данные. После закрытия этого экрана получить секрет повторно будет нельзя. Если вы потеряете секрет, вам потребуется сгенерировать новые ключи.

Использование HMAC-ключей с ClickHouse Cloud

Теперь вы можете использовать учетные данные HMAC для доступа к GCS из ClickHouse Cloud. Для этого используйте табличную функцию GCS:
SELECT *
FROM gcs(
    'https://storage.googleapis.com/clickhouse-docs-example-bucket/epidemiology.csv',
    'GOOG1E...YOUR_ACCESS_KEY',
    'YOUR_SECRET_KEY',
    'CSVWithNames'
);
Используйте подстановочные шаблоны для нескольких файлов:
SELECT *
FROM gcs(
'https://storage.googleapis.com/clickhouse-docs-example-bucket/*.parquet',
'GOOG1E...YOUR_ACCESS_KEY',
'YOUR_SECRET_KEY',
'Parquet'
);

HMAC-аутентификация в ClickPipes для GCS

ClickPipes использует ключи HMAC (Hash-based Message Authentication Code) для аутентификации в Google Cloud Storage.При настройке GCS ClickPipe:
  1. Выберите Credentials в разделе Authentication method при настройке ClickPipe
  2. Укажите учетные данные HMAC, полученные на предыдущих шагах
Аутентификация через сервисный аккаунт пока не поддерживается — необходимо использовать ключи HMAC URL GCS-бакета должен быть в формате: https://storage.googleapis.com/<bucket>/<path> (не gs://)
Ключи HMAC должны быть связаны с сервисным аккаунтом, которому назначена роль roles/storage.objectViewer, включающая:
  • storage.objects.list: для получения списка объектов в бакете
  • storage.objects.get: для чтения объектов

Рекомендации

Используйте отдельные сервисные аккаунты для разных сред

Создайте отдельные сервисные аккаунты для сред разработки, стейджинга и продакшна. Например:
  • clickhouse-gcs-dev@project.iam.gserviceaccount.com
  • clickhouse-gcs-staging@project.iam.gserviceaccount.com
  • clickhouse-gcs-prod@project.iam.gserviceaccount.com
Это позволит вам легко отозвать доступ для конкретной среды, не затрагивая остальные.

Применяйте принцип наименьших привилегий

Предоставляйте только минимально необходимые разрешения:
  • Используйте Storage Object Viewer для доступа только для чтения
  • Предоставляйте доступ к конкретным бакетам, а не ко всему проекту
  • При необходимости используйте условия на уровне бакета, чтобы ограничить доступ к определённым путям

Регулярно меняйте ключи HMAC

Настройте график ротации ключей:
  • Сгенерируйте новые ключи HMAC
  • Обновите конфигурации ClickHouse, указав новые ключи
  • Проверьте работу с новыми ключами
  • Удалите старые ключи HMAC
Google Cloud не устанавливает срок действия ключей HMAC автоматически, поэтому вам нужно внедрить собственную политику ротации.

Мониторинг доступа с помощью Cloud Audit Logs

Включите Cloud Audit Logs для Cloud Storage и отслеживайте доступ:
  1. Перейдите в IAM & Admin → Audit Logs
  2. Найдите в списке Cloud Storage
  3. Включите Admin Read, Data Read и Data Write logs
  4. Используйте эти журналы для мониторинга шаблонов доступа и выявления аномалий
Последнее изменение 10 июня 2026 г.