名前空間への暗号化された接続の要求

クライアント スクリプトとアプリケーションで認証に暗号化された接続を確立するように要求するには、名前空間を作成するマネージド オブジェクト フォーマット (MOF) .mof ファイルに RequiresEncryption 修飾子を追加します。

WMI 名前空間への暗号化された接続では、認証に RPC_C_AUTHN_LEVEL_PKT_PRIVACY (またはスクリプト内の PktPrivacy) を指定します。 RequiresEncryption 修飾子を指定すると、WMI は、暗号化された認証を明示的に使用しない限り、受信データ要求を拒否します。 詳細については、VBScript を使用した既定のプロセス セキュリティ レベルの設定に関する記事、または「C++ を使用した認証の設定」を参照してください。

この属性を追加して既存の名前空間を変更し、MOF ファイルをもう一度コンパイルすることもできます。 この RequiresEncryption は、MOF で、プラグマ名前空間プリプロセッサ命令と共に使用されます。

次の手順では、暗号化された接続を必要とする名前空間を設定します。

必要な暗号化を設定するには

  1. マネージド オブジェクト フォーマット (MOF) ファイルを作成するか、名前空間を定義する既存の MOF ファイルを変更します。

    次のコード サンプルでは、変更される名前空間が root\MyNamespace で、ファイルの名前が MyNamespace_security.mof であることが示されています。 RequiresEncryption にはブール型のデータが含まれているため、True または False に設定する必要があります。

    #pragma namespace("\\\\.\\Root\\MyNamespace") 
    
    [RequiresEncryption(TRUE)] 
    instance of __systemSecurity { };
    
  2. mofcomp.exe を実行して MOF ファイルをコンパイルします。

    c:\mofcomp MyNamespace_security.mof

    C++ では、IMoFCompiler メソッドを使用します。

DCOM では、WMI サービスが実行されている SVCHOST プロセスで必要なレベルにセキュリティをネゴシエートするため、WMI は既定の認証レベルを使用するクライアントを拒否します。 サービス ホストについて詳しくは、「プロバイダーのホスティングとセキュリティ」を参照してください。 WMI 名前空間に接続するときの認証レベルの設定について詳しくは、「C++ を使用した既定のプロセス セキュリティ レベルの設定」、「C++ を使用した認証の設定」、または VBScript を使用した既定のプロセス セキュリティ レベルの設定に関する記事を参照してください。

非同期コールバック接続でデータを返す場合、WMI は要求側のコンピューターにアクセス拒否メッセージを返します。 また、WMI は、暗号化された名前空間を持つコンピューターの NT イベント ログに、クライアントに対するセキュリティで保護された接続を確立できないことを示すログ エントリを作成します。

Windows Vista 以降では、WbemCore.log ファイルは存在しなくなりました。 NT イベント ログで、暗号化を必要とする名前空間への受信データ要求が拒否されたことを示すエントリを確認することができます。

名前空間セキュリティ記述子の設定

WbemAuthenticationLevelEnum

リモート WMI 接続のセキュリティ保護