Делегирование учетных данных удаленной системе

Представим ситуацию. Вы подключаетесь к удаленной системе и в рамках этой сессии запускаете скрипт или рабочий процесс, затрагивающий множество компьютеров. По умолчанию, вы не сможете получить доступ к этим компьютерам изнутри сессии.
Это можно исправить двумя вариантами.

Делегирование учетных данных

Для доступа к любой системе требуются учетные данные. Но, подключаясь к компьютерам изнутри удаленной сессии, вы эти данные не предоставляете. Для того, чтобы подключение сработало вам нужно делегировать ваши учетные данные удаленной системе, чтобы она, в свою очередь, могла их использовать для подключения к другим компьютерам.

Для этого нужно сделать следующее.

Во-первых, вам нужно включить возможность делегирования учетных данных с вашей локальной машины. Это делается командой

Enable-WSManCredSSP -Role Client -DelegateComputer computer_name1.domain.com,computer_name2.domain.com

Кроме того, вы можете предоставить возможность делегирования ваших учетных данных любому компьютеру в пределах домена, хотя это и не рекомендуется.

Enable-WSManCredSSP -Role Client -DelegateComputer *.domain.com

Выполнение этой команды задает следующую настройку локальной групповой политики:
Computer Configuration -> Administrative Templates -> System -> Credential Delegation -> Allow delegating fresh credentials

Однако, если вы собираетесь включать делегирование на клиенте, используя только групповую политику, не забудьте включить следующую настройку:
Computer Configuration -> Administrative Templates -> Windows Components -> Windows Remote Management (WinRM) -> WinRM Client -> Allow CredSSP authentication

Во-вторых, нам нужно, чтобы удаленный компьютер мог участовать в делегировании наших учетных данных.
Для этого на удаленном компьютере нужно выполнить следующую команду:

Enable-WSManCredSSP -Role Server

Если вы проводите всю конфигурацию с локального компьютера, команда может выглядеть так:

$session = New-PSSession -ComputerName remote_computer_name
Invoke-Command -Session $session -ScriptBlock {Enable-WSManCredSSP -Role Server}

Этого же результата можно добиться используя следующую настройку групповой политики
Computer Configuration -> Administrative Templates -> Windows Components -> Windows Remote Management (WinRM) -> WinRM Service -> Allow CredSSP authentication

Посмотреть текущие настройки можно при помощи командлета

Get-WSManCredSSP

В-третьих, при установке удаленного подключения нам нужно явно указать наши учетные данные, а также задать тип аутентификации — CredSSP.
Если мы подключаемся к удаленному компьютеру с использованием конфигурации microsoft.powershell.workflow, команда может выглядеть следующим образом:

$credentials = Get-Credential -Credential your_user_name@domain.com
$session = New-PSWorkflowSession -ComputerName remote_computer_name -Credential $credentials -Authentication Credssp

При подключении к конфигурации по-умолчанию — microsoft.powershell — команда будет выглядеть так:

$credentials = Get-Credential -Credential your_user_name@domain.com
$session = New-PSSession -ComputerName remote_computer_name -Credential $credentials -Authentication Credssp

Задание учетных данных в конфигурации удаленных подключений

Другим способом является указание требуемых учетных данных в конфигурции подключения на удаленном компьютере, например в microsoft.powershell или microsoft.powershell.workflow.
Промотреть текущую настройку можно следующей командой:

$session = New-PSSession -ComputerName remote_computer_name
Invoke-Command {Get-PSSessionConfiguration -Name microsoft.powershell.workflow}

Нас интересует свойство RunAsUser. Если учетные данные не заданы, его значение будет пустым.
Для того, чтобы задать требуемые учетные данные можно воспользоваться следующей командой:

$credentials = Get-Credential -Credential your_user_name@domain.com
$session = New-PSSession -ComputerName remote_computer_name
Invoke-Command -Session $session -ScriptBlock {Set-PSSessionConfiguration -Name microsoft.powershell.workflow -RunAsCredential $Using:credentials}

Теперь, если мы снова запросим настройки конфигурации microsoft.powershell.workflow, то в поле RunAsUser будет указано имя пользователя, от имени которого будут происходить все действия при подключении к этой конфигурации.

Для того, чтобы вернуть конфигурацию к настройкам по-умолчанию, можно удалить требуемую конфигурацию командой

Unregister-PSSessionConfiguration -Name microsoft.powershell.workflow

а затем восстановить ее в изначальном виде при помощи команды

Enable-PSRemoting

Стоит сказать, что хотя командлет Unregister-PSSessionConfiguration может быть запущен в удаленной сессии, командлет Enable-PSRemoting должен быть выполнен локально на том компьютере, конфигурацию которого мы восстанавливаем.


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s