在Azure中,可以通过App Service快速部署,构建自定义站点(PaaS服务)。默认情况下,这些站点被访问URL都是面向公网,通过公网进行解析。为了最好的安全保障,是否可以有一种功能实现只能内网访问呢?并且为了在企业内部使用,还需要配置私有的自定义域名(如myapp.aaa)?
说明:虽然App Service_提供了可以集成虚拟网络(内网),但是这样的集成是指作为App Service__服务器实例可以访问到虚拟网络VNET_ 中的资源(如SQL Service_,内网API__等),而App Service__自身的访问还是通过公网URL__访问。所以它并不能实现内网访问App Service__目的_
分析需求,为了实现本文目标,在Azure中所需要创建的资源有:
1) 应用服务 App Service,部署应用并启用私有终结点(Private Endpoint),提供最终端的访问服务
2) 虚拟网络 VNET,企业的内网,只能在该网络中才能访问应用服务
3) 虚拟机VM,部署在虚拟网络中,一方面作为自定义DNS服务器,同时也作为内网客户端,测试内网访问应用服务是否成功
4) (可选)可解析的公网域名,主要用于App Service的自定义域名所有权验证,使用后可删除
5) (可选) 应用程序网关Application Gateway,实现关联内网自定义域名和应用服务App Service的网关
如资源已经创建,可跳过此部分
在 Azure 中创建 ASP.NET Core Web 应用:https://docs.azure.cn/zh-cn/app-service/quickstart-dotnetcore?tabs=netcore31&pivots=platform-windows
Using Private Endpoints for Azure Web App:https://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint
快速入门:使用 Azure 门户创建虚拟网络:https://docs.azure.cn/zh-cn/virtual-network/quick-create-portal
该虚拟机在本次实验中即作为自定义的DNS服务器,同时也作为实验中访问Web App 站点的客户端
快速入门:在 Azure 门户中创建 Windows 虚拟机:https://docs.azure.cn/zh-cn/virtual-machines/windows/quick-create-portal
PS: Private Endpoint启动成功后,App Service即无法从公网访问,需要在Virtual Network (myinternalvnet01)所在的VM中访问,但需要配置正确的DNS,CNAME及A记录,在下一节中即将介绍
Using Private Endpoints for Azure Web App:https://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint
根据Private Endpoint启用后的DNS配置文档,需要在内网的DNS服务器中配置两条DNS记录
myinternalapp01.chinacloudsites.cn
CNAME
myinternalapp01.privatelink.chinacloudsites.cn
myinternalapp01.privatelink.chinacloudsites.cn
A
10.3.1.4
私网IP地址可以在VNET中Connected devices(已连接设备)查看内网IP地址
RDP到VM(myinternalvm01) 并启用DNS服务
Private Endpoint DNS: https://docs.microsoft.com/en-us/azure/app-service/networking/private-endpoint#dns
根据以上的步骤,已经可以通过默认的App Service域名访问成功。接下来的步骤就是配置内网的自定义域名。如myapp.aaa。如果在内网DNS中直接配置CNAME指向App Service默认域名,虽然通过nslookup或者nameresolver.exe解析能够指向App Service的内网IP,但是在访问时候会遇见404错误
为了解决自定义域名访问404的问题,必须使此域名(myapp.aaa)与App Service的进行域名绑定,因为域名并没有aaa的顶级域名,所以通过验证域名所有权的方式无法实现绑定到aaa不是公认的域名。
此实验中,使用myapp.mylubu.com作为与App Service进行域名绑定,并验证域名所有权
1) 进入App Service的Custom Domain页面,点击Add custom domain按钮
2) 输入myapp.mylubu.com,点击 validate。提示Domain ownership验证失败,需要在DNS上配置一个CNAME记录和一个asuid.{subdomain}记录
3) 实验中使用的时Azure的Public DNS Zone,进入mylubu.com DNS Zone,添加CNAME记录
4) 添加asuid.myapp的TXT记录
5) 回到App Service的Custom Domain页面(#1), 重复验证myapp.mylubu.com域名,直至成功后绑定域名成功
6) 再次回到Public DNS Zone页面。删除为mylubu.com添加的CNAME和TXT记录
7) RDP到VM中,进入私网DNS服务器,为myapp.mylubu.com配置内网DNS CNAME记录。
8) 在VM中访问myapp.mylubu.com成功
PS:在验证域名所有权时,myapp.mylubu.com必须公网可解析
将现有的自定义 DNS 名称映射到 Azure 应用服务:https://docs.azure.cn/zh-cn/app-service/app-service-web-tutorial-custom-domain
创建内网应用程序网关,在网关中设置后端池为App Service。
登录Azure门户(中国区): https://portal.azure.cn/
选择Application gateways,点击“Add/Create”创建新的application gateway
Subscription为默认订阅或选择合适的订阅
Resource Group选择“myCorpRG”, 为第一节创建应用服务时所建,保持实验中所有资源在同一个组中
Application gateway name输入 myinternalappgateway01
Region选择China North 2,保持本次实验中所有资源在同一个区域
Tier 选择 Standard, 因实验中只需要开启Private IP地址即可
其他Instance Count, SKU size, HTTP2等设定。保持默认
Virtual Network中选择 myinternalvnet01
Subnet选择 appgatewaysubnet, 均在创建虚拟网络时准备好。
Next : Forntends页面中,Forntend IP address type选择 Private,并且Use a specific private IP address 设置为No,然系统自动分配一个内网IP。
Next : Backends 页面中,点击“Add a Backend Pool”, Name输入backendpool01,Target Type设置为App Services , Target选择 myinternalapp01
Next : Configuration 页面中,配置Routing rule, 点击Add a routing rule
点击Next : Tags
点击 Next : Review + Create。创建Application Gateway。
在Application Gateway中查看Backend Pool Healthy状态。等待状态值为正常后,RDP到VM中,使用Application Gateway的内网IP地址访问,验证是否成功访问App Service。
为内网域名myapp.aaa添加A记录,指定到Application Gateway的Private IP。
验证myapp.aaa成功访问app service
PS:当应用程序网关创建好之后,在Backend Health中查看后端池的健康状态非常重要。只有状态为Healthy的后端才能成功访问
使用 Azure 应用程序网关定向 Web 流量 - Azure 门户:https://docs.azure.cn/zh-cn/application-gateway/quick-create-portal
本文实验使用的所有资源模板文件下载:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章