デバイス アクセスの制御

UMDF ドライバー ホスト プロセスは、ローカル サービス アカウントのコンテキストで実行されます。 ドライバーは、ローカル サービス アカウントへの一般化されたアクセスを許可しない他のデバイスまたはコンポーネントにアクセスする必要がある場合があります。

Windows 8 以降、オペレーティング システムには UMDF ドライバーを識別するセキュリティ識別子 (SID) が含まれています。 デバイスのセキュリティ要件にこの SID を含めることで、デバイスまたはコンポーネントは、ローカル サービス アカウントからの他の要求からのアクセスを防ぎながら、UMDF ドライバーへのアクセスを許可できます。

UMDF ドライバーの SID は SDDL_USER_MODE_DRIVERS で、定義は sddl.h にあります。 この SID の完全な表現は次のとおりです。

S-1-5-84-0-0-0-0-0

この SID の省略形は UD です。 この省略形は、Windows 8 以降で使用できます。

UMDF ドライバーの外部のドライバーは、デバイス オブジェクトを作成する前に、その INF ファイルまたはドライバーで SID を指定できます。

INF ファイルでのデバイス セキュリティの指定

INF ファイルでは、省略形または完全に指定された形式の SID を使用できます。

省略形は、Windows 8 以降で使用できます。

HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)"   

Windows 8 より前のオペレーティング システムでは、完全に指定された形式を使用する必要があります。

HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;S-1-5-84-0-0-0-0-0)"       

KMDF ドライバーでのデバイス セキュリティの指定

ドライバーでセキュリティ要件を指定するには、省略形を使用する必要があり、これは Windows 8 以降でのみ使用できます。 たとえば、KMDF ドライバーは、次を使用して UMDF ドライバーからデバイスへのアクセスを有効にすることができます。

RtlInitUnicodeString(&sddlString, L"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)");
status = WdfDeviceInitAssignSDDLString(DeviceInit, &sddlString);