共用方式為


存取控制 (Windows 篩選平臺)

在 Windows 篩選平臺 (WFP) 中,基礎篩選引擎 (BFE) 服務會根據存取令牌和安全性描述元實作標準的 Windows 訪問控制模型

訪問控制模型

新增新的 WFP 物件時,可以指定安全性描述元,例如篩選條件和子層。 安全性描述項是使用 WFP 管理功能 Fwpm*GetSecurityInfo0Fwpm*SetSecurityInfo0 來管理,其中 * 代表 WFP 對象的名稱。 這些函式在語意上與 Windows GetSecurityInfo 和 SetSecurityInfo 函式相同。

注意

Fwpm*SetSecurityInfo0 函式無法從明確交易內呼叫。

注意

Fwpm*SetSecurityInfo0 函式只有在用來管理在同一會話內建立的動態物件時,才能從動態會話內呼叫。

篩選引擎的預設安全性描述元(下圖中的根引擎物件)如下所示。

  • 將GENERIC_ALL (GA) 訪問許可權授與內建 管理員 istrators 群組。
  • 將GENERIC_READ (GR) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) 訪問許可權授與網路設定操作員。
  • 將 GRGWGX 訪問許可權授與下列服務安全性識別碼 (SSID:MpsSvc (Windows 防火牆)、NapAgent (網路存取保護代理程式)、PolicyAgent (IPsec 原則代理程式)、RpcSs (遠端過程調用)和 WdiServiceHost (診斷服務主機)。
  • 將FWPM_ACTRL_OPENFWPM_ACTRL_CLASSIFY與每個人。 (這些是糧食計劃署特定的訪問許可權,如下表所述。

其餘的預設安全性描述元是透過繼承衍生而來。

有一些存取檢查,例如 Fwpm*Add0Fwpm*CreateEnumHandle0Fwpm*SubscribeChanges0 函式呼叫,無法在個別物件層級完成。 針對這些函式,每個物件類型都有容器物件。 針對標準物件類型(例如提供者、圖說文字、篩選條件),現有的 Fwpm*GetSecurityInfo0Fwpm*SetSecurityInfo0 函式會多載,讓 Null GUID 參數識別相關聯的容器。 對於其他物件類型(例如網路事件和 IPsec 安全性關聯),有明確的函式可用來管理容器的安全性資訊。

BFE 支援自動繼承任意 存取控制 清單 (DACL) 訪問控制專案 (ACE)。 BFE 不支援系統 存取控制 清單 (SACL) ACE。 物件會繼承其容器的 ACE。 容器會從篩選引擎繼承 ACE。 下圖顯示傳播路徑。

Diagram that shows the ACE propagation paths, starting with 'Engine'.

針對標準物件類型,BFE 會強制執行所有泛型和標準訪問許可權。 此外,WFP 會定義下列特定訪問許可權。

WFP 存取權 描述
FWPM_ACTRL_ADD
將物件新增至容器的必要專案。
FWPM_ACTRL_ADD_LINK
建立物件關聯的必要專案。 例如,若要新增參考圖說文字的篩選條件,呼叫端必須具有圖說文字的ADD_LINK存取權。
FWPM_ACTRL_BEGIN_READ_TXN
開始明確讀取交易的必要專案。
FWPM_ACTRL_BEGIN_WRITE_TXN
開始明確寫入交易的必要專案。
FWPM_ACTRL_CLASSIFY
必須針對使用者模式層進行分類。
FWPM_ACTRL_ENUM
列舉容器中物件的必要專案。 不過,列舉值只會傳回呼叫端具有FWPM_ACTRL_READ存取權的物件。
FWPM_ACTRL_OPEN
需要以 BFE 開啟會話。
FWPM_ACTRL_READ
讀取物件屬性的必要專案。
FWPM_ACTRL_READ_STATS
讀取統計數據的必要專案。
FWPM_ACTRL_SUBSCRIBE
訂閱通知的必要專案。 訂閱者只會接收其具有FWPM_ACTRL_READ存取權之物件的通知。
FWPM_ACTRL_WRITE
必須設定引擎選項。

BFE 會略過核心模式呼叫端的所有存取檢查。

為了避免系統管理員將自己鎖定在 BFE 外,內建系統管理員群組的成員一律會被 授與引擎物件FWPM_ACTRL_OPEN 。 因此,系統管理員可以透過下列步驟重新取得存取權。

  • 啟用SE_TAKE_OWNERSHIP_NAME許可權。
  • 呼叫 FwpmEngineOpen0。 呼叫成功,因為呼叫端是內建 管理員 istrators 的成員。
  • 取得引擎對象的擁有權。 這會成功,因為呼叫端具有 SE_TAKE_OWNERSHIP_NAME 許可權。
  • 更新 DACL。 這會成功,因為擁有者一律具有 WRITE_DAC 存取權

由於 BFE 支援自己的自定義稽核,因此不會產生一般物件存取稽核。 因此,會忽略 SACL。

WFP 必要訪問許可權

下表顯示 WFP 函式為了存取各種篩選平台物件所需的訪問許可權。 FwpmFilter* 函式會列為存取標準物件的範例。 所有其他存取標準物件的函式都遵循 FwpmFilter* 函式存取模型。

函式 已檢查物件 需要存取權
FwpmEngineOpen0 引擎 FWPM_ACTRL_OPEN
FwpmEngineGetOption0 引擎 FWPM_ACTRL_READ
FwpmEngineSetOption0 引擎 FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 引擎 FWPM_ACTRL_ENUM
FwpmTransactionBegin0 引擎 FWPM_ACTRL_BEGIN_READ_TXN和FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 容器提供者

子層
圖說文字
提供者內容
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
篩選器 DELETE
FwpmFilterGetById0
FwpmFilterGetByKey0
篩選器 FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 容器篩選
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 容器 FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 容器 FWPM_ACTRL_READ
IPsecGetStatistics0 IPsec SA DB FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA DB FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA DB DELETE
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB FWPM_ACTRL_ENUM和FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA DB FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA DB DELETE
IkeextSaGetById0 IKE SA DB FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA DB FWPM_ACTRL_ENUM和FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 容器 FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
除了個別篩選和提供者內容之外,沒有其他存取檢查