リモート接続の認証

Windowsリモート管理では、いくつかの標準的な認証方法とメッセージ暗号化をサポートすることで、コンピューター間の通信のセキュリティを維持します。

既定のグループ アクセス

セットアップ中に、WinRM によってローカル グループ WinRMRemoteWMIUsers__が作成されます。 その後、WinRM は、ローカル管理グループまたは WinRMRemoteWMIUsers__ グループのメンバーではないユーザーへのリモート アクセスを制限します。 コマンド プロンプトで「>」と入力して、ローカル ユーザー、ドメイン ユーザー、またはドメイン グループをWinRMRemoteWMIUsers__に追加できます。 必要に応じて、グループ ポリシーを使用してユーザーをグループに追加できます。

既定の認証設定

既定の資格情報、ユーザー名、パスワードは、スクリプトを実行するログオン ユーザー アカウントの資格情報です。

リモート コンピューター上の別のアカウントに変更するには

  1. ConnectionOptions オブジェクトまたは IWSManConnectionOptions オブジェクトで資格情報を指定し、それを CreateSession 呼び出しに指定します。
  2. CreateSession 呼び出しの flags パラメーターに WSManFlagCredUserNamePassword を設定します。

次の一覧には、スクリプトまたはアプリケーションが既定の資格情報で実行されるときに発生する処理の一覧が含まれています。

  • Kerberos は、クライアントがドメイン内にあり、リモートの宛先文字列が localhost、127.0.0.1、または [::1] のいずれかでない場合の既定の認証方法です。
  • ネゴシエート は、クライアントがドメインにない場合の既定の方法ですが、リモートの宛先文字列は、localhost、127.0.0.1、または [::1] のいずれかです。

ConnectionOptions オブジェクトで明示的な資格情報を指定する場合は、Negotiate が既定の方法です。 ネゴシエート認証は、コンピューターがドメインかワークグループかに応じて、進行中の認証方法が Kerberos か NTLM かを決定します。 ローカル アカウントを使用してリモート ターゲット コンピューターに接続する場合は、アカウントの先頭にコンピューター名を付ける必要があります。 たとえば、myComputer\myUsername です。

Negotiate、Digest、または Basic 認証を指定し、 ConnectionOptions オブジェクトを指定できない場合は、明示的な資格情報が必要であることを示すエラーが表示されます。 HTTPS がトランスポートではない場合は、信頼されたホスト コンピューターの一覧でターゲット リモート コンピューターを構成する必要があります。

既定の構成設定で有効になっている認証の種類の詳細については、「リモート管理のインストールと構成Windowsを参照してください。

基本認証

WSMan.CreateSession の呼び出しで基本認証を明示的に確立するには、flags パラメーターに WSManFlagUseBasic フラグと WSManFlagCredUserNamePassword フラグを設定します。 基本認証は、WinRM クライアントと WinRM サーバーの両方の既定の構成設定で無効になっています。

ダイジェスト認証

WSMan.CreateSession の呼び出しでダイジェスト認証を明示的に確立するには、flags パラメーターに WSManFlagUseDigest フラグを設定します。 ダイジェストはサポートされていません。 WinRM サーバー コンポーネント用に構成することはできません。

認証の交渉

Negotiate 認証 (Windows 統合認証とも呼ばれます) を明示的に行うには、WSMan.CreateSession の使用時に、flags パラメーターに WSManFlagUseNegotiate フラグを設定します。

ユーザー アカウント制御 (UAC) は 、WinRM サービスへのアクセスに影響します。 ワークグループでネゴシエート認証が使用されている場合、組み込みの管理者アカウントのみがサービスにアクセスできます。 Administrators グループ内のすべてのアカウントがサービスにアクセスできるようにするには、次のレジストリ値を設定します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy = 1

Kerberos 認証

WSMan.CreateSession の呼び出しで Kerberos 認証を明示的に確立するには、flags パラメーターに WSManFlagUseKerberos フラグを設定します。 クライアント コンピューターとサーバー コンピューターの両方がドメインに参加している必要があります。 認証方法として Kerberos を使用する場合、 WSMan.CreateSession または IWSMan::CreateSession の呼び出しで IP アドレスを使用することはできません。

クライアント証明書ベースの認証

WSMan.CreateSession の呼び出しでクライアント証明書ベースの認証を確立するには、flags パラメーターに WSManFlagUseClientCertificate フラグを設定します。

まず、Winrm コマンド ライン ツールを使用して、クライアントとサービスの両方で証明書認証を有効にする必要があります。 詳細については、「 認証オプションの有効化」を参照してください。 また、WinRM サーバー コンピューターの CertMapping テーブルにエントリを作成する必要があります。 これにより、1 つ以上の証明書とローカル アカウントの間のマッピングが確立されます。 認証と承認に証明書が使用されると、対応するローカル アカウントが WinRM サービスによって実行される操作に使用されます。

マッピングは、特定のリソース URI に対して作成できます。 CertMapping テーブル エントリの作成方法など、詳細については、コマンド プロンプトで 「winrm help certmapping 」と入力します。

このコンテキストで WinRM で使用できる最大サイズの証明書は 16 KB です。

 

認証オプションの有効化または無効化

システム インストール時の既定の認証オプションは Kerberos です。 詳細については、「Windowsリモート管理のインストールと構成」を参照してください。

スクリプトまたはアプリケーションで、有効になっていない特定の認証方法が必要な場合は、この種類の認証を有効にするように構成を変更する必要があります。 この変更は、Winrm コマンドライン ツールを使用するか、Windows リモート管理グループ ポリシー オブジェクトのグループ ポリシーを使用して行うことができます。 特定の認証方法を無効にすることもできます。

Winrm ツールで認証を有効または無効にするには

  1. WinRM クライアントの構成を設定するには、 Winrm Set コマンドを使用してクライアントを指定します。 たとえば、次のコマンドを実行すると、クライアントのダイジェスト認証が無効になります。

    winrm set winrm/config/client/auth @{Digest="false"}

  2. WinRM サーバーの構成を設定するには、 Winrm Set コマンドを使用してサービスを指定します。 たとえば、次のコマンドは、サービスの Kerberos 認証を有効にします。

    winrm set winrm/config/service/auth @{Kerberos="true"}

Windows リモート管理について

WSMan.CreateSession

Windows リモート管理の使用