Início > Active Directory Federation Services, Power Shell, Scripts > Otimizando tarefas com PowerShell–Implementando e Administrando AD Federation Services

Otimizando tarefas com PowerShell–Implementando e Administrando AD Federation Services

Saudações,

Peço desculpas pela demora na continuidade desta série de posts. Estive envolvido em alguns projetos que me tomaram muito tempo.

Hoje vamos ao terceiro post da série “Otimizando tarefas com PowerShell”. Irei mostrar os passos para implementação, configuração e administração do Active Directory Federation Services.

Apenas relembrando, e para quem ainda não leu, os dois posts anteriores falaram sobre otimização de tarefas no  AD DS e Web Application Proxy.

Importante ressaltar que numa infra estrutura de proxy reverso com Web Application Proxy é premissa que o AD FS já esteja pronto, nesse caso, o certo seria ter escrito este post antes do anterior, entretanto, como já tinha o material e o expertise no assunto, resolvi inverter um pouco a ordem, mas, reitero que, o AD FS precisa estar pronto, OK?

Vamos lá! Como no post anterior, estamos em um ambiente fictício:

Domínio – uilson.net

AD FS Server – IP 10.10.1.3

Você precisa instalar a role do AD FS.

Lembrando que é necessário um certificado digital para o mesmo. Em se tratando de um servidor que fica em sua rede interna, você pode optar por um certificado gerado em sua própria entidade certificadora (AD CS – Certificate Services – sobre o qual iremos mostrar os princiais comandos PS futuramente). O certificado para o servidor AD FS, deverá estar instalado antes de efetuar a configuração do mesmo. Você pode importar o PFX do certificado via snap-in Certificates ou, como estamos querendo otimizar tarefas, vamos usar o cmdlet para isso:

Import-PfxCertificate –FilePath C:\ADFSCert.pfx cert:\localMachine\my -Password adfscert*

No comando acima, o arquivo PFX do certificado está na raiz do drive C:\. Seria interessante para casos em que você tem 2 ou mais servidores AD FS em uma farm, que os coloque em uma OU específica e crie uma política que envie para eles o certificado. Assim você poupa um passo no processo de deploy.

Ainda sobre o certificado, gere o mesmo de acordo com o AD FS Service Name que você vai definir na instalação. Por exemplo, no nosso laboratório aqui: “adfs.uilson.net”

Agora que o certificado do ADFS já está instalado, crie um host em seu DNS para qual você deverá apontar o IP do seu servidor AD FS – exemplo: “adfs.uilson.net – IP 10.10.1.3”.

Você precisa ter em mente se vai usar o Windows Internal Database (WID) ou se vai usar um servidor SQL. Isso vai depender do tamanho da sua infra, tipo e quantidade de acessos na sua aplicação, entre outros.

1. Instalando a role do AD Federation Services:

Install-windowsfeature adfs-federation -IncludeManagementTools

2. Configurando o servidor AD FS:

Estamos configurando um ambiente AD FS do zero. Portanto,  vou dar alguns exemplos de cenários em que você poderá configurar um AD Federation Services. Recomendo que use o ISE do PowerShell (ao executar o PowerShell, digite ISE):

2.1 – Configurando a farm AD FS:

Teremos que ter um usuário que irá executar o serviço do AD FS no servidor. Este usuário precisa de direitos de domain admin. Para tanto, vamos usar uma variável que iremos chamar de “$fscredential”. Essa variável irá chamar a função “Get-Credential” do PowerShell que deverá solicitar o usuário e a senha.

Como recomendei o uso do ISE para aplicar o comando todo, podemos fazer com que a variável solicite a conta do usuário de serviço e password e já prossiga com a instalação da farm:

$fscredential = Get-Credential

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -ServiceAccountCredential $fscredential

No script acima, você irá primeiramente receber uma telinha pedindo user e a senha que será usado como conta de serviço e posteriormente, com os dados digitados, será feito a instalação da farm AD FS:

image

O parâmetro “-CertificateThumbprint” irá definir o certificado de common name “adfs.uilson.net” para o AD FS. Para descobrir o ThumbPrint de seu certificado, utilize o comando abaixo:

image

O parâmetro “-FederationServicesName”, define o nome do seu serviço de AD FS. É por ele, pelo certificado e pelo host criado no seu DNS (conforme falamos anteriormente) que a requisição chegará até o seu portal.

E por fim o parâmetro “-ServiceAccountCredential” irá usar a variável que falamos acima. Caso você não defina esta variável e nem declare esse parâmetro no comando, o AD FS usará o usuário logado como service account. Se você não usar os parâmetros citados, tenha certeza de que o usuário logado tem direitos de domain admin. Caso contrário a instalação não prosseguirá.

Conforme também falado neste post, o AD FS usa uma base de dados, seja ela o Windows Internal Database (WID) ou um SQL Server. No exemplo que acabei de mostrar, não declaramos nenhum SQL Server. Dessa forma o AD FS irá usar o WID.

Para instalar o AD FS apontando a base de dados para um SQL Server, use o comando abaixo:

$fscredential = Get-Credential

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -ServiceAccountCredential $fscredential -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

No comando acima vemos após a declaração das credenciais, o string de conexão com seu SQL Server.

2.2 – Criando uma farm AD FS com conta GMSA

Se você planeja criar uma farm AD FS com 2 ou mais servidores, é interessante usar um conta de domínio GMSA (Group Managed Service Account).

Para quem não está familiarizado com o GMSA no Windows Server 2012 pra frente, imagine que você tem uma infra de servidores AD FS ou até mesmo IIS em Load Balance com uma ou mais aplicações que usem autenticação Kerberos. Todas as instâncias dos serviços teriam que usar a mesma identidade.

Hoje configuramos, na maioria dos casos,  uma conta de serviços criada no AD a qual colocamos em cada servidor da farm. Entretanto, se você precisa alterar a senha desta conta. Precisará ir em todos os servidores da infra balanceada para alterar a senha. Caso contrário, o servidor no qual a senha não foi alterada, não conseguirá subir o serviço.

O serviço GMSA coordena essas contas de serviço com gerenciamento em um único ponto, agilizando o trabalho do administrador. No link abaixo você encontra um tutorial completo com os pré-requisitos para uso do GMSA e como criar as contas, usando inclusive, o powershell:

https://technet.microsoft.com/en-us/library/jj128431(v=ws.11).aspx

No nosso caso, podemos instalar o AD FS criando uma farm de servidores usando uma conta de serviços GMSA. Veja como no comando abaixo:

Install-AdfsFarm -CertificateThumbprint <certificate_thumbprint> -FederationServiceName <federation_service_name> -GroupServiceAccountIdentifier <domain>\<GMSA_Name>$

Trazendo para um exemplo em nosso laboratório:

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -GroupServiceAccountIdentifier uilson\adfs_farm_user$

Lembrando que o parâmetro “$” ao fim do username é obrigatório.

O exemplo acima cria uma farm de servidores ADFS com uma conta de serviços GMSA, usando o WID (Windows Internal Database) como base de dados. Para criar uma farm conectada a um SQL Server, basta inserir no mesmo comando a string de conexão SQL usada no exemplo do item 2.1 deste post. Segue exemplo abaixo:

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Vale também ressaltar que a conta de serviços da farm não precisa obrigatoriamente ser uma conta GMSA.

2.3 – Adicionandos servidores a uma farm AD FS

Com a farm criada, conforme item 2.2 deste post, você poderá incluir mais servidores nela. Isso obviamente depois de uma análise de performance da aplicação para que você tenha o exato Sizing do seu ambiente AD FS.

Antes de adicionar o servidor na farm, tenha certeza de qual tipo de base de dados vc está trabalhando – WID (Windows Internal Database) ou um SQL Server. Copie tb o arquivo PFX do certificado anteriormente instalado no servidor primário da farm.

Abaixo o comando para inserir um servidor a farm AD FS com base WID, usando como conta de serviço um usuário de domínio:

Add-AdfsFarmNode -ServiceAccountCredential $fscred -PrimaryComputerName <first_federation_server_hostname> -CertificateThumbprint <certificate_thumbprint>

Trazendo para um exemplo em nosso laboratório:

$fscredential = Get-Credential
Add-AdfsFarmNode -ServiceAccountCredential $fscredential -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2

Aqui declaramos a variável usada anteriormente para definição da conta de serviço (domain user) e o nome do servidor que foi instalado como primário, além do ThumbPrint do certificado.

Para quem usa o SQL Server como base para a farm AD FS, veja abaixo o comando para inserir nodes:

$fscredential = Get-Credential
Add-AdfsFarmNode -ServiceAccountCredential $fscredential -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Abaixo o comando para inserir um servidor em uma farm AD FS existente usando uma conta GMSA em base WID:

Add-AdfsFarmNode -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2

E para finalizar a lista de scripts de configuração do AD FS, mostro abaixo o comando para inserir um novo servidor a uma farm existente com uma conta de serviço GMSA em base SQL Server:

Add-AdfsFarmNode -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Com o seu ambiente do AD Federation Services instalado, basta você verificar se o portal inicial está acessível. Seguindo as configurações citadas ao longo deste post, não tem o que dar errado. Basta acessar o endereço criado (no nosso exemplo: https://adfs.uilson.net):

PortalADFS_Uilson

Após se autenticar, você irá visualizar os acessos as aplicações que estão sendo autenticadas pelo AD FS via Relying Part Trust.

3. Administrando o AD FS

Um exemplo básico no AD FS é a criação de Relying Part Trusts – onde você define o caminho das aplicações a serem federadas. Abaixo um comando para criação de um relying part trust com base no script mostrado no último artigo do Web Application Proxy:

Add-AdfsNonClaimsAwareRelyingPartyTrust -Name ‘My App Extranet Publishing’ -Identifier ‘https://appserver.uilson.net/’ -IssuanceAuthorizationRules ‘=>issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");’

Podemos usar uma série de comandos para configurar o AD FS. Existem uma quantidade enorme deles que podemos usar no PowerShell para criação e configuração de relying part trusts e demais regras de autenticação no AD Federation Services, além dos comandos para alteração do certificado. Falar de um ou outro ficaria pouco, entretanto, falar em todos, deixaria o post muito extenso.

Estou colocando abaixo um link com uma lista vasta de comandos powershell para AD Federation Services. Para todos os comandos há um link com exemplos. Além do que, você pode gerar uma lista de exemplos no seu próprio powershell usando o comando get-help, conforme exemplo abaixo:

Get-Help Add-AdfsNonClaimsAwareRelyingPartyTrust –Examples

O link para o artigo com os comandos – https://technet.microsoft.com/en-us/%5Clibrary/Dn479343(v=WPS.630).aspx

Espero que o conteúdo seja útil e lhe ajude no dia a dia.

Abraços

Uilson

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: