Налаштування віддаленого взаємодії в PowerShell (частина 2).
Продовжимо тему віддаленого взаємодії, розпочату в попередній статті. Сьогодні ми поговоримо про конфігураціях сесії. Їх ще називають кінцевими точками підключення, або ендпойнтамі (endpoint).
Кожен раз при віддаленому підключенні в PowerShell використовується конфігурація сесії.Це відноситься як до постійних сесій, створюваним за допомогою командлетів New-PSSession або Enter-PSSession, так і до тимчасових сеансів, які створюються при використанні Invoke-Command.
Зміни сесії відповідають за налаштування призначеного для користувача оточення у віддаленій сесії . Простіше кажучи, конфігурація сесії - це набір параметрів на локальному комп'ютері, що визначають, що саме буде доступно користувачеві при віддаленому підключенні до цього комп'ютера.Крім того, конфігурацію можна використовувати для роздачі дозволів, необхідних для віддаленого підключення до комп'ютера.
На кожному комп'ютері є кілька готових конфігурацій, і в залежності від типу операційної системи і встановлених компонентів їх склад може відрізнятися.Подивитися інформацію про зареєстровані в системі конфігураціях сесії можна командою Get-PSSessionConfiguration.
При підключенні до віддаленого комп'ютера використовується конфігурація сесії за замовчуванням. Її значення зберігається в змінної $ PSSessionConfigurationName, зазвичай це конфігурація microsoft.powershell.
При необхідності властивості конфігурації можна змінити. Для зміни властивостей конфігурації використовується командлет Set-PSSessionConfiguration.
Налаштування дескриптора безпеки
У властивостях конфігурації є поле Permission. У ньому вказано список користувачів, які мають право використовувати цю конфігурацію.За замовчуванням в цей список входять члени локальної групи Administrators, а також Remote Management Users (ця група є тільки в Windows 8 і Server 2012). Всі інші користувачі, що не входять в ці групи, віддалено підключатися до комп'ютера і використовувати PS Remoting не можуть.
Виправити це можна двома способами - або додавши користувачів до відповідних локальні групи, або змінивши дескриптор безпеки конфігурації.Додавати всіх підряд в локальні адміністратори на сервері не дуже гарна ідея, а група Remote Management Users є тільки в Windows 8 і Server 2012. Тому підемо іншим шляхом і змінимо дескриптор безпеки конфігурації сесії за замовчуванням.
Для зміни скористаємося командлети Set-PSSessionConfiguration з ключем -ShowSecurityDescriptorUI.Цей ключ виводить всі дозволи в графічному вигляді, і ми можемо додавати в нього як окремих користувачів, так і групи. Для прикладу я створив у домені групу безпеки HelpDesk і додав її в список доступу конфігурації за замовчуванням:
Set-PSSessionConfiguration microsoft.powershell -ShowSecurityDescriptorUI
Тепер усі члени цієї групи мають можливість підключатися до комп'ютера.Зверніть увагу, що для успішного підключення користувачеві необхідно дати право виконання - Execute (Invoke).
Запуск сесії від імені іншого користувача
За замовчуванням, якщо облікові дані явно не вказані, віддалена сесія створюється з правами поточного облікового запису.Це можна змінити за допомогою параметра -RunAsCredential, вказавши з якими обліковими даними повинна працювати конфігурація сеансу. Наприклад, зберігаємо в змінної облікові дані адміністратора домену, а потім додаємо їх в конфігурацію сесії за замовчуванням:
$ cred = Get-Credential contoso \ administrator
Set-PSSessionConfiguration microsoft.powershell -RunAsCredential $ cred -Force
І тепер будь-яка сесія, створена з використанням цієї конфігурації, буде запущена з правами доменного адміністратора. Це не дуже правильно з точки зору безпеки, тому PowerShell видає попередження про те, що при використанні -RunAsCredential необхідно обмежувати набір команд, доступних в поточній сесії.
Примітка. Зміна дефолтной конфігурації сеансу, на мій погляд, не дуже правильний підхід. Якщо ж вам вдалося налаштувати