Delegar acesso de commandlet do PowerShell do AD FS a usuários não administradores

Por padrão, apenas os administradores do AD FS podem executar a administração do AD FS por meio do PowerShell. Para muitas grandes organizações, esse pode não ser um modelo operacional viável ao lidar com outras personas, como uma equipe de help desk.

Com o Just Enough Administration (JEA), os clientes agora podem delegar permissões para commandlets específicos a diferentes grupos de pessoal.

Um bom exemplo desse caso de uso é permitir que o pessoal do suporte técnico consulte o status de bloqueio de conta do AD FS e redefina o estado de bloqueio de conta no AD FS depois que um usuário for examinado. Nesse caso, os cmdlets que precisariam ser delegados são:

  • Get-ADFSAccountActivity
  • Set-ADFSAccountActivity
  • Reset-ADFSAccountLockout

Usamos este exemplo no restante deste documento. No entanto, você pode personalizar isso para também permitir que a delegação defina propriedades de partes confiáveis e entregue isso aos proprietários de aplicativos dentro da organização.

Crie os grupos necessários para conceder permissões aos usuários

  1. Crie uma Conta de Serviço Gerenciado de Grupo. A conta gMSA é usada para permitir que o usuário JEA acesse recursos de rede como outras máquinas ou serviços Web. Ele fornece uma identidade de domínio que pode ser usada para autenticar recursos em quaisquer máquinas dentro do domínio. A conta gMSA posteriormente recebe os direitos administrativos necessários durante a configuração. Para este exemplo, chamamos a conta gMSAContoso.
  2. Criar um grupo do Active Directory que pode ser preenchido com utilizadores que precisam de receber direitos para executar os comandos delegados. Neste exemplo, o pessoal do suporte técnico recebe permissões para ler, atualizar e redefinir o estado de bloqueio do AD FS. Referimo-nos a este grupo ao longo do exemplo como JEAContoso.

Instalar a conta gMSA no servidor AD FS

Crie uma conta de serviço que tenha direitos administrativos para os servidores AD FS. Isso pode ser executado no controlador de domínio ou remotamente, desde que o pacote AD RSAT esteja instalado. A conta de serviço deve ser criada na mesma floresta que o servidor AD FS.

Modifique os valores de exemplo de acordo com a configuração da sua quinta.

 # 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

Instale a conta gMSA no servidor AD FS. Isso precisa ser executado em todos os nós do AD FS no farm.

Install-ADServiceAccount gMSAcontoso

Conceder direitos de administrador à Conta gMSA

Se o farm estiver usando administração delegada, conceda à conta gMSA direitos de administrador adicionando-a ao grupo existente, que tem acesso de administrador delegado.

Se o farm não estiver usando administração delegada, conceda direitos de administrador à conta gMSA tornando-a o grupo de administração local em todos os servidores AD FS.

Crie o ficheiro de função JEA

No servidor AD FS, crie a função JEA em um arquivo do bloco de notas. As instruções para criar a função são fornecidas nas funcionalidades da função JEA.

Os cmdlets delegados neste exemplo são Reset-AdfsAccountLockout, Get-ADFSAccountActivity, and Set-ADFSAccountActivity.

Exemplo de função JEA delegando acesso aos comandos 'Reset-ADFSAccountLockout', 'Get-ADFSAccountActivity' e 'Set-ADFSAccountActivity':

@{
GUID = 'b35d3985-9063-4de5-81f8-241be1f56b52'
ModulesToImport = 'adfs'
VisibleCmdlets = 'Reset-AdfsAccountLockout', 'Get-ADFSAccountActivity', 'Set-ADFSAccountActivity'
}

Criar o arquivo de configuração de sessão JEA

Siga as instruções para criar o arquivo de configuração de sessão JEA . O ficheiro de configuração determina quem pode usar o endpoint JEA e quais capacidades eles podem acessar.

Os recursos de função são referenciados pelo nome simples (nome de arquivo sem a extensão) do arquivo de capacidade de função. Se vários recursos de função estiverem disponíveis no sistema com o mesmo nome simples, o PowerShell usará sua ordem de pesquisa implícita para selecionar o arquivo de capacidade de função efetiva. Ele não dá acesso a todos os arquivos de recursos de função com o mesmo nome.

Para especificar um ficheiro de capacidades de função com um caminho, use o argumento RoleCapabilityFiles. Para uma subpasta, o JEA procura módulos válidos do PowerShell que contenham uma RoleCapabilities subpasta, onde o RoleCapabilityFiles argumento deve ser modificado para ser RoleCapabilities.

Exemplo de arquivo de configuração de sessão:

@{
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' } }
}

Salve o arquivo de configuração da sessão.

É recomendável testar o arquivo de configuração da sessão se você tiver editado o arquivo pssc manualmente usando um editor de texto para garantir que a sintaxe esteja correta. Se um arquivo de configuração de sessão não passar nesse teste, ele não será registrado com êxito no sistema.

Instalar a configuração de sessão JEA no servidor AD FS

Instalar a configuração de sessão JEA no servidor AD FS

Register-PSSessionConfiguration -Path .\JEASessionConfig.pssc -name "AccountActivityAdministration" -force

Instruções de funcionamento

Depois de configurado, o registo e a auditoria do JEA podem ser usados para determinar se os utilizadores corretos têm acesso ao endpoint JEA.

Para usar os comandos delegados:

Enter-pssession -ComputerName server01.contoso.com -ConfigurationName "AccountActivityAdministration" -Credential <User Using JEA>
Get-AdfsAccountActivity <User>