規劃 Azure AD 應用程式 Proxy 部署
Azure Active Directory (Azure AD) 應用程式 Proxy 是安全、符合成本效益且適用於內部部署應用程式的遠端存取解決方案。 此技術會針對「雲端優先」組織提供立即的轉換路徑,為尚無法使用新式通訊協定的舊版內部部署應用程式管理存取權。 如需其他簡介資訊,請參閱什麼是應用程式 Proxy。
應用程式 Proxy 有利於遠端使用者存取內部資源。 應用程式 Proxy 可取代這些遠端存取使用案例的 VPN 或反向 Proxy 需求。 其不適用於公司網路上的使用者。 使用應用程式 Proxy 進行內部網路存取的使用者,可能會遇到非預期的效能問題。
本文包含規劃、操作及管理 Azure AD 應用程式 Proxy 所需的資源。
計劃您的實作
下一節將提供主要規劃元素的廣泛觀點,這些元素將帶給您有效率的部署體驗。
必要條件
開始實作之前,您必須符合下列必要條件。 您可以在本教學課程中看到有關設定環境的詳細資訊,包括這些必要條件。
連接器:連接器是可以部署下列位置的輕量型代理程式:
- 內部部署實體硬體
- 裝載於任何 Hypervisor 解決方案內的 VM
- 裝載在 Azure 中的 VM,可對應用程式 Proxy 服務啟用輸出連線。
如需更詳細的概觀,請參閱了解 Azure AD 應用程式 Proxy 連接器。
網路存取設定:Azure AD 應用程式 Proxy 連接器可透過 HTTPS (TCP 連接埠 443) 和 HTTP (TCP 連接埠 80) 連線到 Azure。
不支援終止連接器 TLS 流量,這麼做會使連接器無法使用其各自的 Azure App Proxy 端點來建立安全通道。
避免在連接器與 Azure 之間的輸出 TLS 通訊上進行所有形式的內嵌檢查。 連接器和後端應用程式之間的內部檢查是可行的,但可能會降低使用者體驗,因此不建議使用。
連接器本身的負載平衡也不受支援,或甚至是不必要的。
設定 Azure AD 應用程式 Proxy 之前的重要考量
必須符合下列核心需求,才能設定和實作 Azure AD 應用程式 Proxy。
Azure 上線:在部署應用程式 Proxy 之前,使用者身分識別必須從內部部署目錄同步,或直接在您的 Azure AD 租用戶中建立。 身分識別同步處理可讓 Azure AD 在允許使用者存取 App Proxy 發佈的應用程式之前,先預先驗證使用者,以及具有執行單一登入 (SSO) 所需的使用者識別碼資訊。
條件式存取需求:我們不建議使用應用程式 Proxy 進行內部網路存取,因為這樣會增加延遲,進而影響使用者。 建議您使用應用程式 Proxy 搭配預先驗證和條件式存取原則,從網際網路進行遠端存取。 讓條件式存取可用於內部網路的方法是將應用程式現代化,使其可以直接向 AAD 進行驗證。 如需詳細資訊,請參閱將應用程式遷移至 AAD 的資源。
服務限制:為了防止個別租用戶的資源過度耗用,每個應用程式和租用戶皆會設定節流限制。 若要查看這些限制,請參閱 Azure AD 服務限制。 這些節流限制的基準遠高於一般使用量,而且會針對大部分的部署提供足夠的緩衝區。
公開憑證:如果您使用自訂網域名稱,您必須購買 TLS/SSL 憑證。 根據您的組織需求,取得憑證可能需要一些時間,建議您儘早開始處理。 Azure 應用程式 Proxy 支援標準、萬用字元 或 SAN 型憑證。 如需詳細資訊,請參閱使用 Azure AD 應用程式 Proxy 設定自訂網域。
網域需求:若要使用 Kerberos 限制委派 (KCD) 對已發佈的應用程式執行單一登入,則執行連接器的伺服器和執行應用程式的伺服器都必須已加入網域,而且屬於相同網域或信任網域。 如需有關該主題的詳細資訊,請參閱搭配應用程式 Proxy 使用 KCD 進行單一登入。 連接器服務會在本機系統的內容中執行,而且不應設定為使用自訂身分識別。
URL 的 DNS 記錄
在應用程式 Proxy 中使用自訂網域之前,您必須在公用 DNS 中建立 CNAME 記錄,以允許用戶端將自訂定義的外部 URL 解析為預先定義的應用程式 Proxy 位址。 無法為使用自訂網域的應用程式建立 CNAME 記錄,將會使遠端使用者無法連線到應用程式。 新增 CNAME 記錄所需的步驟可能會因 DNS 提供者不同而有所差異,因此請了解如何使用 Azure 入口網站來管理 DNS 記錄和記錄集。
同樣地,連接器主機必須能夠解析待發佈應用程式的內部 URL。
管理權限和角色
連接器安裝需要 Windows 伺服器的本機管理員權限,才能在其中安裝連接器。 也需要至少一個應用程式系統管理員角色來進行驗證,並向您的 Azure AD 租用戶註冊連接器執行個體。
應用程式發佈和管理需要應用程式系統管理員角色。 應用程式系統管理員可以管理目錄中的所有應用程式,包括註冊、SSO 設定、使用者和群組指派及授權、應用程式 Proxy 設定,以及同意。 它不會授與管理條件式存取的能力。 雲端應用程式管理員角色具有應用程式系統管理員的所有能力,但允許管理應用程式 Proxy 設定。
授權:您可以透過 Azure AD Premium 訂用帳戶取得應用程式 Proxy。 如需授權選項和功能的完整清單,請參閱 Azure Active Directory 定價頁面。
應用程式探索
藉由收集下列資訊,編譯透過應用程式 Proxy 發佈的範圍內所有應用程式詳細目錄:
資訊類型 | 要收集的資訊 |
---|---|
服務類型 | 例如:SharePoint、SAP、CRM、自訂 Web 應用程式、API |
應用程式平台 | 例如:Windows IIS、Linux 上的 Apache、Tomcat、NGINX |
網域成員資格 | Web 服務器的完整網域名稱 (FQDN) |
應用程式位置 | Web 伺服器或伺服器陣列位於您基礎結構中的位置 |
內部存取 | 在內部存取應用程式時所使用的正確 URL。 如果是伺服器陣列,使用何種類型的負載平衡? 應用程式是否從本身以外的來源提取內容。 判斷應用程式是否透過 Websocket 運作。 |
外部存取 | 已透過其向外公開應用程式的廠商解決方案。 您要用於外部存取的 URL。 如果是 SharePoint,請務必根據此指引設定備用存取對應。 如果不是,您將需要定義外部 URL。 |
公開憑證 | 如果使用自訂網域,請購買具有對應主體名稱的憑證。 如果有憑證存在,請記下序號及取得憑證的位置。 |
驗證類型 | 應用程式支援所支援的驗證類型,例如基本、Windows 整合驗證、表單式、標頭式及宣告。 如果應用程式設定為在特定網域帳戶下執行,請記下服務帳戶的完整網域名稱 (FQDN)。 如果是以 SAML 為基礎,請記下識別碼和回覆 URL。 如果是標頭式,請記下處理驗證類型的廠商解決方案及特定需求。 |
連接器群組名稱 | 需指定連接器群組的邏輯名稱,才能為此後端應用程式提供管道和 SSO。 |
使用者/群組存取 | 將授與應用程式外部存取權給使用者或使用者群組。 |
其他需求 | 記注意發行應用程式時應考慮的任何其他遠端存取或安全性需求。 |
您可以下載此應用程式詳細目錄試算表來清查您的應用程式。
定義組織需求
以下是您應為其定義組織商務需求的區域。 每個區域都包含需求範例
存取
已加入網域或裝置已加入 Azure AD 的遠端使用者,可以使用無縫單一登入 (SSO) 安全地存取已發佈的應用程式。
個人裝置已經過核准的遠端使用者可以安全地存取發佈的應用程式,前提是他們已在 MFA 中註冊,並已在行動電話上將 Microsoft Authenticator 應用程式註冊為驗證方法。
監管
- 管理員可以對透過應用程式 Proxy 發佈的應用程式定義和監視使用者指派生命週期。
安全性
- 只有透過群組成員資格或個別指派給應用程式的使用者可以存取這些應用程式。
效能
- 應用程式效能不會降低 (相較於從內部網路存取應用程式)。
使用者體驗
- 使用者知道如何任何裝置平台上使用熟悉的公司 URL 來存取他們的應用程式。
稽核
- 管理員可以稽核使用者存取活動。
執行試驗的最佳做法
判斷完全委派單一應用程式使用單一登入 (SSO) 進行遠端存取所需的時間和工作量。 藉由執行考量到其初始探索、發佈和一般測試的試驗,來達到此目的。 使用已針對整合式 Windows 驗證 (IWA) 預先設定的簡單 IIS 型 Web 應用程式有助於建立基準,因為這項設定只需極少的準備工作就能成功試驗遠端存取和 SSO。
下列設計元素應提高直接在實際執行租用戶中試驗實作的成功率。
連接器管理:
- 在提供內部部署管道給您的應用程式時,連接器扮演著重要的角色。 使用預設連接器群組足以對已發佈的應用程式進行初始試驗測試,然後再將其委派到實際執行環境。 測試成功的應用程式可移至實際執行連接器群組。
應用程式管理:
您的員工最有可能記住熟悉且相關的外部 URL。 請避免使用預先定義的 msappproxy.net 或 onmicrosoft.com 尾碼來發佈您的應用程式。 相反地,請提供熟悉的最上層驗證網域,並以邏輯主機名稱作為前置詞,例如:intranet.<customers_domain>.com。
藉由在 Azure MyApps 入口網站中隱藏其啟動圖示,以限制僅試驗群組可看見試驗應用程式的圖示。 當您準備好用於實際執行環境時,您可以將應用程式的範圍設定為其各自的目標對象,可以是實際執行之前的相同租用戶,或同時在實際執行租用戶中發佈應用程式。
單一登入設定:某些 SSO 設定具有特定的相依性,可能需要一些時間來設定,因此請事先確定相依性問題已解決,以避免變更控制延遲。 這包括將連接器主機加入網域,以使用 Kerberos 限制委派 (KCD) 來執行 SSO 並負責處理其他耗時的活動。
連接器主機和目標應用程式之間的 TLS:安全性極為重要,因此應該一律在連接器主機和目標應用程式之間使用 TLS。 尤其是,如果 Web 應用程式設定為使用表單架構驗證 (FBA),因為之後會以純文字形式來有效率地傳輸使用者認證。
以累進方式實作並測試每個步驟。 在發佈應用程式後進行基本功能測試,藉由遵循下列指示來確保符合所有使用者和企業需求:
- 停用預先驗證,測試及驗證 Web 應用程式的一般存取。
- 如果成功,啟用預先驗證並指派使用者和群組。 測試和驗證存取。
- 然後,為您的應用程式新增 SSO 方法,然後再次測試以驗證存取。
- 視需要套用條件式存取和 MFA 原則。 測試和驗證存取。
疑難排解工具:進行疑難排解時,一律先驗證是否能從連接器主機上的瀏覽器存取已發佈的應用程式,並確認應用程式如預期般運作。 設定愈簡單,愈能輕鬆地判斷根本原因,因此請考慮嘗試以最基本的設定重現問題,例如只使用單一連接器,而且不使用 SSO。 在某些情況下,在對透過 Proxy 存取的應用程式進行存取或內容問題的疑難排解時,Web 偵錯工具 (例如 Telerik 的 Fiddler) 被視為是不可或缺的。 Fiddler 也可以做為 Proxy 使用,以協助追蹤和偵錯行動平台 (例如 iOS 和 Android) 的流量,以及可設定為透過 Proxy 路由的幾乎所有資訊。 如需詳細資訊,請參閱疑難排解指南。
實作您的解決方案
部署應用程式 Proxy
新增用於遠端存取的內部部署應用程式教學課程中有部署應用程式 Proxy 的步驟。 如果安裝不成功,請在入口網站中選取 [針對應用程式 Proxy 進行疑難排解],或使用疑難排解指南來解決安裝應用程式 Proxy 代理程式連接器的問題。
透過應用程式 Proxy 發佈應用程式
發佈應用程式時,我們假設您已滿足所有必要條件,而且您在 [應用程式 Proxy] 頁面中有數個顯示為已註冊和作用中的連接器。
您也可以使用 PowerShell 來發佈應用程式。
以下是發佈應用程式時要遵循的一些最佳做法:
使用連接器群組:指派已指定用來發佈每個個別應用程式的連接器群組。 建議每個連接器群組都至少有兩個連接器,以提供高可用性和規模。 如果在任何時間點機器都可能需要使用服務,則理想狀態是備妥三個連接器。 此外,請參閱使用連接器群組在個別的網路和位置上發佈應用程式,以了解您也可以如何使用連接器群組來依據網路或位置劃分您的連接器。
設定後端應用程式逾時:此設定十分適用於下列情況:應用程式可能需要超過 75 秒的時間處理用戶端交易。 例如,當用戶端將查詢傳送至作為資料庫前端的 Web 應用程式時。 前端會將此查詢傳送到其後端資料庫伺服器,並等候回應,但在收到回應之前,對話的用戶端就會逾時。將逾時設定為「長」可提供 180 秒的時間來完成較長的交易。
使用適當的 Cookie 類型
僅限 HTTP Cookie:讓應用程式 Proxy 在 set-cookie HTTP 回應標頭中包含 HTTPOnly 旗標,以提高安全性。 此設定有助於降低惡意探索的風險,例如跨網站指令碼 (XSS)。 針對不需要存取工作階段 Cookie 的用戶端/使用者代理程式,請將此設定保留為 [否]。 例如,RDP/MTSC 用戶端會連線到透過應用程式 Proxy 發佈的遠端桌面閘道。
安全 Cookie:當 Cookie 設定中有安全屬性時,如果要求是透過 TLS 安全通道傳輸,則使用者代理程式 (用戶端應用程式) 只會在 HTTP 要求中包含 Cookie。 這有助於降低 Cookie 在純文字通道上遭到洩漏的風險,因此應該啟用。
永續性 Cookie:允許應用程式 Proxy 工作階段 Cookie 在每次瀏覽器關閉之間保存,直到其到期或刪除為止。 適用於豐富應用程式 (例如 Office) 在已發佈的 Web 應用程式中存取文件的案例,如此便不會重新提示使用者進行驗證。 不過,啟用時應小心,因為如果未與其他補償控制項一起使用的話,永續性 Cookie 最終可能會讓服務存在未授權存取的風險。 只有無法在程序之間共用 Cookie 的舊版應用程式,才應使用此設定。 最好是更新您的應用程式以處理程序之間的 Cookie 共用,而不要使用此設定。
轉譯標頭中的 URL:當內部 DNS 無法設定為符合組織的公用命名空間時,您可以啟用此設定 (也稱為 Split DNS)。 除非您的應用程式需要用戶端要求中的原始主機標頭,否則請將此值設定為 [是]。 替代方式是讓連接器在內部 URL 中使用 FQDN 來路由實際的流量,並使用外部 URL 中的 FQDN 作為主機標頭。 在大部分情況下,此替代方法都會讓應用程式在遠端存取時正常運作,但您的使用者會失去內外部 URL 相符的優點。
轉譯應用程式主體中的 URL:當您想要在傳回用戶端的回應中將來自應用程式的連結轉譯時,請開啟該應用程式的應用程式主體連結轉譯。 若已啟用,此功能會努力嘗試將應用程式 Proxy 在 HTML 和 CSS 回應 (將傳回用戶端) 中找到的所有內部連結轉譯。 當您發佈的應用程式內容中包含硬式編碼的絕對連結或 NetBIOS 短名稱連結,或應用程式內容連結至其他內部部署應用程式時,這非常有用。
如果已發佈的應用程式連結至其他已發佈的應用程式,請為每個應用程式啟用連結轉譯,以便您能夠控制每個應用程式層級的使用者體驗。
例如,假設您有三個透過應用程式 Proxy 發佈且彼此連結的應用程式:Benefits、Expenses 和 Travel,加上第四個應用程式 Feedback,但其不是透過應用程式 Proxy 發佈。
當您為 Benefits 應用程式啟用連結轉譯時,Expenses 和 Travel的 連結會重新導向至這些應用程式的外部 URL,讓從公司網路外部存取應用程式的使用者可以存取這些應用程式。 從 Expenses 和 Travel 回到 Benefits 的連結沒有作用,因為這兩個應用程式尚未啟用連結轉譯功能。 Feedback 的連結不會重新導向,因為沒有外部 URL,因此使用 Benefits 應用程式的使用者將無法從公司網路外部存取 Feedback 應用程式。 請參閱連結轉譯和其他重新導向選項的詳細資訊。
存取您的應用程式
有幾個選項可用來管理對應用程式 Proxy 所發佈資源的存取,因此請選擇最適合您特定案例和可擴縮性需求的選項。 常見的方法包括:使用透過 Azure AD Connect 同步的內部部署群組、根據使用者特性在 Azure AD 中建立動態群組、使用資源擁有者所管理的自助群組或所有這些方法的組合。 請參閱連結的資源,以了解每個資源的優點。
將應用程式的存取權指派給使用者的最簡單方式,就是從已發佈應用程式的左側窗格中,移至 [使用者和群組] 選項,然後直接指派群組或個人。
您也可以指派目前使用者還不是其中成員的群組,並設定自助選項,讓使用者可以透過自助方式存取您的應用程式。
如果啟用,使用者將能夠登入 MyApps 入口網站並要求存取,而且可設定為自動核准並新增至已允許的自助群組,或需要指定核准者的核准。
來賓使用者也可以受邀透過 Azure AD B2B 存取透過應用程式 Proxy 發佈的內部應用程式。
對於通常可以匿名存取的內部部署應用程式 (不需要驗證),您可以在應用程式的 [屬性] 中停用該選項。
將此選項設為 [否] 可讓使用者在沒有權限的情況下,透過 Azure AD 應用程式 Proxy 存取內部部署應用程式,因此請小心使用。
當您的應用程式發佈之後,您就可以在瀏覽器中輸入其外部 URL 或使用 https://myapps.microsoft.com 上的圖示來存取應用程式。
啟用預先驗證
確認您的應用程式可透過應用程式 Proxy 從外部 URL 加以存取。
瀏覽至 [Azure Active Directory]>[企業應用程式]>[所有應用程式],然後選擇您要管理的應用程式。
選取 [應用程式 Proxy]。
在 [預先驗證] 欄位中,使用下拉式清單選取 [Azure Active Directory],然後選取 [儲存]。
啟用預先驗證之後,Azure AD 會先要求使用者進行驗證,而且如果已設定單一登入,則後端應用程式也會在授與應用程式存取權之前先驗證使用者。 將預先驗證模式從「傳遞」變更為 Azure AD 也會使用 HTTPS 設定外部 URL,因此一開始針對 HTTP 設定的任何應用程式,現在都會以 HTTPS 來保護。
啟用單一登入
SSO 能提供最佳的使用者體驗和安全性,因為使用者只需要在存取 Azure AD 時登入一次。 一旦使用者經過預先驗證之後,應用程式 Proxy 連接器就會執行 SSO,代表使用者對內部部署應用程式進行驗證。 後端應用程式會像是使用者本身一樣處理登入。
選擇 [傳遞] 選項可讓使用者存取已發佈的應用程式,而不需要向 Azure AD 進行驗證。
只有在 Azure AD 可以識別要求存取資源的使用者時,才可以執行 SSO,因此您的應用程式必須設定為在存取時透過 Azure AD 預先驗證使用者,如此 SSO 才會運作,否則將會停用 SSO 選項。
請參閱對 Azure AD 中的應用程式執行單一登入,以協助您在設定應用程式時選擇最適當的 SSO 方法。
使用其他類型的應用程式
Azure AD 應用程式 Proxy 也可以支援已開發的應用程式使用 Microsoft 驗證程式庫 (MSAL)。 其支援原生用戶端應用程式,可透過使用在用戶端要求標頭資訊中收到的 Azure AD 發行權杖,代表使用者執行預先驗證。
請參閱發佈原生和行動用戶端應用程式和宣告式應用程式,以了解應用程式 Proxy 的可用設定。
使用條件式存取來加強安全性
應用程式安全性需要一組進階的安全功能,以防止和因應內部部署和雲端中的複雜威脅。 攻擊者最常透過薄弱、預設或遭竊的使用者認證取得公司網路存取權。 Microsoft 身分識別導向的安全性可管理及保護特殊權限和非特殊權限的身分識別,藉此減少使用遭竊的認證。
下列功能可以用來支援 Azure AD 應用程式 Proxy:
以使用者和位置為基礎的條件式存取:透過位置型條件式存取原則,根據地理位置或 IP 位址限制使用者存取,以保護敏感性資料。
以裝置為基礎的條件式存取:確定只有已註冊、已核准且符合規範的裝置可以使用裝置型條件式存取來存取公司資料。
以應用程式為基礎的條件式存取:當使用者不在公司網路上時,不需要停止工作。 使用條件式存取安全存取公司雲端和內部部署應用程式並保持控制。
以風險為基礎的條件式存取:利用風險型條件式存取原則保護您的資料免於惡意駭客的攻擊,不論是在內部部署環境或雲端中,都可以將此原則套用至所有應用程式和所有使用者。
Azure AD 我的應用程式:部署應用程式 Proxy 服務,並安全發佈應用程式之後,您可以為您的使用者提供簡單的中樞,以探索並存取其所有應用程式。 藉由自助服務功能來提升生產力,例如透過我的應用程式要求存取新的應用程式和群組,或代表其他人管理這些資源的存取權。
管理您的實作
必要角色
Microsoft 提倡授與最低權限來透過 Azure AD 執行所需工作的原則。 檢閱可用的不同 Azure 角色,然後選擇正確的角色來滿足每個角色的需求。 某些角色可能需要暫時套用,並在部署完成後移除。
商務角色 | 商務工作 | Azure AD 角色 |
---|---|---|
技術支援中心管理員 | 通常僅限於合格使用者回報的問題,以及執行有限的工作,例如變更使用者的密碼、使重新整理權杖失效,以及監視服務健康情況。 | 服務台系統管理員 |
身分識別管理員 | 讀取 Azure AD 登入報告和稽核記錄,以對應用程式 Proxy 的相關問題進行偵錯。 | 安全性讀取者 |
應用程式擁有者 | 建立和管理企業應用程式、應用程式註冊和應用程式 Proxy 設定的所有層面。 | 應用程式管理員 |
基礎結構管理員 | 憑證變換擁有者 | 應用程式管理員 |
將能夠存取安全資訊或資源的人數降到最低,有助於降低惡意執行者取得未授權的存取權,或者授權使用者無意中影響到敏感資源的機率。
不過,使用者仍然需要執行日常的特殊權限作業,因此強制使用以 just-in-time (JIT) 為基礎的 Privileged Identity Management 原則可針對 Azure 資源提供隨選特殊權限存取,而 Azure AD 則是有效管理系統管理存取和稽核的建議方法。
報告和監控
Azure AD 可以透過稽核記錄和報告,為組織的應用程式使用情況和作業健康情況提供更深入的深入解析。 應用程式 Proxy也可讓您輕鬆地從 Azure 入口網站 和 Windows 事件記錄檔監視連接器。
應用程式稽核記錄
這些記錄會詳細地提供已設定應用程式 Proxy 的應用程式登入資訊,以及存取應用程式的裝置和使用者。 稽核記錄位於 Azure 入口網站和 udit API,可將其匯出。 此外,您的應用程式也可以使用使用情況和深入解析報表。
應用程式 Proxy 連接器監視
連接器和服務會負責所有高可用性的工作。 您可以從Azure 入口網站中的 [應用程式 Proxy] 頁面監視連接器的狀態。 如需連接器維護的詳細資訊,請參閱瞭解 Azure AD 應用程式 Proxy 連接器。
Windows 事件記錄檔和效能計數器
連接器有系統管理和工作階段記錄。 系統管理記錄包含索引鍵事件和其錯誤。 這些工作階段記錄包含所有交易,以及它們的處理詳細資料。 記錄檔和計數器位於 Windows 事件記錄檔中。如需詳細資訊,請參閱了解 Azure AD 應用程式 Proxy 連接器。 遵循本教學課程,在 Azure 監視器中設定事件記錄檔資料來源。
疑難排解指南和步驟
深入了解常見的問題,以及如何使用錯誤訊息疑難排解的指南來解決問題。
下列文章涵蓋的常見案例,也可以用來為您的支援組織建立疑難排解指南。