Роли IAM в AWS
Bootstrap IAM role
Роль IAM для начальной настройки имеет следующие разрешения:- Операции EC2 и VPC: требуются для настройки VPC и кластеров EKS.
- Операции S3 (например,
s3:CreateBucket): нужны для создания бакетов для хранилища ClickHouse BYOC. - Операции IAM (например,
iam:CreatePolicy): нужны, чтобы контроллеры могли создавать дополнительные роли (подробности см. в следующем разделе). - Операции EKS: ограничены ресурсами, имена которых начинаются с префикса
clickhouse-cloud.
Дополнительные роли IAM, создаваемые контроллером
ПомимоClickHouseManagementRole, создаваемой через CloudFormation, контроллер создаст ещё несколько ролей.
Эти роли принимают на себя приложения, работающие в EKS-кластере клиента:
- Роль State Exporter
- Компонент ClickHouse, который передаёт информацию о состоянии сервиса в ClickHouse Cloud.
- Требует разрешения на запись в очередь SQS, принадлежащую ClickHouse Cloud.
- Load-Balancer Controller
- Стандартный контроллер AWS для балансировщика нагрузки.
- Контроллер EBS CSI для управления томами сервисов ClickHouse.
- External-DNS
- Распространяет конфигурацию DNS в Route 53.
- Cert-Manager
- Выпускает TLS-сертификаты для доменов сервиса BYOC.
- Cluster Autoscaler
- При необходимости изменяет размер группы узлов.
- Хранилище мониторинга (Thanos)
- Принимается на себя рабочими нагрузками Prometheus и Thanos в вашем кластере.
- Записывает и читает метрики долговременного хранения, ограничиваясь бакетом мониторинга в вашем собственном аккаунте.
data-plane-mgmt позволяет компоненту Control Plane ClickHouse Cloud приводить к желаемому состоянию необходимые пользовательские ресурсы, такие как ClickHouseCluster и Istio Virtual Service/Gateway.
Сервисные аккаунты GCP
Сервисный аккаунт Bootstrap
Сервисному аккаунту Bootstrap назначаются пользовательские роли уровня проекта со следующими разрешениями:- Общие: Базовые разрешения на чтение и идентификацию.
- VPC: Управление VPC, подсетями, маршрутизацией и подключениями Private Service Connect, которые используются для размещения вашей инфраструктуры BYOC.
- Кластер: Управление кластерами GKE и ресурсами внутри кластера.
- Хранилище: Используется для управления бакетами Cloud Storage, применяемыми для резервных копий ClickHouse, общего состояния и данных мониторинга.
- Роль IAM: Управление сервисными аккаунтами и пользовательскими ролями внутри проекта. Эта роль не дает возможности создавать ключи сервисных аккаунтов, привязывать политики организации или изменять какие-либо ресурсы в других проектах.
Дополнительные сервисные аккаунты, создаваемые контроллером
Помимо сервисного аккаунтаclickhouse-management, созданного через Terraform в рамках онбординга, при подготовке вашего первого сервиса BYOC Control Plane ClickHouse (аутентифицируясь как clickhouse-management) создает в вашем проекте дополнительные сервисные аккаунты для определенных внутрикластерных рабочих нагрузок. Каждый из них создается с минимальным набором разрешений для одной конкретной задачи.
- Сервисный аккаунт среды выполнения узлов GKE
- Привязывается к каждой виртуальной машине узла GKE в вашем кластере BYOC.
- Используется Кубелетом, локальными для узла агентами и коллекторами Cloud Operations для отправки журналов и метрик, а также подсистемой загрузки образов для скачивания образов контейнеров.
- Сервисный аккаунт скрейпера биллинга
- Используется автономной рабочей нагрузкой скрейпера для сбора телеметрии биллинга.
- Сервисный аккаунт мониторинга
- Целевой сервисный аккаунт для стека мониторинга, работающего в вашем кластере. Используется для чтения и записи в долговременное хранилище метрик в бакете GCS, выделенном для этого развертывания.
- Сервисный аккаунт управления средой выполнения ClickHouse
- Используется контроллером управления плоскостью данных среды выполнения ClickHouse, который выполняет операции второго дня, такие как управление конечными точками Private Service Connect, корректировка жизненного цикла бакета и ротация сервисных аккаунтов.
state-exporter олицетворять его. Ключевой материал при этом не используется, а сервисный аккаунт, публикующий данные в Pub/Sub, не имеет никаких разрешений в вашем проекте.
Роли и удостоверения в Azure
Сервисный субъект онбординга
Онбординг с помощью модуля Terraform для Azure создает в вашем тенанте мультитенантное приложение как Enterprise Application (сервисный субъект) в соответствии с рекомендациями Azure по межтенантной аутентификации. Сервисному субъекту назначается пользовательская роль с минимально необходимыми привилегиями, действующая в рамках целевой подписки и предоставляющая следующие разрешения:- Сеть: управление VNet, подсетями, общедоступными IP-адресами, NAT-шлюзами, группами сетевой безопасности и зонами DNS, в которых размещена ваша инфраструктура BYOC.
- Кластер: управление кластерами AKS и пулами узлов.
- Хранилище: управление аккаунтами хранилища и контейнерами BLOB-объектов, используемыми для данных ClickHouse, резервных копий и данных мониторинга.
- Идентификация: управление назначаемыми пользователем управляемыми идентификаторами и их учетными данными федеративной идентификации в рамках подписки.
- Авторизация: управление определениями пользовательских ролей и назначениями ролей. Все разрешения ограничены целевой подпиской — роль не может управлять ресурсами в других подписках или тенантах.
Дополнительные управляемые удостоверения, создаваемые контроллером
При подготовке сервисов BYOC Control Plane ClickHouse создаёт в вашей подписке управляемые идентификаторы, назначаемые пользователем. Каждое из них федеративно связано с определённым сервисным аккаунтом Kubernetes (Workload Identity) и имеет узкий набор разрешений для одной конкретной цели:- Удостоверение для каждого сервиса
- Используется каждым сервисом ClickHouse для доступа к собственному аккаунту хранилища, содержащему данные таблиц и резервные копии, через пользовательскую роль для хранилища BLOB-объектов, область действия которой ограничена этим аккаунтом хранилища.
- При восстановлении сервиса из резервной копии он также получает доступ только для чтения к контейнеру резервных копий исходного сервиса.
- Общее удостоверение инфраструктуры
- Используется контроллером управления плоскостью данных среды выполнения ClickHouse для операций второго дня, таких как управление сервисами Private Link.
- Удостоверение мониторинга
- Федеративно связано с рабочей нагрузкой Thanos в вашем кластере через пользовательскую роль, область действия которой ограничена доступом к хранилищу мониторинга.
- Выполняет запись и чтение долговременного хранения метрик в вашей собственной подписке.
state-exporter внутри кластера получать для него токены без обмена секретами. Удостоверение, публикующее данные в Service Bus, не имеет никаких разрешений в вашей подписке.
Это отличается от AWS, где публикующая роль создаётся в вашем собственном аккаунте и принимает роль на стороне ClickHouse для доступа к очереди. В GCP и Azure публикующее удостоверение полностью находится на стороне ClickHouse, а ваш кластер лишь федеративно связывается с ним, поэтому для этого потока нет дополнительных разрешений в вашем аккаунте, которые вам нужно было бы проверять. Сам исходящий трафик учтён в разделе сетевые границы.