次の方法で共有


セキュリティで保護されたデバイスのインストールの作成

ドライバーパッケージの作成時に、デバイスのインストールが常に安全な方法で実行されるようにする必要があります。 セキュアデバイスのインストールは、次の処理を行います。

  • デバイスとそのデバイスインターフェイスクラスへのアクセスを制限します

  • デバイス用に作成されたドライバーサービスへのアクセスを制限します

  • 変更または削除からドライバーファイルを保護します

  • デバイスのレジストリエントリへのアクセスを制限します

  • デバイスの WMI クラスへのアクセスを制限します

  • SetupAPI 関数を正確に使用します

デバイスインストールのセキュリティは、セキュリティ記述子によって 制御されます。 セキュリティ記述子を指定するための主なメディアは、INF ファイルです。 システムは既定のセキュリティ記述子を提供します。ほとんどの状況では、これらの記述子をオーバーライドする必要はありません。

デバイスとインターフェイスのセキュリティ設定

システムは、すべての システム提供のデバイスセットアップクラスに既定のセキュリティ記述子を提供します。 通常、これらの記述子を使用すると、システム管理者のフルアクセスと、ユーザーの読み取り/書き込み/アクセス実行が許可されます。 (該当する場合、デバイスへのアクセスを制御するセキュリティ記述子は、デバイスの デバイスインターフェイスクラスへのアクセスも制御します。)

WDM ドライバの INF ファイルは、システムの既定の設定をオーバーライドするクラスまたはデバイスごとにセキュリティ設定を指定できます。 新しいデバイスセットアップクラスを作成するベンダーは、クラスのセキュリティ記述子を指定する必要があります。 一般に、デバイス固有のセキュリティ記述子を指定する必要はありません。 同じクラスに属する異なるタイプのデバイスが、著しく異なるタイプのユーザーを有する場合、デバイス固有のセキュリティ記述子を指定すると便利な場合があります。

WDM デバイスセットアップクラスに属するすべてのデバイスのセキュリティ記述子を指定するには、INF AddReg ディレクティブをクラスインストーラーの INF ファイルの INF ClassInstall32 のセクション内で使用します。 AddReg ディレクティブは、デバイスタイプ およびセキュリティレジストリエントリの値を設定する add-registry-section を指す必要があります。 これらのレジストリ値は、指定したデバイスタイプの全デバイスのセキュリティ記述子を指定します。

WDM デバイスセットアップ クラスに属するひとつのデバイスのセキュリティ記述子を指定するには、 INF AddReg ディレクティブを、デバイスの INF ファイルの INF DDInstall.HW セクション内で使用します。 AddReg ディレクティブは、デバイスタイプ およびセキュリティレジストリエントリの値を設定する add-registry-section を指す必要があります。 これらのレジストリ値は、ハードウェア ID または互換性のある ID と一致するすべてのデバイスのセキュリティ記述子を指定し、それらは関連する INF Models セクションで指定されます。

既定では、システムはデバイスのセキュリティ記述子セットを、該当のデバイスを表すデバイスオブジェクトを開く要求に適用します (たとえば、NT デバイス名が \Device\DeviceName のデバイスを開く要求)。

ただし、システムは既定では、デバイスの名前空間内のオブジェクトを開く要求にデバイスのセキュリティ記述子セットを適用しません。この場合、デバイス名前空間には、名前が \Device\DeviceName\ObjectName という形式のすべてのオブジェクトが含まれます。 デバイスの名前空間内のオブジェクトに対するオープン要求に同じセキュリティ設定が適用されるようにするには、デバイスに対するFILE_DEVICE_SECURE_OPEN のデバイス特性フラグを設定します。 セキュリティで保護されたデバイスアクセスの詳細については、デバイス名前空間アクセスの制御 (Windows ドライバー) を参照してください。 FILE_DEVICE_SECURE_OPEN のデバイス特性フラグを設定する方法については、デバイス特性の指定 (Windows ドライバー) を参照してください。

PnP マネージャーは、ドライバーの AddDevice ルーチンを呼び出した後、デバイスオブジェクトのセキュリティ値を設定します。 一部の WDM ドライバでは、IoCreateDeviceSecure を呼び出して物理デバイスオブジェクト (PDO) を作成するときに、デバイス固有のセキュリティ記述子を指定できます。 詳細については、デバイスオブジェクトの保全を参照してください。

ドライバファイルのセキュリティ設定

INF CopyFiles ディレクティブを使用してファイルをコピーする場合は、ファイルリストセクションセキュリティ セクションを指定できます。 このセクションでは、CopyFiles ディレクティブによってコピーされるすべてのファイルのセキュリティ記述子を指定します。 ただし、インストール先が %SystemRoot% のシステムサブディレクトリのひとつである場合、ベンダーはドライバーファイルのセキュリティ記述子を指定する必要はありません。 (これらのサブディレクトリの詳細については、 Dirids を使用しています。) システムは、これらのサブディレクトリの既定のセキュリティ記述子を提供し、既定の記述子をオーバーライドしないでください。

ドライバーサービスのセキュリティ 設定

ドライバー INF ファイルの サービスインストールセクション内 (INF AddService ディレクティブを参照) には、セキュリティのエントリを含めることができます。 このエントリは、デバイスに関連付けられているドライバーサービスの開始、停止、構成などの操作を実行するために必要なアクセス許可を指定します。 ただし、システムはドライバーサービスの既定のセキュリティ記述子を提供します。通常、この既定の記述子をオーバーライドする必要はありません。

デバイスとドライバーのレジストリエントリのセキュリティ設定

INF AddReg ディレクティブを使用して INF ファイルのレジストリエントリを指定する場合は、追加レジストリセクション を含めることができます。それはセキュリティのセクションで、各 追加レジストリセクションに対応します。 追加レジストリセクションセキュリティセクションでは、関連付けられている追加レジストリセクションのセクションによって作成される、作成レジストリエントリへのアクセス許可を指定します。 システムは、HKR 相対ルートに従って作成されたすべてのレジストリエントリに対して、既定のセキュリティ記述子を提供します。 したがって、相対ルートに従ってレジストリエントリを作成するときに、セキュリティ記述子を指定する必要はありません。

WMI クラスのセキュリティ設定

システムは、WMI クラスを識別する GUID に既定のセキュリティ記述子を割り当てます。 Windows XP とそれ以前のバージョンのオペレーティングシステムの場合、WMI GUID の既定のセキュリティ記述子を使用すると、すべてのユーザーにフルアクセスできます。 Windows Server 2003 以降、既定のセキュリティ記述子では管理者のみがアクセスできます。

ドライバが WMI クラスを定義していて、これらのクラスに対してシステムの既定のセキュリティ記述子を使用しない場合は、デバイスの INF ファイル内の INF DDInstall.WMI セクションを使用してセキュリティ記述子を指定できます。

SetupAPI 関数の正確な使用

ドライバーパッケージに、SetupAPI 関数呼び出しのインストーラー、共同インストーラー、またはその他のインストールアプリケーションが含まれている場合は、SetupAPI 使用に関するガイドラインに従う必要があります。

インストールセキュリティ設定のテスト

SetupAPI ログを使用して、デバイスのインストールに関連付けられているセキュリティ設定が正しく指定されていることを確認します。 ログレベルを冗長化 (0x0000FFFF) に設定し、さまざまなインストールシナリオを試してください。

このようなシナリオには、ユーザーアカウントとシステム管理者アカウントの両方からの初期インストールと再インストールの両方を含める必要があります。 ソフトウェアをインストールする前にデバイスを接続してみてください。また、その逆も同様です。

インストールが成功した場合は、ログを表示してエラーが発生しなかったことを確認します。 インストールに失敗した場合は、ログを表示してエラーの原因を特定します。

さらに、インストールが完了したら、次の操作を行うことができます。

  • レジストリエディタを使用して、レジストリエントリに割り当てられているセキュリティ設定を表示します。

  • マイコンピュータを使用して、ファイルに割り当てられているセキュリティ設定を表示します。