本文旨在描述如何快速使用CloudFlare的ZeroTrust服务将本地应用安全的发布到互联网,使得企业用户在Clientless的场景下通过互联网安全的访问公司内部服务,对于底层原理请参阅此系列开篇章节CloudFlare ZTNA架构介绍。
步骤一:登陆CloudFlare的账户,点击右侧ZeroTrust菜单即可进入如下图所示ZeroTrust服务主页。

步骤二:选择Networks下的Tunnels选项,来创建本地应用连接到Cloudflare云端的加密隧道。

步骤三:为Tunnel命名。

步骤四:由于建立隧道需要在应用服务本地部署cloudflared,作为connector来连接到云端,所以根据实际情况来部署您的connector(cloudflared),此处以容器方式举例,点击Docker,可以直接粘贴docker run开头的命令行在本地部署容器环境中部署。

步骤五:配置公网域名到内部本地服务的映射关系,公网域名需要提前申请(可以使用第三方域名服务商注册,然后托管于cloudflare,也可以直接在cloudflare上注册,本系列文章以demo.net为例),根据不同服务可以设置不同的subdomain来区分,比如目前我发布的是一个测速应用服务,所以配置了subdomain为speed(请记住此处的subdomain,后续会用到)。内部应用服务的地址为192.168.88.110,端口为8088,服务为http类型。(配置完成后会自动产生speed.demo.net域名的CNAME记录映射到tunnel)

步骤六:如果本地cloudflared部署完成,且访问internet可达,此时Tunnel将变为HEALTHY状态。

步骤七:目前已经可以通过浏览器访问speed.demo.net到你的内部服务应用了。(自始至终未使用任何公网IP)

步骤八:对于企业内部应用来说是不能直接暴露于公网,无任何访问控制的。所以还需要加入访问控制的策略,只容许合法用户进行访问。点击Access的菜单下的Applications选择Self-hosted。

步骤九:配置应用的访问规则,填入应用名称,应用的公网域名,此公网域名需要与步骤五中记录的域名保持一致。

步骤十:为应用服务关联访问策略,此处由于未配置访问策略,需要新建(在步骤九当中点击Create new policy)。如下图所示配置容许策略,当Emails为指定值时,进行一次性密码验证(这是缺省的验证方法,CloudFlare提供接入IDP来进行多样化的认证及SSO登陆,此部分内容不在本文的讨论范围),在Value处可以配置你自己的邮箱。

步骤十一:此时再次访问speed.demo.net(由于之前已经在无安全控制的情况下访问过此应用服务,再次访问请使用浏览器的隐身模式)将会出现一次性密码登陆页面,输入步骤十中Value部分的邮箱名称,然后在邮箱中查看一次性的code进行输入就可以登陆成功了。


