跳转到内容
搜索文档

使用 Cloudflare Tunnel 和网络策略访问并保护 MySQL 数据库

最后更新 查看 MarkdownAgent 设置

使用 Cloudflare Tunnel 的私有网络,用户可以连接到任意非基于浏览器的 TCP/UDP 应用程序,如数据库。您可以设置实施零信任控制的网络策略,以定义谁和什么可以使用 Cloudflare One 客户端访问这些应用程序。

在本教程结束时,通过网络策略的用户将能够访问通过 TCP 端口 3306 上的 Cloudflare Tunnel 可用的远程 MySQL 数据库。

准备工作

确保您拥有:

  • 一个监听远程连接并配置了可以远程连接的用户的 MySQL 数据库
  • (可选)账户中已启用解析器策略

创建 Cloudflare Tunnel

在您私有网络中的服务器上安装 cloudflared。此服务器应具有到 MySQL 数据库的连接。

  1. 登录 Cloudflare 仪表板,转到 Networking(网络) > Tunnels(隧道)

    Go to Tunnels ↗
  2. 选择 Create a tunnel(创建隧道)

  3. 为您的隧道输入名称。我们建议选择能够反映您希望通过此隧道连接的资源类型的名称(例如,enterprise-VPC-01)。

  4. 选择 Create Tunnel(创建隧道)

  5. 选择您的操作系统,然后复制安装命令并在您的源服务器的终端上运行。

  6. 等待隧道连接。连接建立后,选择 Continue(继续)

添加私有网络路由

  1. 在 Cloudflare 仪表板中,转到 Networking(网络) > Routes(路由)

    Go to Routes ↗
  2. 选择 Create route(创建路由) > Tunnel CIDR(隧道 CIDR)。选择您刚刚创建的隧道,输入您的 MySQL 服务器的私有 IP/CIDR(例如 10.128.0.175/32),然后选择 Create route(创建路由)

3.(可选)重复操作以针对您的内部 DNS 服务器的私有 IP/CIDR 创建第二条路由。

应用程序和(可选的)DNS 服务器现在已连接到 Cloudflare。

创建 Gateway 网络策略

  1. 转到 Traffic policies(流量策略) > Network policies(网络策略)
  2. 添加一条针对 MySQL 数据库的私有 IP 地址和端口(默认为端口 3306)的网络策略。以下示例允许使用 @example.com 电子邮件地址注册到 Cloudflare One 客户端的用户访问数据库。该网络策略还可以将设备状态检查考虑在内。
选择器 运算符 逻辑 操作
Destination IP(目标 IP) in 10.128.0.175 And(且) Allow(允许)
Destination Port(目标端口) in 3306 And(且)
User Email(用户电子邮件) matches regex .*example.com

除了上面的 Allow(允许) 规则外,Cloudflare 还推荐在您的网络策略列表底部添加一条全部阻止 (catch-all block) 策略,以实施默认拒绝模式。

现在,获得允许的 Cloudflare One 客户端用户可以使用他们选择的 MySQL 客户端连接到位于 10.128.0.175 的 MySQL 服务器。

##(可选)创建 Gateway 解析器策略

为了允许用户使用内部主机名而不是私有 IP 地址访问 MySQL 数据库,请配置 Gateway 解析器策略。

  1. 转到 Traffic policies(流量策略) > Resolver policies(解析器策略)

  2. 选择 Add a policy(添加策略)

  3. 创建一个表达式以匹配应用程序的私有主机名,如以下示例所示:

    选择器 运算符
    Domain(域名) in internalrecord.com
  4. Select DNS resolver(选择 DNS 解析器) 中,选择 Configure custom DNS resolvers(配置自定义 DNS 解析器)

  5. 输入您的 DNS 服务器的私有 IP 地址。

  6. 在下拉菜单中,选择 <IP-address> - Private

7.(可选)输入自定义端口。

  1. 选择 Create policy(创建策略)

如果您的内部 DNS 服务器拥有该 MySQL 数据库的 A 记录,用户可以使用此记录连接到服务器。例如,假设 BIND 服务器包含以下条目:

mysql IN A 10.128.0.175

获得允许的 Cloudflare One 客户端用户可以使用他们选择的 MySQL 客户端连接到位于 mysql.internalrecord.com 的 MySQL 数据库。

这篇文档对您有帮助吗?