Введение
- Вы создаете сервисный аккаунт Google Cloud с соответствующими разрешениями для GCS
- Вы генерируете HMAC-ключи для этого сервисного аккаунта
- Вы предоставляете эти HMAC-учетные данные ClickHouse Cloud
- ClickHouse Cloud использует эти учетные данные для доступа к вашим бакетам GCS
Предварительные требования
- Активный сервис ClickHouse Cloud
- Проект Google Cloud с включенным Cloud Storage
- Разрешения на создание сервисных аккаунтов и генерацию HMAC-ключей в вашем проекте GCP
Настройка
Создайте сервисный аккаунт Google Cloud
- В консоли Google Cloud перейдите в IAM & Admin → Service Accounts
- В левом меню выберите
Service accounts, затем нажмитеCreate service account:
Create and continueНазначьте сервисному аккаунту роль Storage Object User:Эта роль предоставляет доступ к объектам GCS на чтение и записьНажмите Continue, затем DoneСохраните адрес электронной почты сервисного аккаунта:Предоставьте сервисному аккаунту доступ к бакету
Вы можете предоставить доступ либо на уровне проекта, либо на уровне отдельного бакета.Вариант 1: Предоставить доступ к конкретным бакетам (рекомендуется)
- Перейдите в
Cloud Storage→Buckets - Нажмите на бакет, к которому хотите предоставить доступ
- Откройте вкладку
Permissions - В разделе “Permissions” нажмите
Grant accessдля субъекта, созданного на предыдущих шагах - В поле “New principals” введите адрес электронной почты вашего сервисного аккаунта
- Выберите подходящую роль:
- Storage Object User для доступа на чтение и запись
- Storage Object Viewer для доступа только для чтения
- Нажмите
Save - Повторите эти действия для всех остальных бакетов
Вариант 2: Предоставить доступ на уровне проекта
- Перейдите в
IAM & Admin→IAM - Нажмите
Grant access - Введите адрес электронной почты вашего сервисного аккаунта в поле
New principals - Выберите Storage Object User (или Storage Object Viewer для доступа только для чтения)
- Нажмите SAVE
Сгенерируйте HMAC-ключи для сервисного аккаунта
Перейдите вCloud Storage → Settings → Interoperability:Если раздела “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 — позже секретный ключ посмотреть уже не получится.Ниже приведены примеры ключей:Использование HMAC-ключей с ClickHouse Cloud
Теперь вы можете использовать учетные данные HMAC для доступа к GCS из ClickHouse Cloud. Для этого используйте табличную функцию GCS:HMAC-аутентификация в ClickPipes для GCS
ClickPipes использует ключи HMAC (Hash-based Message Authentication Code) для аутентификации в Google Cloud Storage.При настройке GCS ClickPipe:- Выберите
Credentialsв разделеAuthentication methodпри настройке ClickPipe - Укажите учетные данные HMAC, полученные на предыдущих шагах
Аутентификация через сервисный аккаунт пока не поддерживается — необходимо использовать ключи HMAC
URL GCS-бакета должен быть в формате:
https://storage.googleapis.com/<bucket>/<path> (не gs://)roles/storage.objectViewer, включающая:storage.objects.list: для получения списка объектов в бакетеstorage.objects.get: для чтения объектов
Рекомендации
Используйте отдельные сервисные аккаунты для разных сред
clickhouse-gcs-dev@project.iam.gserviceaccount.comclickhouse-gcs-staging@project.iam.gserviceaccount.comclickhouse-gcs-prod@project.iam.gserviceaccount.com
Применяйте принцип наименьших привилегий
- Используйте Storage Object Viewer для доступа только для чтения
- Предоставляйте доступ к конкретным бакетам, а не ко всему проекту
- При необходимости используйте условия на уровне бакета, чтобы ограничить доступ к определённым путям
Регулярно меняйте ключи HMAC
- Сгенерируйте новые ключи HMAC
- Обновите конфигурации ClickHouse, указав новые ключи
- Проверьте работу с новыми ключами
- Удалите старые ключи HMAC
Мониторинг доступа с помощью Cloud Audit Logs
- Перейдите в IAM & Admin → Audit Logs
- Найдите в списке Cloud Storage
- Включите
Admin Read,Data ReadиData Write logs - Используйте эти журналы для мониторинга шаблонов доступа и выявления аномалий