共用方式為


AD FS 2.0 中的用戶端存取控制原則

Active Directory 同盟服務 2.0 中的用戶端存取原則可讓您限制或授與使用者對資源的存取權。 此文件說明如何在 AD FS 2.0 中啟用用戶端存取原則,以及如何設定最常見的案例。

在 AD FS 2.0 中啟用用戶端存取原則

若要啟用用戶端存取原則,請遵循下列步驟。

步驟 1:在 AD FS 伺服器上安裝 AD FS 2.0 的更新彙總套件 2 套件

下載 Active Directory 同盟服務 (AD FS) 2.0 的更新彙總套件 2 套件,並將其安裝在所有同盟伺服器和同盟伺服器 Proxy 上。

步驟 2:將五個宣告規則新增至 Active Directory 宣告提供者信任

在所有的 AD FS 伺服器和 Proxy 上安裝更新彙總套件 2 之後,請使用下列程序新增一組宣告規則,讓新的宣告類型可供原則引擎使用。

為此,您應使用下列程序,為每個新的要求內容宣告類型新增五個接受轉換規則。

在 Active Directory 宣告提供者信任上建立新的接受轉換規則,以傳遞每個新的要求內容宣告類型。

若要為這五個內容宣告類型將宣告規則新增至 Active Directory 宣告提供者信任:

  1. 按一下 [開始],依序指向 [程式集]、[系統管理工具],然後按一下 [AD FS 2.0 管理]。

  2. 在主控台樹狀目錄中的 [AD FS 2.0]\[信任關係] 底下,按一下 [宣告提供者信任]、以滑鼠右鍵按一下 [Active Directory],然後按一下 [編輯宣告規則]。

  3. 在 [編輯宣告規則] 對話方塊中選取 [接受轉換規則] 索引標籤,然後按一下 [新增規則] 以啟動規則精靈。

  4. 在 [選取規則範本] 頁面上的 [宣告規則範本] 底下,從清單中選取 [傳遞或篩選傳入宣告],然後按 [下一步]。

  5. 在 [設定規則] 頁面上的 [宣告規則名稱] 底下,輸入此規則的顯示名稱;在 [傳入宣告類型] 中輸入下列宣告類型 URL,然後選取 [傳遞所有宣告值]。
    https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip

  6. 若要確認規則,請在清單中選取規則,然後按一下 [編輯規則],再按一下 [檢視規則語言]。 宣告規則語言應會顯示如下:c:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip"] => issue(claim = c);

  7. 按一下完成。

  8. 在 [編輯宣告規則] 對話方塊中按一下 [確定],以儲存規則。

  9. 重複步驟 2 到 6,分別為下方顯示的其餘四個宣告類型建立額外的宣告規則,直到五個規則都建立為止。

    https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application

    https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent

    https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy

    https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path

步驟 3:更新 Microsoft Office 365 身分識別平台信賴憑證者信任

選擇下列其中一個範例案例,在最符合組織需求的 Microsoft Office 365 身分識別平台信賴憑證者信任上設定宣告規則。

AD FS 2.0 的用戶端存取原則案例

以下幾節將說明 AD FS 2.0 的案例

案例 1:封鎖對 Office 365 的所有外部存取

此用戶端存取原則案例會允許從所有內部用戶端存取,並根據外部用戶端的 IP 位址封鎖所有外部用戶端。 此規則集以預設的發行授權規則「允許所有使用者存取」為基礎。 您可以使用下列程序,將發行授權規則新增至 Office 365 信賴憑證者信任。

建立規則以封鎖對 Office 365 的所有外部存取

  1. 按一下 [開始],依序指向 [程式集]、[系統管理工具],然後按一下 [AD FS 2.0 管理]。
  2. 在主控台樹狀目錄的 [AD FS 2.0]\[信任關係] 底下,按一下 [信賴憑證者信任],以滑鼠右鍵按一下 [Microsoft Office 365 身分識別平台] 信任,然後按一下 [編輯宣告規則]。
  3. 在 [編輯宣告規則] 對話方塊中,選取 [發佈授權規則] 索引標籤,然後按一下 [新增規則] 以啟動宣告規則精靈。
  4. 在 [選取規則範本] 頁面上的 [宣告規則範本] 底下,從清單中選取 [傳送使用自訂規則的宣告],然後按 [下一步]。
  5. 在 [設定規則] 頁面的 [宣告規則名稱] 底下,輸入規則的顯示名稱。 在 [自訂規則] 底下,輸入或貼上下列宣告規則語言語法:exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
  6. 按一下完成。 確認新規則隨即出現在 [發行授權規則] 清單中的 [允許所有使用者存取] 規則下方。
  7. 若要儲存規則,請在 [編輯宣告規則] 對話方塊中按一下 [確定]。

注意

您必須將上述「公用 IP 位址運算式」的值取代為有效的 IP 運算式;如需詳細資訊,請參閱「建置 IP 位址範圍運算式」。

案例 2:封鎖對 Office 365 的所有外部存取,Exchange ActiveSync 除外

下列範例會允許從內部用戶端 (包括 Outlook ) 存取所有 Office 365 應用程式 (包括 Exchange Online)。 它會封鎖來自位於公司網路外部用戶端的存取,如用戶端 IP 位址所指出,但 Exchange ActiveSync 用戶端 (例如智慧型手機) 除外。 此規則集以標題為「允許所有使用者存取」的預設發行授權規則為基礎。 使用下列步驟,使用宣告規則精靈將發行授權規則新增至 Office 365 信賴憑證者信任:

建立規則以封鎖對 Office 365 的所有外部存取

  1. 按一下 [開始],依序指向 [程式集]、[系統管理工具],然後按一下 [AD FS 2.0 管理]。
  2. 在主控台樹狀目錄的 [AD FS 2.0]\[信任關係] 底下,按一下 [信賴憑證者信任],以滑鼠右鍵按一下 [Microsoft Office 365 身分識別平台] 信任,然後按一下 [編輯宣告規則]。
  3. 在 [編輯宣告規則] 對話方塊中,選取 [發佈授權規則] 索引標籤,然後按一下 [新增規則] 以啟動宣告規則精靈。
  4. 在 [選取規則範本] 頁面上的 [宣告規則範本] 底下,從清單中選取 [傳送使用自訂規則的宣告],然後按 [下一步]。
  5. 在 [設定規則] 頁面的 [宣告規則名稱] 底下,輸入規則的顯示名稱。 在 [自訂規則] 底下,輸入或貼上下列宣告規則語言語法:exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.Autodiscover"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.ActiveSync"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
  6. 按一下完成。 確認新規則隨即出現在 [發行授權規則] 清單中的 [允許所有使用者存取] 規則下方。
  7. 若要儲存規則,請在 [編輯宣告規則] 對話方塊中按一下 [確定]。

注意

您必須將上述「公用 IP 位址運算式」的值取代為有效的 IP 運算式;如需詳細資訊,請參閱「建置 IP 位址範圍運算式」。

案例 3:封鎖對 Office 365 的所有外部存取,瀏覽器型應用程式除外

此規則集以標題為「允許所有使用者存取」的預設發行授權規則為基礎。 依照下列步驟,使用宣告規則精靈將發行授權規則新增至 Microsoft Office 365 身分識別平台信賴憑證者信任:

注意

由於被動 (Web 型) 要求的用戶端存取原則標頭有所限制,第三方 Proxy 不支援此案例。

建立規則以封鎖對 Office 365 的所有外部存取,瀏覽器型應用程式除外

  1. 按一下 [開始],依序指向 [程式集]、[系統管理工具],然後按一下 [AD FS 2.0 管理]。
  2. 在主控台樹狀目錄的 [AD FS 2.0]\[信任關係] 底下,按一下 [信賴憑證者信任],以滑鼠右鍵按一下 [Microsoft Office 365 身分識別平台] 信任,然後按一下 [編輯宣告規則]。
  3. 在 [編輯宣告規則] 對話方塊中,選取 [發佈授權規則] 索引標籤,然後按一下 [新增規則] 以啟動宣告規則精靈。
  4. 在 [選取規則範本] 頁面上的 [宣告規則範本] 底下,從清單中選取 [傳送使用自訂規則的宣告],然後按 [下一步]。
  5. 在 [設定規則] 頁面的 [宣告規則名稱] 底下,輸入規則的顯示名稱。 在 [自訂規則] 底下,輸入或貼上下列宣告規則語言語法:exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value == "/adfs/ls/"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
  6. 按一下完成。 確認新規則隨即出現在 [發行授權規則] 清單中的 [允許所有使用者存取] 規則下方。
  7. 若要儲存規則,請在 [編輯宣告規則] 對話方塊中按一下 [確定]。

案例 4:封鎖指定 Active Directory 群組對 Office 365 的所有外部存取

下列範例會根據 IP 位址,從內部用戶端啟用存取。 它會封鎖位於公司網路外部、具有外部用戶端 IP 位址的用戶端所進行的存取,但指定 Active Directory 群組中的個人除外。此規則集以標題為「允許所有使用者存取」的預設發行授權規則為基礎。 依照下列步驟,使用宣告規則精靈將發行授權規則新增至 Microsoft Office 365 身分識別平台信賴憑證者信任:

建立規則以封鎖對 Office 365 的所有外部存取,但指定的 Active Directory 群組除外

  1. 按一下 [開始],依序指向 [程式集]、[系統管理工具],然後按一下 [AD FS 2.0 管理]。
  2. 在主控台樹狀目錄的 [AD FS 2.0]\[信任關係] 底下,按一下 [信賴憑證者信任],以滑鼠右鍵按一下 [Microsoft Office 365 身分識別平台] 信任,然後按一下 [編輯宣告規則]。
  3. 在 [編輯宣告規則] 對話方塊中,選取 [發佈授權規則] 索引標籤,然後按一下 [新增規則] 以啟動宣告規則精靈。
  4. 在 [選取規則範本] 頁面上的 [宣告規則範本] 底下,從清單中選取 [傳送使用自訂規則的宣告],然後按 [下一步]。
  5. 在 [設定規則] 頁面的 [宣告規則名稱] 底下,輸入規則的顯示名稱。 在 [自訂規則] 底下,輸入或貼上下列宣告規則語言語法:exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && exists([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value =~ "Group SID value of allowed AD group"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
  6. 按一下完成。 確認新規則隨即出現在 [發行授權規則] 清單中的 [允許所有使用者存取] 規則下方。
  7. 若要儲存規則,請在 [編輯宣告規則] 對話方塊中按一下 [確定]。

說明上述案例中使用的宣告規則語言語法

描述 宣告規則語言語法
「允許所有使用者存取」的預設 AD FS 規則。 此規則應已存在於 Microsoft Office 365 身分識別平台信賴憑證者信任的發行授權規則清單中。 => issue(Type = "<https://schemas.microsoft.com/authorization/claims/permit>", Value = "true");
將此子句新增至新的自訂規則,會指定要求來自於同盟伺服器 Proxy (亦即,具有 x-ms-proxy 標頭)
建議所有規則都應包含此子句。 exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy>"])
用來確立發出要求的用戶端具有已定義的可接受範圍內的 IP。 NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip>", Value=~"customer-provided public ip address regex"])
此子句是用來指定若存取的應用程式不是 Microsoft.Exchange.ActiveSync,則應拒絕要求。 NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application>", Value=="Microsoft.Exchange.ActiveSync"])
此規則可讓您判斷呼叫是不是透過網頁瀏覽器進行的,且不會遭到拒絕。 NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path>", Value == "/adfs/ls/"])
此規則指出,僅應拒絕特定 Active Directory 群組中的使用者 (根據 SID 值)。 在此陳述式中新增 NOT,表示無論位置為何都會允許使用者群組。 exists([Type == "<https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid>", Value =~ "{Group SID value of allowed AD group}"])
這是在符合上述所有條件時發出拒絕的必要子句。 => issue(Type = "<https://schemas.microsoft.com/authorization/claims/deny>", Value = "true");

建立 IP 位址範圍運算式

x-ms-forwarded-client-ip 宣告會從目前僅由 Exchange Online 設定的 HTTP 標頭填入,這會在將驗證要求傳遞至 AD FS 時填入標頭。 宣告的值可能是下列其中一項:

注意

Exchange Online 目前僅支援 IPV4 而非 IPV6 位址。

單一 IP 位址:直接連線至 Exchange Online 的用戶端的 IP 位址

注意

公司網路上用戶端的 IP 位址會顯示為組織輸出 Proxy 或閘道的外部介面 IP 位址。

透過 VPN 或 Microsoft DirectAccess (DA) 連線到公司網路的用戶端,可能會根據 VPN 或 DA 的設定,顯示為內部公司用戶端或外部用戶端。

一或多個 IP 位址:當 Exchange Online 無法判斷連線用戶端的 IP 位址時,它會根據 x-forwarded-for 標頭的值來設定值,這是可包含在 HTTP 型要求中的非標準標頭,且受到市場上許多用戶端、負載平衡器和 Proxy 支援。

注意

多個 IP 位址,指出用戶端 IP 位址和傳遞要求的每個 Proxy 的位址將會以逗號分隔。

與 Exchange Online 基礎結構相關的 IP 位址將不會出現在清單上。

[規則運算式]

當您必須比對某個範圍的 IP 位址時,必須建構規則運算式來執行比較。 在接下來的一系列步驟中,我們將提供如何建構這類運算式以比對下列位址範圍的範例 (請注意,您必須變更這些範例以比對您的公用 IP 範圍):

  • 192.168.1.1 – 192.168.1.25
  • 10.0.0.1 – 10.0.0.14

首先,比對單一 IP 位址的基本模式,如下所示:\b###.###.###.###\b

為此,我們可以使用 OR 運算式比對兩個不同的 IP 位址,如下所示:\b###.###.###.###\b|\b###.###.###.###\b

因此,只比對兩個位址 (例如 192.168.1.1 或 10.0.0.1) 的範例會是:\b192.168.1.1\b|\b10.0.0.1\b

這可提供您輸入任意數目位址的技術。 必須允許某個位址範圍時,例如 192.168.1.1 - 192.168.1.25,比對必須逐字元完成:\b192.168.1.([1-9]|1[0-9]|2[0-5])\b

注意

將 IP 位址視為字串,而不是數字。

規則劃分如下:\b192.168.1。

這會比對以 192.168.1 開頭的任何值。

以下會比對最後的小數點之後位址部分所需的範圍:

  • ([1-9] 比對結尾為 1-9 的位址
  • |1[0-9] 比對結尾為 10-19 的位址
  • |2[0-5]) 比對結尾為 20-25 的位址

注意

括弧必須正確放置,才不會開始比對 IP 位址的其他部分。

比對到 192 區塊之後,我們可以為 10 區塊撰寫類似的運算式:\b10.0.0.([1-9]|1[0-4])\b

並將它們放在一起,下列運算式應該會比對 "192.168.1.1~25" 和 "10.0.0.1~14" 的所有位址:\b192.168.1.([1-9]|1[0-9]|2[0-5])\b|\b10.0.0.([1-9]|1[0-4])\b

測試運算式

Regex 運算式可能會變得相當棘手,因此強烈建議您使用 RegEx 驗證工具。 如果您在網際網路上搜尋 "online regex expression builder",您會發現數個良好的線上公用程式,可讓您針對範例資料試用您的運算式。

測試運算式時,請務必了解預期要比對的項目。 Exchange Online 系統可能會傳送許多 IP 位址,並以逗號分隔。 上述提供的運算式將適用於此作業。 不過,在測試 RegEx 運算式時,請務必考慮這個問題。 例如,其中一個可能會使用下列範例輸入來驗證上述範例:

192.168.1.1、192.168.1.2、192.169.1.1。 192.168.12.1、192.168.1.10、192.168.1.25、192.168.1.26、192.168.1.30、1192.168.1.20

10.0.0.1、10.0.0.5、10.0.0.10、10.0.1.0、10.0.1.1、110.0.0.1、10.0.0.14、10.0.0.15、10.0.0.10、10,0.0.1

驗證部署

安全性稽核記錄

若要確認新的要求內容宣告正在傳送,且可供 AD FS 宣告處理管線使用,請在 AD FS 伺服器上啟用稽核記錄。 然後,傳送一些驗證要求,並檢查標準安全性稽核記錄項目中的宣告值。

若要在 AD FS 伺服器上啟用將稽核事件記錄到安全性記錄檔的功能,請執行「設定 AD FS 2.0 的稽核」中的步驟。

事件記錄

根據預設,失敗的要求會記錄到位於 [應用程式及服務記錄檔]\[AD FS 2.0]\[管理] 底下的應用程式事件記錄檔。如需 AD FS 事件記錄的詳細資訊,請參閱設定 AD FS 2.0 事件記錄

設定詳細 AD FS 追蹤記錄

AD FS 追蹤事件會記錄到 AD FS 2.0 偵錯記錄檔。 若要啟用追蹤,請參閱設定 AD FS 2.0 的偵錯追蹤

啟用追蹤後,請使用下列命令列語法來啟用詳細記錄層級:wevtutil.exe sl “AD FS 2.0 Tracing/Debug” /l:5

如需新宣告類型的詳細資訊,請參閱 AD FS 宣告類型