利用Microsoft Entra Application Proxy在无公网IP条件下安全访问内网计算机
在现代混合办公环境中,如何让员工能够从任何地方安全访问公司内部资源成为了企业的重要挑战。传统的VPN解决方案虽然可以满足需求,但有时配置复杂,并可能涉及公网IP的问题。为了解决这个问题,Microsoft Entra(原Azure AD)Application Proxy与Remote Desktop Service (RDS) 联合提供了一种更加简洁且安全的解决方案,帮助用户在没有公网IP的情况下从外网访问内部的计算机设备。
Microsoft Entra Application Proxy 简介
Microsoft Entra Application Proxy 是 Azure Active Directory(Azure AD)中的一项功能,它允许用户通过互联网安全地访问本地应用程序,而无需在外网暴露服务器或使用 VPN。其核心功能包括:
无需公网IP:无需在企业的防火墙上暴露应用的IP。
强大的身份验证和访问控制:通过Azure AD的条件访问策略和多重身份验证(MFA)来保护资源。
反向代理架构:外部用户通过Application Proxy访问资源,代理位于网络边界以防止直接访问内部网络。
Remote Desktop Service 简介
Remote Desktop Services(RDS)是Windows服务器提供的远程桌面功能,允许用户通过远程桌面协议(RDP)连接到运行Windows操作系统的计算机。RDS常用于:
- 远程工作,访问公司内的资源和应用程序。
- 通过集中管理减少客户端设备配置需求。
通过将Microsoft Entra Application Proxy与RDS结合使用,用户可以从互联网安全地访问公司内部的设备,而不需要将RDS服务器暴露在公网中。
解决方案原理与架构
在这套方案中,Microsoft Entra Application Proxy充当了RDS的反向代理。流程如下:
- 外部用户请求:用户在外网通过浏览器或RDP客户端访问远程桌面(或其他应用)。
- 身份验证:请求首先通过Application Proxy发送到Azure AD,Azure AD要求用户进行身份验证(如用户名密码或多因素认证)。
- 反向代理:验证通过后,Application Proxy将用户的请求安全地代理至内部网络中的RDS服务器。
- 远程桌面连接:用户通过RDS连接到指定的内部计算机,进行远程操作。
架构图示
部署步骤
步骤 1:准备工作
- 确保企业内部已经部署了RDS服务器,并且用户能够在内网正常访问RDS。
- 安装并配置Microsoft Entra Application Proxy连接器(在内网服务器上运行,负责代理外部请求)。
步骤 2:配置Microsoft Entra Application Proxy
- 登录Microsoft Entra管理中心(原Azure AD)。
- 在导航栏中选择“企业应用程序”,然后选择“Application Proxy”。
- 选择“添加”,并填写远程桌面服务器的应用信息。
- 内部URL:填写RDS服务器的内网地址。
- 外部URL:这是用户在外网访问时使用的URL,通常是通过Azure的安全域名生成。
- 配置用户访问权限。通过Azure AD,可以为此远程桌面应用程序设置访问权限,配置条件访问策略,要求用户使用多重身份验证(MFA)等。
步骤 3:发布 RD 主机终结点
- 使用以下值发布新的应用程序代理应用程序。
- 内部 URL:https://<rdhost>.com/,其中,<rdhost> 是 RD Web 和 RD 网关共享的共用根。
- 外部 URL:系统会根据应用程序的名称自动填充此字段,但可以修改它。 用户在访问 RDS 时会转到此 URL。
- 预身份验证方法:Microsoft Entra ID。
- 转换 URL 标头:否。
- 使用仅限 HTTP 的 Cookie:否。
- 将用户分配到已发布的 RD 应用程序。 确保这些用户也都有权访问 RDS。
- 将应用程序的单一登录方法保留为“已禁用 Microsoft Entra 单一登录”。
- 浏览到“标识”>“应用程序”>“应用注册”。 从列表中选择应用。
- 在“管理”下,选择“品牌打造” 。
- 更新“主页 URL”字段以指向你的 RD Web 终结点(如 https://<rdhost>.com/RDWeb)。
步骤 4:将 RDS 流量定向到应用程序代理
以管理员身份连接到 RDS 部署,并更改部署的 RD 网关服务器名称。 此配置可确保连接通过 Microsoft Entra 应用程序代理服务。
- 连接到运行 RD 连接代理角色的 RDS 服务器。
- 启动“服务器管理器”。
- 在左侧窗格中选择“远程桌面服务”。
- 选择“概述”。
- 在“部署概述”部分中,选择下拉菜单并选择“编辑部署属性”。
- 在“RD 网关”选项卡中,将“服务器名称”字段更改为针对应用程序代理中的 RD 主机终结点设置的外部 URL。
- 将“登录方法”字段更改为“密码身份验证”。
- 为所有集合运行此命令。 用自己的信息替换 <yourcollectionname> 和 <proxyfrontendurl>。 此命令在 RD Web 与 RD 网关之间启用单一登录,并优化性能。
Set-RDSessionCollectionConfiguration -CollectionName "<yourcollectionname>" -CustomRdpProperty "pre-authentication server address:s:<proxyfrontendurl>`nrequire pre-authentication:i:1"
- 若要验证对自定义 RDP 属性的修改并查看从此集合的 RDWeb 下载的 RDP 文件内容,请运行以下命令。
(get-wmiobject -Namespace root\cimv2\terminalservices -Class Win32_RDCentralPublishedRemoteDesktop).RDPFileContents
配置远程桌面后,Microsoft Entra 应用程序代理会充当 RDS 的面向 Internet 的组件。 请在 RD Web 和 RD 网关计算机上删除其他面向 Internet 的公共终结点。
步骤 5:启用 RD Web 客户端
如果希望用户使用 RD Web 客户端,请按照为用户设置远程桌面 Web 客户端中的步骤操作。
远程桌面 Web 客户端提供对组织的远程桌面基础结构的访问。 需要与 HTML5 兼容的 Web 浏览器,例如 Microsoft Edge、Google Chrome、Safari 或 Mozilla Firefox(v55.0 及更高版本)。
总结
通过将Microsoft Entra Application Proxy与Remote Desktop Service集成,企业无需公网IP即可提供一个安全的远程访问解决方案。这个架构不仅简化了网络配置,还利用了Azure AD的强大安全功能,有效降低了外网暴露风险,同时提升了用户体验。企业在部署后,可以灵活应用Azure的条件访问策略,进一步增强远程访问的安全性。
参考资料
https://learn.microsoft.com/zh-cn/entra/identity/app-proxy/application-proxy-integrate-with-remote-desktop-services
相关文章:

利用Microsoft Entra Application Proxy在无公网IP条件下安全访问内网计算机
在现代混合办公环境中,如何让员工能够从任何地方安全访问公司内部资源成为了企业的重要挑战。传统的VPN解决方案虽然可以满足需求,但有时配置复杂,并可能涉及公网IP的问题。为了解决这个问题,Microsoft Entra(原Azure …...

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024)
【IEEE独立出版 | 厦门大学主办】 第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 2024年12月27-29日 | 中国厦门 >>往届均已成功见刊检索…...
C++ 内存布局 - Part5: 继承关系中 构造析构与vptr的调整
这里以单继承为例,汇编采用AT&T格式,先看示例代码: #include <iostream>class Base { public:Base() {std::cout << "Base Constructor, this ptr: " << this << std::endl;printVptr();}virtual ~Ba…...
BUG-AttributeError: ‘EnforcedForest‘ object has no attribute ‘node‘
File “/home/adt/miniconda3/envs/bevdet/lib/python3.7/site-packages/trimesh/scene/transforms.py”, line 224, in nodes_geometry ‘geometry’ in self.transforms.node[n]): AttributeError: ‘EnforcedForest’ object has no attribute ‘node’ networkx 2.6.3 pyp…...
Spring Boot 3 配置 Redis 兼容单例和集群
配置项 Spring Boot 3.x 的 redis 配置和 Spring Boot 2.x 是不一样的, 路径多了一个data spring:...data:redis:host: redis.hostport: redis.portpassword: redis.passworddatabase: redis.database兼容单例和集群的配置 开发时一般用一个Redis单例就足够, 测试和生产环境…...
unsat钱包签名算法解析
unsat钱包签名算法解析 在数字货币领域,安全性是至关重要的,而签名算法则是确保交易和信息不可伪造的基础。本文将深入解析 unsat 钱包中使用的签名算法,重点关注如何生成和验证消息签名。 1. 签名算法概述 unsat 钱包使用 ECDSAÿ…...
mysql删除唯一索引
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...
学习之面试题:偏函数
偏函数(Partial Function)是 Python 中的一个实用工具,通常用于函数式编程中,可以固定一个函数的部分参数,从而生成一个新的函数。偏函数在 Python 中通常通过 functools.partial 实现。在面试中,考察偏函数…...

面试技术点
Java 一、jvm模块 jvm是什么? 是一用用于计算设备的规范,虚构出来的计算机,在计算机上仿真模拟各种计算机功能来实现 jvm 作用是什么? java中所有类必须装载jvm中才能运行,这个装载工作有jvm装载器完成,.class类型文件能在jvm虚拟器中运行,但不能直接在系统中运行,需要…...

基础sql
在执行删除操作之前,建议先运行一个 SELECT 查询来确认你要删除的记录。这可以帮助你避免误删数据。 删除字段id默认值为空字符串的所有数据 delete from users where id ; 删除字段id默认值为null的所有数据 delete from users where id is null; 删除字段upd…...

Jenkins整合Docker实现CICD自动化部署(若依项目)
前期准备 提前准备好jenkins环境 并且jenkins能使用docker命令,并且已经配置好了jdk、node、maven环境,我之前写了安装jenkins的博客,里面讲得比较详细,推荐用我这种方式安装 docker安装jenkins,并配置jdk、node和m…...
kali chrome 安装 hackbar
HackBar 是一个用于在 Kali Linux 中快速测试 SQL 注入和 XSS 漏洞的 Chrome 扩展程序。以下是如何在 Kali Linux 上安装 HackBar 的步骤: 首先,你需要确保你的系统已经安装了 Google Chrome 或 Chromium。如果没有安装,你可以使用以下命令安…...

一文了解 Linux 系统的文件权限管理
文章目录 引入Linux文件权限模型查看文件权限权限信息解析修改文件权限符号模式八进制数字模式 引入 在Linux操作系统中,我们想查看我们对文件拥有哪些权限时,可以在终端键入ls -l或ll命令,终端会输出当前路径下的文件信息,如文件…...

Spark:DataFrame介绍及使用
1. DataFrame详解 DataFrame是基于RDD进行封装的结构化数据类型,增加了schema元数据,最终DataFrame类型在计算时,还是转为rdd计算。DataFrame的结构化数据有Row(行数据)和schema元数据构成。 Row 类型 表示一行数据 …...

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案
学习目标: 提示:本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统:Ubuntu 23.04; 文中提到的“本机”:代表,宿主机,物理主机; 首先,…...

望繁信科技成功签约国显科技 流程挖掘助力制造业智造未来
近日,上海望繁信科技有限公司(简称“望繁信科技”)成功与深圳市国显科技有限公司(简称“国显科技”)达成合作。国显科技作为全球领先的TFT-LCD液晶显示及Mini/Micro LED显示产品供应商,致力于为笔记本、手机…...

枚举在Java体系中的作用
1. 枚举 枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: //用public static final修饰常量 public static final int RED 1; public static final int GREEN 2; public static f…...

『气泡水』Web官网 案例赏析
前言 Schweppes,作为一家享誉全球的气泡水品牌,致力于与年轻消费者建立更紧密的联系,并提升品牌影响力。为此,其打造了一个充满创意和高度互动性的官网,利用前端技术和动画效果,将产品特性与用户浏览体验完…...

【前端】制作一个简单的网页(2)
单标签组成的元素 这类标签不需要内容产生效果,通常表示对网页的某种行为,它们不用标记任何内容,开始即是结束。 比如,<hr>标签的作用是在网页中添加一条分割线,它仅包含开始标签,是一个单标签元素。…...

OpenAI Canvas:提升编程与写作效率的全新工作界面
随着人工智能技术的飞速发展,大语言模型(LLM)不仅限于生成文本,还能逐步扩展至编程、设计等任务的支持。近期,OpenAI 推出了一个名为 Canvas 的全新功能,专门用于协助用户进行编程和写作。这一功能与 Claud…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
Qt学习及使用_第1部分_认识Qt---Qt开发基本流程
前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...
IP选择注意事项
IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时,需要考虑以下参数,然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...