微软Entra本地应用代理:零信任架构下的内网服务安全暴露方案

一、什么是微软Entra本地应用代理?

微软Entra本地应用代理(Microsoft Entra Application Proxy)是零信任架构(Zero Trust) 下的内网服务暴露解决方案,属于Microsoft Entra全球安全访问(Global Secure Access)的组件之一。它通过云端代理与本地连接器的组合,实现无需公网IP、无需暴露内网端口的安全访问,同时集成Microsoft Entra ID的身份认证(如SSO、条件访问),为内网应用(如Vaultwarden、企业内部系统)提供企业级安全保护。

它解决了传统Mesh VPN的子网接入问题与公网反代的安全风险,同时集成了Microsoft Entra ID的企业级身份与安全能力,可以快速将内网应用(如Vaultwarden)安全暴露至公网,实现“无需公网IP、无需端口映射”的便捷访问。

二、为什么选择微软本地应用代理?

相较于传统Mesh VPN(如Tailscale、Nebula)或公网反代(如Cloudflare Tunnel),微软本地应用代理的优势更贴合企业/个人的安全与便捷需求:

1. 无需公网IP与子网接入

  • Tailscale, Nebula等Mesh VPN需要设备先加入企业子网(如安装客户端并连接),且依赖公网IP或中继服务器;而微软代理通过本地连接器(部署在内网的轻量客户端)实现云端与内网的通信,无需内网设备暴露公网IP。

2. 更安全的公网暴露方式

  • Cloudflare Tunnel将内网服务直接暴露在公网(通过Cloudflare节点转发),存在被扫描或攻击的风险;微软代理则通过Microsoft Entra ID身份验证前置,只有经过授权的用户(甚至设备)才能访问,且流量全程加密。

3. 国内网络稳定性更优

  • Cloudflare的国内节点覆盖有限,部分地区访问延迟较高;微软代理的云端服务依托Azure全球节点,国内用户访问延迟更低(如下图所示,亚洲连接器节点延迟约60-100ms,移动平均延迟60ms)。
    微软本地应用代理日本节点延迟表现,延迟约60-100ms
    微软本地应用代理日本节点延迟表现,延迟约60-100ms

4. 集成企业级身份与安全能力

  • 支持单一登录(SSO) :用户通过Microsoft Entra ID登录后,无需重复输入密码访问内网应用;
  • 支持条件访问(Conditional Access) :可设置访问规则(如仅Intune管理的设备、仅公司网络、需多因素认证);
  • 支持负载均衡:通过多个连接器组实现内网应用的高可用。

三、体系结构与工作流程

微软本地应用代理的核心逻辑是云端代理+本地连接器的双向通信,以下是详细身份验证与访问流程(参考微软官方示意图):

Microsoft Entra本地应用代理身份验证流程:用户→云端认证→本地连接器→内网应用
Microsoft Entra本地应用代理身份验证流程:用户→云端认证→本地连接器→内网应用

流程说明:

  1. 用户发起访问:用户通过自定义域名(如vaultwarden.changjiu365.com​)访问内网应用,被重定向至Microsoft Entra登录页;
  2. 身份认证与条件检查:用户输入凭证登录,Microsoft Entra ID验证身份,并执行条件访问策略(如检查设备是否合规、是否在公司网络);
  3. 发放访问令牌:认证通过后,Microsoft Entra ID向用户设备发送OAuth 2.0访问令牌(包含用户身份信息);
  4. 令牌传递至云端代理:用户设备将令牌发送至微软本地应用代理服务,代理提取令牌中的用户主体名称(UPN)与安全主体名称(SPN);
  5. 本地连接器转发请求:云端代理将请求转发至本地连接器(部署在内网的客户端),连接器验证令牌有效性后,将请求转发至内网应用(如Vaultwarden的内部地址http://192.168.12.100:8880​);
  6. 应用响应与返回:内网应用处理请求并返回结果,连接器将结果转发至云端代理,最终返回给用户。

四、许可证要求

微软本地应用代理需要以下Microsoft Entra ID许可证(任一即可):

  • Microsoft Entra ID P1/P2;

:本文使用的是Microsoft Entra ID P2许可证,符合上述要求。

Microsoft Entra许可证类型:P1/P2许可证支持本地应用代理
Microsoft Entra许可证类型:P1/P2许可证支持本地应用代理

五、部署步骤(以Vaultwarden为例)

1. 准备工作

  • 管理员权限:需要Microsoft Entra全局管理员或应用代理管理员权限;
  • 内网服务:已部署并运行的内网应用(如Vaultwarden,内部地址为http://192.168.12.100:8880​);
  • 自定义域名:已注册的域名(如changjiu365.com​),用于访问内网应用;
  • SSL证书:自定义域名的PFX格式证书(包含私钥,用于HTTPS加密)。

2. 创建专用连接器组

连接器组是本地连接器的逻辑分组,用于管理不同区域或用途的内网应用(如“亚洲区连接器组”用于处理亚洲用户的请求)。
操作步骤

  • 登录Microsoft Entra管理中心
  • 导航至全球安全访问→专用网络连接器
  • 点击“+ 新建连接器组”,输入组名称(如“asia”),选择地区(如“亚洲”),点击“创建”。(连接器组就是我们之后访问的节点地区,我选择的亚洲节点也日本的。)
    Microsoft Entra管理中心-创建专用连接器组:输入名称与地区
    Microsoft Entra管理中心-创建专用连接器组:输入名称与地区

3. 安装本地连接器客户端

连接器是部署在内网的轻量客户端,用于建立云端代理与内网应用的通信。
操作步骤

  • 在连接器组页面,点击“下载连接器”(对应操作系统为Windows);
  • 运行安装程序,使用Microsoft Entra全局管理员账号登录;
  • 安装完成后,连接器会自动加入之前创建的“asia”组(无需额外配置)。
    Microsoft Entra连接器下载界面:点击下载并安装
    Microsoft Entra连接器下载界面:点击下载并安装

4. 发布本地应用程序

(1)配置本地DNS解析(内部URL必备)

微软本地应用代理的内部URL(即内网应用的访问地址)不支持直接填写IP地址,必须使用域名(如192.168.12.86.local.changjiu365.com​)。因此需要通过内网DNS服务器(或路由器的DNS设置、 hosts文件)将本地域名解析到内网应用的IP地址(如192.168.12.86​)。

操作示例(以路由器DNS设置为例):

  • 登录路由器管理界面(如192.168.1.1​);

  • 找到“DNS设置”→“本地域名解析”(或“主机名映射”);

  • 添加一条记录:

    • 主机名vaultwarden.local.changjiu365.com​(自定义的本地域名);
    • IP地址192.168.12.86​(内网应用的实际IP);
  • 保存设置,确保内网设备能通过该本地域名访问应用(如在浏览器输入http://192.168.12.86.local.changjiu365.com​验证)。

DNS解析本地主机
DNS解析本地主机

(2)配置公网DNS解析(外部URL必备)

外部URL是用户从公网访问内网应用的自定义域名(如vaultwarden.changjiu.com​),需要将其指向微软本地应用代理的默认域名(格式为*.msappproxy.net​,可在应用创建后获取)。

操作步骤

  • 登录域名注册商的DNS管理界面(如阿里云、腾讯云);

  • 为自定义域名(如vw.changjiu365.com​)添加CNAME记录

    • 主机记录vw​(根据需求填写,如@​代表根域名);
    • 记录类型CNAME​;
    • 记录值:微软本地应用代理的默认域名(如vw-{tenant}.msappproxy.net​,可在应用创建后进入“应用代理详情页→自定义域名”获取);
  • 保存设置,等待DNS生效(通常需要10-30分钟)。

关键说明

  • 内部URL:用于本地连接器访问内网应用,必须是本地域名(如192.168.12.86.local.changjiu365.com​),需通过内网DNS解析到内网IP;
  • 外部URL:用于用户从公网访问,必须是公网域名(如vw.changjiu365.com​),需通过公网DNS解析到微软代理的默认域名;

(2)创建应用代理

操作步骤

  • 导航至Microsoft Entra管理中心→应用→企业应用

  • 点击“+ 新建应用”→“添加本地应用程序”;

  • 填写应用基本信息:

    Microsoft Entra本地应用代理创建:填写内部/外部URL及连接器组
    Microsoft Entra本地应用代理创建:填写内部/外部URL及连接器组

    名称:应用名称(如“vaultwarden”);

    内部URL:内网应用的访问地址(如http://192.168.12.86:80​);

    外部URL:自定义域名(如https://vaultwarden.example.com​);

    连接器组:选择之前创建的“asia”;

  • 点击“下一步”,进入高级设置:

    Microsoft Entra本地应用代理高级设置:启用仅限HTTP cookie与永久性Cookie
    Microsoft Entra本地应用代理高级设置:启用仅限HTTP cookie与永久性Cookie

    勾选“使用仅限HTTP cookie”:阻止客户端脚本访问cookie,防止XSS攻击;

    勾选“使用永久性Cookie”:浏览器重启后无需重新登录(提升用户体验);

  • 点击“创建”,完成应用代理创建。

(3)分配用户/组访问权限

默认情况下,所有用户无法访问新建的应用代理,需手动分配权限:

  • 进入应用代理详情页,点击“分配用户和组”;
  • 点击“+ 添加用户/组”,选择需要访问的用户(如自己的账号),点击“分配”。
    Microsoft Entra应用代理权限分配:添加可访问的用户/组
    Microsoft Entra应用代理权限分配:添加可访问的用户/组

(4)上传SSL证书(自定义域名必备)

若使用自定义域名(如vw.changjiu365.com​),需上传PFX格式的SSL证书(包含私钥),用于HTTPS加密:

  • 进入应用代理详情页,点击“自定义域名”;
  • 点击“上传证书”,选择本地的PFX证书文件,输入证书密码;
  • 点击“保存”,证书将自动绑定至自定义域名。
    Microsoft Entra应用代理SSL证书上传:选择PFX文件并输入密码
    Microsoft Entra应用代理SSL证书上传:选择PFX文件并输入密码

5. 后续配置与验证

(1)条件访问策略(可选)

为提升安全性,可设置条件访问策略(如仅允许Intune管理的设备访问):

  • 导航至Microsoft Entra管理中心→安全→条件访问
  • 点击“+ 新建策略”,输入策略名称(如“Vaultwarden-Access-Policy”);
  • 选择“云应用或操作”→“选择应用”,选择之前创建的“Vaultwarden-Internal”;
  • 选择“条件”→“设备平台”(如仅允许Windows设备)或“位置”(如仅允许公司网络);
  • 选择“授予”→“需要设备标记为合规”(需Intune集成),点击“创建”。

(2)验证访问

  • 打开浏览器,访问自定义域名(如https://vw.changjiu365.com​);
  • 重定向至Microsoft Entra登录页,输入账号密码完成身份验证(若浏览器已登录微软账户,则无需额外输入凭证,可直接跳转访问);
  • 登录成功后,即可访问内网的Vaultwarden服务。
    Vaultwarden通过微软本地应用代理访问成功:重启浏览器无需重新登录
    Vaultwarden通过微软本地应用代理访问成功:重启浏览器无需重新登录

参考文档

您可能感兴趣的文章

发现更多精彩内容

评论