今後の予定:セキュリティ展示会および会議(ブースC57) - ICCシドニー、ダーリングハーバー - 7月24-26、2019
  • ホーム
  • Kb
  • 非同期呼び出しのためのWMIアクセスが拒否されました

非同期呼び出しのためのWMIアクセスが拒否されました

リモートマシンへのWMIイベントの非同期コールバックについて

あなたは次のことをする必要があります。
リンク:
http://stackoverflow.com/questions/2782317/exception-while-managementeventwatcherwmi-to-notify-events-from-remote-machine
https://msdn.microsoft.com/en-us/library/aa393266(v=vs.85).aspx

テキスト:
ユーザーがリモートからコンピュータにアクセスできるようにDCOMセキュリティを設定する
WMIのセキュリティは、WMI名前空間への接続に関連しています。 WMIはDCOMを使用してリモート呼び出しを処理します。 リモートコンピュータに接続できない理由の1つは、DCOM障害(「DCOMアクセスが拒否されました」という小数点以下の-2147024891または16進数の0x80070005)によるものです。 C ++アプリケーションのWMIでのDCOMセキュリティの詳細については、「クライアントアプリケーションプロセスセキュリティの設定」を参照してください。
コントロールパネルの[管理ツール]にあるDCOM Configユーティリティ(DCOMCnfg.exe)を使用して、WMIのDCOM設定を構成できます。 このユーティリティは、特定のユーザーがDCOMを使用してコンピュータにリモートで接続できるようにするための設定を公開します。 Administratorsグループのメンバは、既定でコンピュータにリモートから接続できます。 このユーティリティを使用すると、WMIサービスを開始、アクセス、および構成するセキュリティを設定できます。
次の手順では、特定のユーザーとグループに対してDCOMリモート起動とアクセス許可を与える方法を説明します。 コンピュータAがコンピュータBにリモートで接続している場合、コンピュータBのAdministratorsグループに属していないユーザーまたはグループがコンピュータBのDCOM起動およびアクティブ化呼び出しを実行できるように、コンピュータBのこれらのアクセス許可を設定できます。
Aa393266.wedge(ja-jp、VS.85).gifユーザーまたはグループのDCOMリモート起動およびアクティブ化のアクセス許可を与える
開始をクリックして実行をクリックして、DCOMCNFGを入力して、OKを次にクリックします。
[コンポーネントサービス]ダイアログボックスで、[コンポーネントサービス]、[コンピュータ]を順に展開し、[マイコンピュータ]を右クリックし、[プロパティ]をクリックします。
[マイコンピュータのプロパティ]ダイアログボックスで、[COMセキュリティ]タブをクリックします。
[起動とアクティブ化のアクセス許可]で[制限の編集]をクリックします。
グループまたはユーザー名の一覧に名前またはグループが表示されない場合は、[起動許可]ダイアログボックスで次の手順を実行します。
起動許可ダイアログボックスで、追加をクリックします。
[ユーザー、コンピュータ、またはグループの選択]ダイアログボックスで、[選択するオブジェクト名を入力してください]ボックスに名前とグループを追加し、[OK]をクリックします。
[起動許可]ダイアログボックスで、[グループ名またはユーザー名]ボックスでユーザーとグループを選択します。 [ユーザーのアクセス許可]の[許可]列で[リモート起動]を選択し、[リモートアクティブ化]を選択し、[OK]をクリックします。
次の手順では、特定のユーザーとグループに対してDCOMリモートアクセス許可を与える方法を説明します。 コンピュータAがコンピュータBにリモートで接続している場合、コンピュータBのAdministratorsグループに属していないユーザーまたはグループがコンピュータBに接続できるように、コンピュータBに対してこれらのアクセス許可を設定できます。
Aa393266.wedge(ja-jp、VS.85).gif DCOMリモートアクセス許可を与えるには
開始をクリックして実行をクリックして、DCOMCNFGを入力して、OKを次にクリックします。
[コンポーネントサービス]ダイアログボックスで、[コンポーネントサービス]、[コンピュータ]を順に展開し、[マイコンピュータ]を右クリックし、[プロパティ]をクリックします。
[マイコンピュータのプロパティ]ダイアログボックスで、[COMセキュリティ]タブをクリックします。
[アクセス許可]で[制限の編集]をクリックします。
[アクセス許可]ダイアログボックスで、[グループ名またはユーザー名]ボックスの[ANONYMOUS LOGON]を選択します。 [ユーザーのアクセス許可]の[許可]列で[リモートアクセス]を選択し、[OK]をクリックします。

リモートWMI接続の設定

リモートコンピュータのWMI名前空間に接続するには、Windowsファイアウォール、ユーザーアカウント制御(UAC)、DCOM、またはCIMOM(Common Information Model Object Manager)の設定を変更する必要があります。
このトピックでは、次のセクションについて説明します。
Windowsファイアウォールの設定
ユーザーアカウント制御の設定
DCOM設定
CIMOMの設定
関連するトピック
Windowsファイアウォールの設定
Windowsファイアウォール設定のWMI設定では、他のDCOMアプリケーションではなくWMI接続のみが有効になります。
ファイアウォールでは、リモートターゲットコンピュータのWMIの例外を設定する必要があります。 WMIの例外は、WMIがUnsecapp.exeへのリモート接続と非同期コールバックを受信することを許可します。 詳細については、「非同期呼び出しのセキュリティの設定」を参照してください。
クライアントアプリケーションが独自のシンクを作成する場合、そのシンクをファイアウォールの例外に明示的に追加してコールバックを成功させる必要があります。
winmgmt / standalonehostコマンドを使用して、WMIが固定ポートで起動されている場合は、WMIの例外も機能します。 詳細については、「WMIの固定ポートの設定」を参照してください。
WindowsファイアウォールUIを使用して、WMIトラフィックを有効または無効にすることができます。
Aa822854.wedge(ja-jp、VS.85).gifファイアウォールUIを使用してWMIトラフィックを有効または無効にするには
コントロールパネルで[セキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。
[設定の変更]をクリックし、[例外]タブをクリックします。
[例外]ウィンドウで、Windows Management Instrumentation(WMI)のチェックボックスをオンにして、ファイアウォールを介してWMIトラフィックを有効にします。 WMIトラフィックを無効にするには、チェックボックスをオフにします。
コマンドプロンプトでファイアウォールを介してWMIトラフィックを有効または無効にすることができます。
Aa822854.wedge(ja-jp、VS.85).gif WMIルールグループを使用してコマンドプロンプトでWMIトラフィックを有効または無効にする
コマンドプロンプトで次のコマンドを使用します。 ファイアウォールを介してWMIトラフィックを有効にするには、次のように入力します。
netsh advfirewallファイアウォールセットルールグループ= "Windows管理のインストルメンテーション(wmi)"新しい有効=はい
ファイアウォールを介してWMIトラフィックを無効にするには、次のコマンドを入力します。
netsh advfirewallファイアウォールセットルールグループ= "Windows管理のインストルメンテーション(wmi)"新しい有効=いいえ
単一のWMIルールグループコマンドを使用するのではなく、DCOM、WMIサービス、およびシンクごとに個別のコマンドを使用することもできます。
Aa822854.wedge(ja-jp、VS.85).gif DCOM、WMI、コールバックシンクと発信接続の個別のルールを使用してWMIトラフィックを有効にするには
DCOMポート135のファイアウォール例外を設定するには、次のコマンドを使用します。
netsh advfirewallファイアウォールの追加dir = name = "DCOM"プログラム=%systemroot%\ system32 \ svchost.exeサービス= rpcssアクション=プロトコル許可= TCP localport = 135
WMIサービスのファイアウォール例外を設定するには、次のコマンドを使用します。
netsh advfirewallファイアウォールはルールdir = name = "WMI"プログラム=%systemroot%\ system32 \ svchost.exeサービス= winmgmtアクション=プロトコル= TCP localport = anyを許可するルールを追加します。
リモートコンピュータからコールバックを受信するシンクのファイアウォール例外を設定するには、次のコマンドを使用します。
netsh advfirewallファイアウォールルールを追加するdir = name = "UnsecApp" program =%systemroot%\ system32 \ wbem \ unsecapp.exe action = allow
ローカルコンピュータが非同期で通信しているリモートコンピュータへの発信接続に対してファイアウォールの例外を設定するには、次のコマンドを使用します。
netsh advfirewallファイアウォールルールを追加する= out name = "WMI_OUT"プログラム=%systemroot%\ systemXNUM \ svchost.exeサービス= winmgmtアクション=プロトコルを許可する= TCP localport =任意
ファイアウォールの例外を個別に無効にするには、次のコマンドを使用します。
Aa822854.wedge(ja-jp、VS.85).gif DCOM、WMI、コールバックシンクおよび発信接続の個別のルールを使用してWMIトラフィックを無効にする
DCOM例外を無効にする。
netsh advfirewallファイアウォールの削除ルール名= "DCOM"
WMIサービス例外を無効にするには
netsh advfirewallファイアウォールの削除ルール名= "WMI"
シンク例外を無効にする。
netsh advfirewallファイアウォールの削除ルール名= "UnsecApp"
送信例外を無効にする。
netsh advfirewallファイアウォールの削除ルール名= "WMI_OUT"
ユーザーアカウント制御の設定
ユーザーアカウント制御(UAC)のアクセストークンフィルタリングは、WMI名前空間で許可される操作や返されるデータに影響します。 UACでは、ローカルのAdministratorsグループのすべてのアカウントが、標準のユーザーアクセストークン(UACアクセストークンフィルタリングとも呼ばれます)を使用して実行されます。 管理者アカウントは、管理者権限で実行することができます。
組み込み管理者アカウントに接続していない場合、UACは、2台のコンピュータがドメインまたはワークグループ内にあるかどうかによって、リモートコンピュータへの接続に異なる影響を与えます。 UACとリモート接続の詳細については、「ユーザーアカウント制御とWMI」を参照してください。
DCOM設定
DCOM設定の詳細については、「リモートWMI接続のセキュリティ」を参照してください。 ただし、UACはドメイン以外のユーザーアカウントの接続に影響します。 リモートコンピュータのローカルAdministratorsグループに含まれている非ドメインユーザーアカウントを使用してリモートコンピュータに接続する場合は、明示的にリモートDCOMアクセス、アクティベーション、および起動権限をアカウントに付与する必要があります。
CIMOMの設定
リモート接続が信頼関係を持たないコンピュータ間にある場合は、CIMOMの設定を更新する必要があります。 そうしないと、非同期接続は失敗します。 この設定は、同じドメインまたは信頼できるドメイン内のコンピュータでは変更しないでください。
匿名コールバックを許可するには、次のレジストリエントリを変更する必要があります。
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WBEM \ CIMOM \ AllowAnonymousCallback
データ・タイプ
REG_DWORD
AllowAnonymousCallback値が0に設定されている場合、WMIサービスはクライアントへの匿名コールバックを防止します。 値が1に設定されている場合、th