提高 TiDB Dashboard 安全性

    TiDB Dashboard 的账号体系与 TiDB SQL 用户一致。默认部署情况下,TiDB 的 root 用户没有密码,因而访问 TiDB Dashboard 也不需要密码验证。这将会给恶意访问者极大的集群权限,包括执行特权 SQL 等。

    建议的措施:

    • 为 TiDB 用户设置一个强密码。请参见 了解详情。

    TiDB Dashboard 通过 PD Client 端口提供服务,默认为 http://IP:2379/dashboard/。尽管 TiDB Dashboard 需要验证身份,但 PD Client 端口上承载的其他 PD 内部特权接口不需要验证身份,且能进行特权操作,例如 。因此,将 PD Client 端口直接暴露给外部网络具有极大的风险。

    建议的措施:

    在测试环境中,您可能需要配置防火墙开放 TiDB Dashboard 端口供外部访问。

    当部署了多个 PD 实例时,其中仅有一个 PD 实例会真正运行 TiDB Dashboard,访问其他 PD 实例时会发生浏览器重定向,因此需要确保防火墙配置了正确的 IP 地址。关于该机制的详情,可参阅 TiDB Dashboard 多 PD 实例部署 章节。

    使用 TiUP 部署工具时,可使用以下命令查看实际运行 TiDB Dashboard 的 PD 实例地址(将 CLUSTER_NAME 替换为集群名称):

    输出即为实际 TiDB Dashboard 地址。

    该功能在 TiUP Cluster v1.0.3 或更高版本部署工具中提供。

    升级 TiUP Cluster 步骤 shell tiup update --self tiup update cluster --force

    以下是一个样例输出:

    在这个样例中,需要为防火墙配置开放 IP 192.168.0.1232379 端口入站访问,并通过 访问 TiDB Dashboard。

    如前文所述,PD Client 端口下提供的服务不仅有 TiDB Dashboard(位于 http://IP:2379/dashboard/),还有其他 PD 内部特权接口(如 )。因此,使用反向代理将 TiDB Dashboard 提供给外部网络时,应当确保仅提供 前缀下的服务,而非该端口下所有服务,避免外部网络能通过反向代理访问到 PD 内部特权接口。

    建议的措施:

    为了进一步加强传输层安全性,可以为反向代理开启 TLS,甚至可以引入 mTLS 实现访问用户的证书验证。