使用 Microsoft Entra 應用程式 Proxy 遠端存取應用程式的安全性考量
本文說明能在使用 Microsoft Entra 應用程式 Proxy 時保護使用者和應用程式安全的元件。
下圖顯示 Microsoft Entra 如何讓您在內部部署應用程式實現安全的遠端存取。
安全性優點
Microsoft Entra 應用程式 Proxy 提供許多安全性優點。 優點清單如下:
- 已驗證的存取
- 條件式存取
- 流量終止
- 全輸出存取
- 雲端級別分析與機器學習
- 遠端存取即服務
- Microsoft 分散式阻斷服務 (DDoS) 保護保護
已驗證的存取
當您使用 Microsoft Entra 預先驗證時,只有已驗證的連線才能存取您的網路。
Microsoft Entra 應用程式 Proxy 依賴 Microsoft Entra Security Token Service (STS) 來進行所有驗證。 預先驗證 (就其本質) 會封鎖大量匿名攻擊,因為只有已驗證的身分識別可以存取後端應用程式。
如果您選擇 Passthrough 作為預先驗證方法,就無法獲得這項優點。
條件式存取
在建立您的網路連線之前,先套用更豐富的原則控制。
條件式存取可讓您定義限制,以規定如何允許使用者存取您的應用程式。 您可以位置、驗證強度和使用者風險狀況作為基礎,來建立限制登入的原則。
您也可以使用條件式存取來設多重要素驗證原則,讓使用者驗證多一層安全性。 此外,您的應用程式也可以透過 Microsoft Entra 條件式存取來路由至 Microsoft Defender for Cloud Apps,以透過存取和工作階段原則提供即時監視和控制。
流量終止
終止雲端中所有的流量。
Microsoft Entra 應用程式 Proxy 是反向 Proxy,因此所有至後端應用程式的流量會在服務終止。 工作階段只能利用後端伺服器來重新建立,也就是說,後端伺服器不會對直接的 HTTP 流量公開。 此設定表示,您會受到更妥善的保護,可免於目標型攻擊。
所有存取都是輸出
不需要開啟連往公司網路的輸入連線。
私人網路連接器只會使用連出連線至 Microsoft Entra 應用程式 Proxy 服務。 不需要針對連入連線開啟防火牆連接埠。 傳統 Proxy 需要周邊網路 (也稱為「DMZ」、「周邊網路」或「遮蔽式子網路」) 並在網路邊緣允許未經授權連線的存取權。 使用應用程式 Proxy,您就不需要周邊網路,因為所有連線皆為輸出方向,並且是透過安全通道來傳輸。
如需連接器的詳細資訊,請參閱了解 Microsoft Entra 私人網路連接器。
雲端級別分析與機器學習
取得最新的安全性保護。
因為應用程式 Proxy 是 Microsoft Entra ID 的一部分,所以使用 Microsoft Entra ID Protection,其中包含來自 Microsoft Security Response Center 和 Digital Crimes Unit 的資料。 我們共同主動識別遭入侵的帳戶,並提供來自高風險登入的防護。我們將許多因素納入考量,以判斷哪些登入嘗試具有高度風險。 這些因素包括標記受感染的裝置、匿名網路,以及非典型或假位置。
這些報告和事件中有許多已可透過 API 與安全性資訊和事件管理 (SIEM) 系統整合。
遠端存取即服務
您不必擔心維護及修補內部部署伺服器的事宜。
未更新的軟體仍需負責處理大量攻擊。 Microsoft Entra 應用程式 Proxy 是 Microsoft 自有的網際網路級別服務,因此您永遠會獲得最新的安全性修補程式和升級。
為了改善 Microsoft Entra 應用程式 Proxy 所發佈應用程式的安全性,我們會封鎖 Web 編目程式傀儡程式,使其無法對您的應用程式編製索引和進行保存。 每次 Web 編目程式傀儡程式嘗試擷取已發佈應用程式的傀儡程式設定時,應用程式 Proxy 會以含有 User-agent: * Disallow: /
的 robots.txt 檔案回覆。
Microsoft 分散式阻斷服務 (DDoS) 保護保護
透過應用程式 Proxy 發佈的應用程式會受到保護,以免遭受分散式阻斷服務 (DDoS) 攻擊。 Microsoft 會自動在所有資料中心啟用此保護。 Microsoft DDoS 保護服務提供常見網路層級攻擊的永遠可用流量監視和即時安全防護功能。
背後原理
Microsoft Entra 應用程式 Proxy 是由兩個部分組成:
- 雲端架構服務︰此服務會在 Microsoft 雲端中執行,且外部用戶端/使用者會連線到此服務。
- 內部部署連接器︰這是內部部署元件,此連接器會接聽來自 Microsoft Entra 應用程式 Proxy 服務的要求,並處理對內部應用程式的連線。
以下為建立連接器與應用程式 Proxy 服務之間流量的時機:
- 第一次設定連接器。
- 連接器會從應用程式 Proxy 服務提取設定資訊。
- 使用者會存取發佈的應用程式。
注意
所有通訊都透過 TLS 進行,而且一律從連接器向應用程式 Proxy 服務發起通訊。 此服務只會輸出。
連接器會使用用戶端憑證來驗證幾乎所有呼叫的應用程式 Proxy 服務。 此程序的唯一例外是可供建立用戶端憑證的初始設定步驟。
安裝連接器
第一次設定連接器時,會發生下列流程事件:
- 連接器註冊服務會做為連接器安裝的一部分。 系統會提示使用者輸入其 Microsoft Entra 系統管理員認證。 接著會向 Microsoft Entra 應用程式 Proxy 服務顯示此驗證的必要權杖。
- 應用程式 Proxy 服務會評估權杖。 它會檢查使用者是否至少是租使用者中的應用程式管理員。 如果使用者不是,進程就會終止。
- 連接器會產生用戶端憑證要求,並與權杖一起傳遞至應用程式 Proxy 服務。 服務接著會驗證權杖,並簽署用戶端憑證要求。
- 連接器可以使用此用戶端憑證,以便未來與應用程式 Proxy 服務通訊。
- 連接器會使用其用戶端憑證從服務執行系統設定資料的初始提取,而它現在已準備好接受要求。
更新組態設定
每當應用程式 Proxy 服務更新組態設定時,就會發生下列流程事件:
- 連接器會使用其用戶端憑證連線至應用程式 Proxy 服務內的組態端點。
- 已驗證用戶端憑證。
- 用戶端應用程式 Proxy 服務會將組態資料傳回連接器 (例如,連接器應屬之連接器群組)。
- 如果目前的憑證超過 180 天,連接器就會產生新的憑證要求。
存取已發佈的應用程式
當使用者存取已發佈的應用程式時,會在應用程式 Proxy 服務和私人網路連接器之間進行下列事件:
- 服務會驗證應用程式的使用者
- 服務會將要求放在連接器佇列中
- 連接器會處理來自佇列的要求
- 連接器會等候回應
- 服務會將資料串流給使用者
若要深入了解每個步驟中所發生的事項,請繼續閱讀。
1.服務會驗證應用程式的使用者
如果應用程式使用 Passthrough 作為其預先驗證方法時,就會跳過本節中的步驟。
如果使用者已設定為使用 Microsoft Entra ID 預先驗證,則會將使用者重新導向至 Microsoft Entra STS 進行驗證。 會發生下列步驟:
- 應用程式 Proxy 檢查任何條件式存取原則需求。 該步驟可確保已對應用程式指派使用者。 如果需要雙步驟驗證,驗證順序會提示使用者進行第二驗證方法。
- Microsoft Entra STS 會針對應用程式發出已簽署權杖,並將使用者重新導向回到應用程式 Proxy 服務。
- 「應用程式 Proxy」會確認權杖已簽發給正確的應用程式、經簽署,且有效。
- 應用程式 Proxy 會設定加密的驗證 cookie,以表示應用程式成功驗證。 Cookie 會根據來自 Microsoft Entra ID 的權杖,包含到期時間戳。 Cookie 也包含驗證所依據的使用者名稱。 會使用僅應用程式 Proxy 服務所知的私密金鑰來加密此 cookie。
- 應用程式 Proxy 會將使用者重新導向回到原始要求的 URL。
如果預先驗證步驟的任何部分失敗,使用者的要求會遭到拒絕,且使用者會顯示訊息,指出問題的來源。
2.服務會將要求放在連接器佇列中
連接器保持對應用程式 Proxy 服務開啟輸出連線。 當要求傳入時,服務會在其中一個開啟連線上佇列要求,以供連接器挑選。
要求包含要求標頭、來自加密 cookie 的資料、提出要求的使用者,以及要求識別碼。 雖然來自加密 cookie 的資料會與要求一起傳送,但驗證 cookie 本身並不是。
3.連接器會處理來自佇列的要求。
根據要求,應用程式 Proxy 會執行下列其中一個動作:
如果要求是簡單的作業 (例如,主體內沒有資料現狀符合 RESTful API
GET
要求),連接器會建立連往目標內部資源的連線,然後等候回應。如果要求在主體中具有與它相關聯的資料 (例如,RESTful API
POST
作業),連接器會使用用戶端憑證建立與應用程式 Proxy 執行個體的輸出連線。 它會建立此連線來要求資料,並開啟與內部部署資源的連線。 在收到來自連接器的要求後,應用程式 Proxy 服務會開始接受來自使用者的內容,並將資料轉送至連接器。 連接器會依次將資料轉送到內部資源。
4.連接器會等候回應。
完成所有內容的要求並傳輸至後端後,連接器會等候回應。
在收到回應後,連接器會建立對應用程式 Proxy 服務的輸出連線,以傳回標頭詳細資料,並開始串流傳回的資料。
5.服務會將資料串流給使用者。
應用程式的一些處理會在此時發生。 例如,應用程式 Proxy 會轉譯標頭或 URL。