Делегирование доступа к командлету PowerShell AD FS пользователям, не являющихся администраторами
По умолчанию только администраторы AD FS могут выполнять администрирование AD FS с помощью PowerShell. Для многих крупных организаций это не может быть жизнеспособной операционной моделью при работе с другими лицами, такими как сотрудники службы технической поддержки.
С помощью JA (JEA) клиенты теперь могут делегировать разрешения для определенных командлетов разным группам персонала.
Хороший пример этого варианта использования позволяет сотрудникам службы технической поддержки запрашивать состояние блокировки учетной записи AD FS и сбрасывать состояние блокировки учетной записи в AD FS после проверки пользователя. В этом случае командлеты, которые необходимо делегировать, являются следующими:
Get-ADFSAccountActivity
Set-ADFSAccountActivity
Reset-ADFSAccountLockout
Этот пример используется в остальной части этого документа. Однако вы можете настроить это, чтобы разрешить делегированию задавать свойства проверяющих сторон и передавать их владельцам приложений в организации.
Создание необходимых групп, необходимых для предоставления пользователям разрешений
- Создайте управляемую группу учетную запись службы. Учетная запись gMSA используется для предоставления пользователю JEA доступа к сетевым ресурсам в качестве других компьютеров или веб-служб. Он предоставляет удостоверение домена, которое можно использовать для проверки подлинности ресурсов на любом компьютере в домене. Учетная запись gMSA предоставляет необходимые права администратора позже в настройке. В этом примере мы вызываем учетную запись gMSAContoso.
- Создание группы Active Directory можно заполнить пользователями, которым необходимо предоставить права делегированным командам. В этом примере персонал службы технической поддержки предоставляет разрешения на чтение, обновление и сброс состояния блокировки AD FS. Мы ссылаемся на эту группу во всем примере как JEAContoso.
Установка учетной записи gMSA на сервере AD FS
Создайте учетную запись службы с правами администратора на серверы AD FS. Это можно выполнить на контроллере домена или удаленно, если установлен пакет AD RSAT. Учетная запись службы должна быть создана в том же лесу, что и сервер AD FS.
Измените примеры значений в конфигурацию фермы.
# This command should only be run if this is the first time gMSA accounts are enabled in the forest
Add-KdsRootKey -EffectiveTime ((get-date).addhours(-10))
# Run this on every node that you want to have JEA configured on
$adfsServer = Get-ADComputer server01.contoso.com
# Run targeted at domain controller
$serviceaccount = New-ADServiceAccount gMSAcontoso -DNSHostName <FQDN of the domain containing the KDS key> -PrincipalsAllowedToRetrieveManagedPassword $adfsServer –passthru
# Run this on every node
Add-ADComputerServiceAccount -Identity server01.contoso.com -ServiceAccount $ServiceAccount
Установите учетную запись gMSA на сервере AD FS. Это необходимо выполнить на каждом узле AD FS в ферме.
Install-ADServiceAccount gMSAcontoso
Предоставление прав администратора учетной записи gMSA
Если ферма использует делегированное администрирование, предоставьте права администратора учетной записи gMSA, добавив ее в существующую группу, которая имеет делегированный доступ администратора.
Если ферма не использует делегированное администрирование, предоставьте права администратора учетной записи gMSA, сделав ее группой локального администрирования на всех серверах AD FS.
Создание файла роли JEA
На сервере AD FS создайте роль JEA в файле блокнота. Инструкции по созданию роли предоставляются в возможностях ролей JEA.
Командлеты, делегированные в этом примере, являются Reset-AdfsAccountLockout, Get-ADFSAccountActivity, and Set-ADFSAccountActivity
.
Пример роли JEA, который делегирует доступ к командлетам Reset-ADFSAccountLockout, Get-ADFSAccountActivity и Set-ADFSAccountActivity:
@{
GUID = 'b35d3985-9063-4de5-81f8-241be1f56b52'
ModulesToImport = 'adfs'
VisibleCmdlets = 'Reset-AdfsAccountLockout', 'Get-ADFSAccountActivity', 'Set-ADFSAccountActivity'
}
Создание файла конфигурации сеанса JEA
Следуйте инструкциям по созданию файла конфигурации сеанса JEA. Файл конфигурации определяет, кто может использовать конечную точку JEA и какие возможности они могут получить к ней доступ.
Возможности роли ссылаются на неструктурированное имя (имя файла без расширения) файла возможностей роли. Если в системе доступно несколько возможностей ролей с одинаковым неструктурированным именем, PowerShell использует свой неявный порядок поиска, чтобы выбрать файл возможностей эффективной роли. Он не предоставляет доступ ко всем файлам возможностей ролей с одинаковым именем.
Чтобы указать файл возможностей роли с путем, используйте RoleCapabilityFiles
аргумент. Для вложенной папки JEA ищет допустимые модули PowerShell, содержащие вложенную RoleCapabilities
папку, где RoleCapabilityFiles
аргумент должен быть изменен RoleCapabilities
.
Пример файла конфигурации сеанса:
@{
SchemaVersion = '2.0.0.0'
GUID = '54c8d41b-6425-46ac-a2eb-8c0184d9c6e6'
SessionType = 'RestrictedRemoteServer'
GroupManagedServiceAccount = 'CONTOSO\gMSAcontoso'
RoleDefinitions = @{ JEAcontoso = @{ RoleCapabilityFiles = 'C:\Program Files\WindowsPowershell\Modules\AccountActivityJEA\RoleCapabilities\JEAAccountActivityResetRole.psrc' } }
}
Сохраните файл конфигурации сеанса.
Рекомендуется протестировать файл конфигурации сеанса, если вы редактировали файл pssc вручную с помощью текстового редактора, чтобы убедиться, что синтаксис правильно. Если файл конфигурации сеанса не проходит этот тест, он не успешно зарегистрирован в системе.
Установка конфигурации сеанса JEA на сервере AD FS
Установка конфигурации сеанса JEA на сервере AD FS
Register-PSSessionConfiguration -Path .\JEASessionConfig.pssc -name "AccountActivityAdministration" -force
Операционные инструкции
После настройки ведение журнала и аудита JEA можно использовать для определения того, имеют ли правильные пользователи доступ к конечной точке JEA.
Чтобы использовать делегированные команды, выполните следующие действия.
Enter-pssession -ComputerName server01.contoso.com -ConfigurationName "AccountActivityAdministration" -Credential <User Using JEA>
Get-AdfsAccountActivity <User>