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

# BYOC 网络安全

> 在您自有的云基础设施中部署 ClickHouse

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

<div id="connection-between-clickhouse-and-byoc">
  ## ClickHouse 控制平面与您的 BYOC VPC 之间的连接
</div>

ClickHouse Cloud 控制平面会维护多种类型的连接，以运行和支持您的 BYOC 部署：

| 目的                            | 连接类型                         | 说明                                                                              |
| ----------------------------- | ---------------------------- | ------------------------------------------------------------------------------- |
| **日常运维 — Kubernetes API 服务器** | 通过 IP 过滤的公网 (默认) 或 Tailscale | 管理服务通过公网与 EKS API 服务器通信，并受 IP 允许列表限制。初始部署完成后，您也可以选择切换到 Tailscale 以实现私有访问。       |
| **日常运维 — AWS API**            | ClickHouse VPC → AWS         | 管理服务从 ClickHouse Cloud 自有的 VPC 调用 AWS API (例如 EKS、EC2) 。这不涉及您的 VPC 或 Tailscale。 |
| **故障排查 — ClickHouse 服务**      | Tailscale                    | ClickHouse 工程师通过 Tailscale 访问 ClickHouse 服务 (例如系统表) 进行诊断。                       |
| **故障排查 — Kubernetes API 服务器** | Tailscale                    | ClickHouse 工程师通过 Tailscale 访问 EKS API 服务器以进行集群诊断。                               |

下一节将介绍 **Tailscale** 私有网络如何用于故障排查以及可选的管理访问。

<div id="tailscale-private-network">
  ## Tailscale 私有网络
</div>

Tailscale 在 ClickHouse Cloud 的管理服务与你的 BYOC 部署之间提供零信任的私有网络连接。借助这一安全通道，ClickHouse 工程师无需公共互联网访问或复杂的 VPN 配置，即可执行故障排查和管理操作。

<div id="tailscale-overview">
  ### 概述
</div>

Tailscale 会在 ClickHouse 控制平面 (位于 ClickHouse 的 VPC 中) 与您的 BYOC 数据平面 (位于您的 VPC 中) 之间建立一条加密的私有网络隧道。此连接仅用于：

* **管理操作**：ClickHouse 管理服务与您的 BYOC 基础设施进行协同
* **故障排查访问**：ClickHouse 工程师访问 Kubernetes API 服务器和 ClickHouse 系统表以进行诊断
* **指标访问**：ClickHouse 的集中式监控仪表盘会访问部署在您的 BYOC VPC 内的 Prometheus 栈中的指标，使 ClickHouse 工程师能够了解该环境的可观测性状态。

<Warning>
  Tailscale **仅用于管理和故障排查操作**。它**绝不会用于查询流量**或访问客户数据。所有客户数据都保留在您的 VPC 内，绝不会通过 Tailscale 连接传输。
</Warning>

<div id="how-tailscale-works">
  ### BYOC 中 Tailscale 的工作原理
</div>

<Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/zVOJwOIIMQy6wc9n/images/cloud/reference/byoc-tailscale-1.png?fit=max&auto=format&n=zVOJwOIIMQy6wc9n&q=85&s=856a5d0696abad3755ded732e09f16ca" size="lg" alt="BYOC Tailscale" border width="3484" height="1792" data-path="images/cloud/reference/byoc-tailscale-1.png" />

对于每个需要通过 Tailscale 访问的服务或端点，ClickHouse BYOC 会部署：

1. **Tailnet 地址注册**：每个端点都会注册一个唯一的 tailnet 地址 (例如，Kubernetes API 服务器的 `k8s.xxxx.us-east-1.aws.byoc.clickhouse-prd.com`)

2. **Tailscale agent 容器**：一个 Tailscale agent 容器会在你的 EKS 集群中运行，负责：
   * 连接到 Tailscale 协调服务器
   * 注册服务，使其可被发现
   * 与 Nginx pod (容器组) 协调网络设置

3. **Nginx pod (容器组) **：一个 Nginx pod (容器组) ，用于：
   * 终止来自 Tailscale 的 TLS 流量
   * 将流量路由到 EKS 集群内相应的 IP 地址

<div id="tailscale-connection-process">
  ### 网络连接过程
</div>

Tailscale 建立连接的过程如下：

1. **初始连接**：
   * 两端的 agent (ClickHouse 工程师的环境和你的 BYOC EKS 集群) 都会连接到 Tailscale 协调服务器
   * EKS 集群中的 agent 会注册 Kubernetes 服务，使其可被发现
   * ClickHouse 工程师必须先在内部申请相应权限，才能看到该服务

2. **连接模式**：
   * **直连模式**：agent 会尝试通过 NAT 穿透隧道建立直接连接
   * **中继模式**：如果直连模式失败，通信会回退到通过 Tailscale DERP (分布式加密中继协议) 服务器中继

3. **加密**：
   * 所有通信都会进行端到端加密
   * 每个 agent 都会生成自己的公钥/私钥密钥对 (类似于 PKI)
   * 无论使用直连模式还是中继模式，流量都会保持加密

<div id="tailscale-security">
  ### 安全功能
</div>

**仅出站连接**：

* EKS 集群中的 Tailscale agent 会向 Tailscale 协调/中继服务器发起出站连接
* **无需入站连接**——无需在安全组规则中允许流量入站到 Tailscale agent
* 这可减少攻击面，并简化网络安全配置

**访问控制**：

* 在 Tailscale 将工程师路由到客户端点之前，工程师必须先通过内部审批流程申请访问权限
* 访问具有时效性，并会自动过期
* 所有访问都会经过审计并记录日志

有关完整的数据访问策略——包括工程师可以查看的内容、基于证书的身份验证以及客户侧审计——请参阅 [ClickHouse data access](/zh/products/bring-your-own-cloud/reference/clickhouse-data-access)。

<div id="management-services-access">
  ### 管理服务访问
</div>

默认情况下，ClickHouse 管理服务通过 EKS API 服务器的公网 IP 地址访问您的 BYOC Kubernetes 集群，并且该地址仅允许来自 ClickHouse NAT gateway IP 地址的访问。

**可选的专用终结点配置**：

* 您可以将 EKS API 服务器配置为仅使用专用终结点
* 在这种情况下，管理服务将通过 Tailscale 访问 API 服务器 (类似于人工进行的故障排查访问)
* 同时会保留公网访问，作为紧急调查和支持需求的备用机制

<div id="tailscale-traffic-flow">
  ### 网络流量流向
</div>

**Tailscale 连接流程**：

1. EKS 集群中的 Tailscale agent → Tailscale 协调服务器 (出站)
2. 工程师机器上的 Tailscale agent → Tailscale 协调服务器 (出站)
3. 在 agent 之间建立直连或中继连接
4. 加密流量通过已建立的隧道传输
5. EKS 中的 Nginx pod (容器组) 终止 TLS 并将流量路由到内部服务

**不传输客户数据**：

* Tailscale 连接仅用于管理和故障排查
* 查询流量和客户数据绝不会经过 Tailscale
* 所有客户数据始终保留在您的 VPC 内

有关 Tailscale 在 BYOC 中如何实现的更多技术细节，请参阅 [Building ClickHouse BYOC on AWS blog post](https://clickhouse.com/blog/building-clickhouse-byoc-on-aws#tailscale-connection)。如需了解 ClickHouse 工程师在连接后可以读取哪些内容，以及 ClickHouse 如何审计此类访问，请参阅 [ClickHouse data access](/zh/products/bring-your-own-cloud/reference/clickhouse-data-access)。

<div id="network-boundaries">
  ## 网络边界
</div>

本节介绍客户 BYOC VPC 的不同网络流量边界：

* **入站**：进入客户 BYOC VPC 的流量。
* **出站**：源自客户 BYOC VPC 并发送到外部目标端的流量。
* **公网**：可通过公共互联网访问的网络端点。
* **私网**：只能通过私有连接访问的网络端点，例如 VPC peering、VPC Private Link 或 Tailscale。

**Istio 入口部署在 AWS NLB 后方，用于接收 ClickHouse 客户端流量。**

*入站，公网或私网*

Istio 入口网关负责终止 TLS。由 CertManager 使用 Let's Encrypt 签发的证书以 Secret 的形式存储在 EKS 集群中。由于 Istio 和 ClickHouse 位于同一 VPC 中，它们之间的流量由 [AWS 加密](https://docs.aws.amazon.com/whitepapers/latest/logical-separation/encrypting-data-at-rest-and--in-transit.html#:~:text=All%20network%20traffic%20between%20AWS,supported%20Amazon%20EC2%20instance%20types)。

默认情况下，入口可通过公网访问，并使用 IP allow list 进行过滤。客户可以配置 VPC peering 使其变为私网，并禁用公网连接。我们强烈建议设置 [IP 过滤器](/zh/products/cloud/guides/security/connectivity/setting-ip-filters) 以限制访问。

<div id="troubleshooting-access">
  ### 故障排查访问
</div>

*入站、私网*

ClickHouse Cloud 工程师需要通过 Tailscale 获取故障排查访问权限。在 BYOC 部署中，他们通过按需授予的证书式身份验证进行访问。有关完整的访问策略，请参阅 [ClickHouse data access](/zh/products/bring-your-own-cloud/reference/clickhouse-data-access)。

<div id="billing-scraper">
  ### 计费抓取器
</div>

*出站、私有*

计费抓取器从 ClickHouse 收集计费数据，并将其发送到由 ClickHouse Cloud 拥有的 S3 存储桶。

它以 sidecar 的形式与 ClickHouse server 容器一同运行，定期抓取 CPU 和内存指标。同一区域内的请求会通过 VPC 网关服务端点进行路由。

<div id="alerts">
  ### 告警
</div>

*出站，公网*

AlertManager 已配置为在客户的 ClickHouse 集群处于不健康状态时，向 ClickHouse Cloud 发送告警。

指标和日志都存储在客户的 BYOC VPC 内。日志当前本地存储在 EBS 中。后续更新中，它们将存储在 LogHouse 中；LogHouse 是 BYOC VPC 内的一项 ClickHouse 服务。指标使用 Prometheus 和 Thanos 技术栈，并存储在 BYOC VPC 本地。

<div id="service-state">
  ### 服务状态
</div>

*出站，公网*

状态导出器会将 ClickHouse 服务状态信息发送到 ClickHouse Cloud 所拥有的 SQS。
