> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# BYOC 权限

> 在自有云基础设施上部署 ClickHouse

<div id="aws-iam-roles">
  ## AWS IAM 角色
</div>

<div id="bootstrap-iam-role">
  ### 引导 IAM 角色
</div>

引导 IAM 角色需要具备以下权限：

* **EC2 和 VPC 操作**：用于设置 VPC 和 EKS 集群。
* **S3 操作 (例如 `s3:CreateBucket`) **：用于为 ClickHouse BYOC Storage 创建 bucket。
* **IAM 操作 (例如 `iam:CreatePolicy`) **：供控制器创建其他角色所需 (详见下一节) 。
* **EKS 操作**：仅限名称以前缀 `clickhouse-cloud` 开头的资源。

<div id="additional-iam-roles-created-by-the-controller">
  ### 控制器创建的其他 IAM 角色
</div>

除了通过 CloudFormation 创建的 `ClickHouseManagementRole` 之外，控制器还会创建其他几个角色。

这些角色由运行在客户 EKS 集群中的应用来承担：

* **状态导出器角色**
  * 向 ClickHouse Cloud 报告服务健康信息的 ClickHouse 组件。
  * 需要具备向 ClickHouse Cloud 拥有的 SQS 队列写入的权限。
* **负载均衡控制器**
  * 标准的 AWS 负载均衡控制器。
  * 用于管理 ClickHouse 服务卷的 EBS CSI 控制器。
* **External-DNS**
  * 将 DNS 配置同步到 Route 53。
* **Cert-Manager**
  * 为 BYOC 服务域预配 TLS 证书。
* **集群自动扩缩器**
  * 根据需要调整节点组规模。

**K8s-control-plane** 和 **k8s-worker** 角色由 AWS EKS 服务承担。

最后，**`data-plane-mgmt`** 允许 ClickHouse Cloud 控制平面组件协调所需的自定义资源，例如 `ClickHouseCluster` 以及 Istio Virtual Service/Gateway。

<div id="gcp-service-accounts">
  ## GCP 服务账号
</div>

<div id="bootstrap-service-account">
  ### 引导服务账号
</div>

引导服务账号会被授予项目级自定义角色，这些角色具备以下权限：

* **通用**：基础只读和身份相关权限。
* **VPC**：管理承载你的 BYOC 基础设施的 VPC、子网、路由以及 Private Service Connect 附加连接。
* **集群**：管理 GKE 集群及集群内资源。
* **存储**：用于管理存放 ClickHouse 备份、共享状态和监控数据的 Cloud Storage 存储桶。
* **IAM 角色**：管理项目内的服务账号和自定义角色。此角色不授予创建服务账号密钥、绑定组织策略或操作其他项目中任何资源的能力。

<div id="additional-service-accounts-created-by-the-controller">
  ### 控制器创建的其他服务账号
</div>

除了在 onboarding 过程中通过 Terraform 创建的 `clickhouse-management` 服务账号外，当你预配首个 BYOC 服务时，ClickHouse 的 控制平面 (以 `clickhouse-management` 身份进行身份验证) 会在你的项目中为特定的集群内 workload 创建其他服务账号。每个账号都只授予一组权限范围严格且用途单一的权限。

* **GKE 节点运行时身份**
  * 附加到你的 BYOC 集群中的每个 GKE 节点虚拟机。
  * 供 kubelet 节点代理、节点本地 agent 以及 Cloud Operations collectors 发送日志和指标，也供镜像拉取子系统下载容器镜像。
* **计费抓取器身份**
  * 由独立运行的抓取器 workload 用于收集计费 telemetry。
* **监控身份**
  * 作为在你的集群中运行的 monitoring stack 的目标身份。
  * 用于对专用于此部署的 GCS 存储桶中的长期指标存储进行读写。
* **ClickHouse 运行时管理身份**
  * 由 ClickHouse 的运行时数据平面管理控制器使用，该控制器负责处理第 2 天运维操作，例如 Private Service Connect 端点管理、存储桶生命周期调整以及服务账号轮换。

<div id="azure-roles-and-identities">
  ## Azure 角色与身份
</div>

<div id="onboarding-service-principal">
  ### Onboarding 服务主体
</div>

使用 [Azure Terraform 模块](https://github.com/ClickHouse/terraform-byoc-onboarding/tree/main/modules/azure) 进行 Onboarding 时，将遵循 Azure 的跨租户身份验证指南，在你的租户中将多租户应用程序预配为 Enterprise Application (服务主体) 。该服务主体会被授予作用域为目标订阅的最小权限自定义角色，包含以下权限：

* **网络**：管理承载 BYOC 基础设施的 VNet、子网、公网 IP、NAT 网关、网络安全组和 DNS 区域。
* **集群**：管理 AKS 集群和节点池。
* **存储**：管理用于存储 ClickHouse 数据、备份和监控数据的存储账户及 Blob 容器。
* **身份**：管理订阅中的用户分配托管标识及其联合身份凭据。
* **授权**：管理自定义角色定义和角色分配。所有权限均限定在目标订阅范围内——该角色无法操作其他订阅或租户中的资源。

<div id="additional-managed-identities-created-by-the-controller">
  ### 控制器创建的其他托管标识
</div>

预配 BYOC 服务时，ClickHouse 控制平面会在您的订阅中创建用户分配的托管标识。每个标识都与特定的 Kubernetes 服务账号 (Workload Identity) 建立联合，并仅具有范围有限、用途单一的权限集：

* **每服务标识**
  * 每个 ClickHouse 服务使用此标识，通过作用域限定为该存储账户的自定义 Blob 存储角色，访问其自身存储账户中的表数据和备份。
  * 从备份还原服务时，该服务还会获得对源服务备份容器的只读访问权限。
* **共享基础设施标识**
  * ClickHouse 运行时数据平面管理控制器将其用于 Private Link 服务管理等第 2 天运维操作。
