Share via


アクセス制御 (Windows フィルタリング プラットフォーム)

Windows フィルタリング プラットフォーム (WFP) では、基本フィルター エンジン (BFE) サービスは、アクセス トークンとセキュリティ記述子に基づいて標準 の Windows アクセス制御モデル を実装します。

アクセス制御モデル

セキュリティ記述子は、フィルターやサブレイヤーなどの新しい WFP オブジェクトを追加するときに指定できます。 セキュリティ記述子は、WFP 管理機能 Fwpm*GetSecurityInfo0Fwpm*SetSecurityInfo0 を使用して管理されます。ここで * 、WFP オブジェクトの名前を表します。 これらの関数は、Windows GetSecurityInfo 関数および SetSecurityInfo 関数と意味的に同じです。

注意

Fwpm*SetSecurityInfo0 関数は、明示的なトランザクション内から呼び出すことはできません。

注意

Fwpm*SetSecurityInfo0 関数は、同じセッション内で作成された動的オブジェクトを管理するために使用されている場合にのみ、動的セッション内から呼び出すことができます。

フィルター エンジンの既定のセキュリティ記述子 (下の図のルート エンジン オブジェクト) は次のとおりです。

  • 組み込みの Administrators グループに GENERIC_ALL (GA) アクセス権を付与します。
  • GENERIC_READ (GR ) GENERIC_WRITE (GW) GENERIC_EXECUTE (GX) アクセス権をネットワーク構成オペレーターに付与します。
  • 次のサービス セキュリティ識別子 (SSD) に GRGWGX アクセス権を付与します。MpsSvc (Windows ファイアウォール)、NapAgent (ネットワーク アクセス保護エージェント)、PolicyAgent (IPsec ポリシー エージェント)、RpcSs (リモート プロシージャ コール)、WdiServiceHost (診断サービス ホスト)。
  • すべてのユーザーにFWPM_ACTRL_OPENFWPM_ACTRL_CLASSIFYを付与します。 (これらは WFP 固有のアクセス権であり、以下の表で説明します)。

残りの既定のセキュリティ記述子は、継承によって派生します。

Fwpm*Add0Fwpm*CreateEnumHandle0Fwpm*SubscribeChanges0 関数呼び出しなど、個々のオブジェクト レベルでは実行できないアクセス チェックがあります。 これらの関数には、オブジェクトの種類ごとにコンテナー オブジェクトがあります。 標準のオブジェクトの種類 (プロバイダー、吹き出し、フィルターなど) の場合、既存の Fwpm*GetSecurityInfo0 関数と Fwpm*SetSecurityInfo0 関数がオーバーロードされ、null GUID パラメーターによって関連付けられているコンテナーが識別されます。 その他のオブジェクトの種類 (ネットワーク イベントや IPsec セキュリティ 関連付けなど) には、コンテナーのセキュリティ情報を管理するための明示的な関数があります。

BFE では、随意Access Controlリスト (DACL) アクセス制御エントリ (ACE) の自動継承がサポートされています。 BFE では、システム Access Control リスト (SACL) ACE はサポートされていません。 オブジェクトは、そのコンテナーから ACE を継承します。 コンテナーはフィルター エンジンから ACE を継承します。 伝達パスを次の図に示します。

ACE 伝達パスを示す図。

標準オブジェクトの種類の場合、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 から自分自身をロックしないようにするために、組み込みの administrators グループのメンバーには、常にエンジン オブジェクト へのFWPM_ACTRL_OPEN が付与されます。 したがって、管理者は次の手順を使用してアクセス権を回復できます。

  • SE_TAKE_OWNERSHIP_NAME特権を有効にします。
  • FwpmEngineOpen0 を呼び出します。 呼び出し元が組み込み管理者のメンバーであるため、呼び出しは成功します。
  • エンジン オブジェクトの所有権を取得します。 呼び出し元に 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_TXNFWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 コンテナー プロバイダー
レイヤー
Sub-Layer
コールアウト
プロバイダー コンテキスト
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_ENUMFWPM_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_ENUMFWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 コンテナー FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
個々のフィルターとプロバイダー コンテキスト以外の追加のアクセス チェックはありません