SWbemSecurity.ImpersonationLevel プロパティ

ImpersonationLevel プロパティは、このオブジェクトに割り当てられる COM 偽装レベルを定義する整数です。 この設定では、Windows Management Instrumentation (WMI) が所有するプロセスで、他のプロセスを呼び出すときにセキュリティ資格情報を検出または使用できるかどうかを指定します。 偽装レベルの詳細については、「クライアント アプリケーション プロセス セキュリティの設定」を参照してください。

偽装レベルをモニカーで具体的に設定しない場合、またはセキュリティ保護可能なオブジェクトに SWBemSecurity.ImpersonationLevel プロパティを設定すると、WMI では既定の偽装レベルが既定の偽装レベル レジストリ キーで指定された値に設定されます。 この設定が不十分な場合、プロバイダーで要求が処理されず、WMI API の呼び出しが wbemErrAccessDenied (2147749891/0x80041003) のエラー コードで失敗する可能性があります。

この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。

このプロパティは読み取り/書き込み可能です。

構文

SWbemSecurity.ImpersonationLevel As Integer

プロパティ値

解説

DCOM 偽装レベルとして、このプロパティは次のいずれかの値に設定できます。

説明
匿名 呼び出し元の資格情報は非表示になります。 WMI では、この偽装レベルは実際にはサポートされていません。スクリプトで impersonationLevel=Anonymous が指定されている場合、WMI によって偽装レベルが自動的に Identify にアップグレードされます。 ただし、Identify レベルを使用するスクリプトは失敗する可能性があるため、ある点ではこれは意味のない処理です。
識別 オブジェクトによる呼び出し元の資格情報のクエリが許可されます。 この偽装レベルを使用するスクリプトは失敗する可能性があります。Identify レベルでは通常、アクセス制御リストのチェックのみを行えます。 Identify を使用してリモート コンピューターに対してスクリプトを実行することはできません。
Impersonate オブジェクトによる呼び出し元の資格情報の使用が許可されます。 WMI スクリプトでは、この偽装レベルを使用することをお勧めします。 これを指定すると、WMI スクリプトでユーザーの資格情報が使用されます。その結果、ユーザーが実行できるすべてのタスクをスクリプトが実行できるようになります。
Delegate オブジェクトが呼び出し元の資格情報の使用を他のオブジェクトに許可できるようにします。 委任を使用すると、スクリプトがリモート コンピューターでユーザーの資格情報を使用し、そのリモート コンピューターが別のリモート コンピューターでユーザーの資格情報を使用できるようになります。 この偽装レベルは WMI スクリプト内で使用できますが、セキュリティ 上のリスクが発生する可能性があるため、必要な場合にのみ使用してください。
Delegate 偽装レベルを使用できるのは、トランザクションに関係するすべてのユーザー アカウントとコンピューター アカウントが Active Directory での委任に対して信頼済みとしてマークされている場合に限ります。 これにより、セキュリティ リスクを最小限に抑えることができます。 リモート コンピューターはユーザーの資格情報を使用できますが、そのリモート コンピューターと、トランザクションに関係する他のコンピューターの両方が委任に対して信頼されている場合のみです。

上記で説明したように、Anonymous 偽装ではユーザーの資格情報が非表示になり、Identify ではリモート オブジェクトがユーザーの資格情報に対してクエリを実行できますが、リモート オブジェクトはユーザーのセキュリティ コンテキストを偽装できません (つまり、リモート オブジェクトはユーザーが誰であるかを認識していますが、ユーザーの "ふり" をすることはできません)。通常、この 2 つの設定のいずれかを使用してリモート コンピューターにアクセスする WMI スクリプトは失敗します。 実際、ローカル コンピューターでこの 2 つの設定のいずれかを使用して実行されるスクリプトも、そのほとんどが失敗します。

Impersonate を使用すると、リモート WMI サービスがユーザーのセキュリティ コンテキストを使用して、要求された操作を実行できるようになります。 Impersonate 設定を使用するリモート WMI 要求は通常、目的の操作を実行するための十分な特権がユーザーの資格情報にあれば成功します。 つまり、WMI を使用して、WMI の外部で実行する権限がないアクションを (リモートでもそれ以外の場合でも) 実行することはできません。

impersonationLevel を Delegate に設定すると、リモート WMI サービスはユーザーの資格情報を他のオブジェクトに渡すことができますが、通常はセキュリティ リスクと見なされます。

ImpersonationLevel プロパティを必要な値に設定することで、SWbemServicesSWbemObjectSWbemObjectSetSWbemObjectPathSwbemLocator の各オブジェクトの偽装レベルを設定できます。 次の例は、SWbemObject オブジェクトの偽装レベルを設定する方法を示しています。

objinstance.Security_.ImpersonationLevel = _
    wbemImpersonationLevelImpersonate

偽装レベルはモニカーの一部として指定することもできます。 次の例では、認証レベルと偽装レベルを設定し、Win32_Service のインスタンスを取得します。

Set objinst = GetObject("WinMgmts:{impersonationLevel=impersonate,"& _
                         "authenticationLevel=pktPrivacy}"& _
                         "!root/cimv2:Win32_service='ALERTER'")

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemSecurity
IID
IID_ISWbemSecurity

関連項目

SWbemSecurity

クライアント アプリケーション プロセス セキュリティの設定

WbemImpersonationLevelEnum