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

Por padrão, somente os administradores do AD FS podem executar a administração do AD FS por meio do PowerShell. Para muitas organizações de grande porte, esse pode não ser um modelo operacional viável ao lidar com outras personas, como uma equipe de suporte técnico.

Com a JEA (Administração Just Enough), os clientes agora podem delegar permissões para commandlets específicos a diferentes grupos de funcionários.

Um bom exemplo desse caso de uso é permitir que o pessoal do suporte técnico consulte o status de bloqueio da conta do AD FS e redefina o estado de bloqueio da conta no AD FS depois que um usuário for verificado. Nesse caso, os commandlets 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 terceiras partes confiáveis e entregue isso aos proprietários de aplicativos na organização.

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

  1. Criar uma Conta de Serviço Gerenciado de Grupo. A conta gMSA é usada para permitir que o usuário JEA acesse recursos de rede como outros computadores ou serviços Web. Ela fornece uma identidade de domínio que pode ser usada para autenticar para recursos em qualquer computador no domínio. A conta gMSA recebe os direitos administrativos necessários posteriormente na configuração. Neste exemplo, chamamos a conta de gMSAContoso.
  2. A criação de um grupo do Active Directory pode ser preenchida com usuários que precisam receber os direitos dos 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. Nos referimos a esse grupo em todo o exemplo como JEAContoso.

Instalar a conta gMSA no servidor do AD FS

Crie uma conta de serviço que tenha direitos administrativos para os servidores do 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 do AD FS.

Modifique os valores de exemplo para a configuração do farm.

 # 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 do AD FS. Isso precisa ser executado em todos os nós do AD FS no farm.

Install-ADServiceAccount gMSAcontoso

Conceder os direitos de Administrador da conta gMSA

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

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

Criar o arquivo de função JEA

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

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

Função JEA de exemplo delegando acesso de commandlets '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 arquivo de configuração determina quem pode usar o ponto de extremidade JEA e quais recursos eles podem acessar.

Os recursos de função são referenciados pelo nome simples (nome sem a extensão) do arquivo de capacidade de função. Se várias capacidades 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 efetivo. Ele não fornece acesso a todos os arquivos de capacidade de função com o mesmo nome.

Para especificar um Arquivo de Capacidade de Função com um caminho, use o argumento RoleCapabilityFiles. Para uma subpasta, o JEA procura módulos válidos do PowerShell que contêm uma subpasta RoleCapabilities, em que o argumento RoleCapabilityFiles deve ser modificado para RoleCapabilities.

Arquivo de configuração de sessão de exemplo:

@{
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 de sessão.

É recomendável testar o arquivo de configuração de sessão caso você tenha editado o arquivo pssc manualmente usando um editor de texto, a fim de garantir que a sintaxe está 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 do AD FS

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

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

Instruções operacionais

Depois de configurado, o registro em log e a auditoria JEA podem ser usados para determinar se os usuários corretos têm acesso ao ponto de extremidade JEA.

Para usar os comandos delegados:

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