Integrar a identidade do AD FS ao datacenter do Azure Stack Hub

Você pode implantar o Azure Stack Hub usando Microsoft Entra ID ou Serviços de Federação do Active Directory (AD FS) (AD FS) como o provedor de identidade. A escolha deve ser feita antes de implantar o Azure Stack Hub. Em um cenário conectado, você pode escolher Microsoft Entra ID ou AD FS. Em um cenário desconectado, há suporte apenas para o AD FS. Este artigo mostra como integrar o Ad FS do Azure Stack Hub ao AD FS do datacenter.

Importante

Não é possível alternar o provedor de identidade sem reimplantar toda a solução do Azure Stack Hub.

Serviços de Federação do Active Directory e Graph

A implantação com o AD FS permite que identidades em uma floresta existente do Active Directory se autentiquem com recursos no Azure Stack Hub. Essa floresta existente do Active Directory requer uma implantação de AD FS para permitir criar uma relação de confiança de federação com o AD FS.

A autenticação é uma parte da identidade. Para gerenciar o RBAC (controle de acesso baseado em função) no Azure Stack Hub, o componente Graph deve ser configurado. Quando o acesso a um recurso é delegado, o componente Graph pesquisa a conta do usuário na floresta existente do Active Directory usando o protocolo LDAP.

Arquitetura do AD FS do Azure Stack Hub

Os AD FS existentes são o serviço de token de segurança (STS) da conta que envia declarações para os AD FS do Azure Stack Hub (o STS do recurso). No Azure Stack Hub, a automação cria a relação de confiança do provedor de declarações com o ponto de extremidade de metadados para os AD FS existente.

Nos AD FS existentes, deve ser configurado um objeto de confiança de terceira parte confiável. Essa etapa não é feita pela automação e deve ser configurada pelo operador. O ponto de extremidade VIP do Azure Stack Hub para os AD FS pode ser criado usando o padrão https://adfs.<Region>.<ExternalFQDN>/.

A configuração do objeto de confiança de terceira parte confiável também exige que você configure as regras de transformação de declaração fornecidas pela Microsoft.

Para a configuração do Graph, uma conta de serviço deve ser fornecida que tenha permissão de "leitura" no Active Directory existente. Essa conta é necessária como entrada para a automação habilitar cenários RBAC.

Na última etapa, um novo proprietário é configurado para a assinatura do provedor padrão. Essa conta tem acesso completo a todos os recursos quando conectada ao portal do administrador do Azure Stack Hub.

Requisitos:

Componente Requisito
Grafo Microsoft Active Directory 2012/2012 R2/2016 2019
AD FS Windows Server 2012/2012 R2/2016 2019

Configuração da integração do Graph

O Graph dá suporte somente à integração com uma única floresta do Active Directory. Se houver várias florestas, somente a floresta especificada na configuração será usada para buscar usuários e grupos.

As informações a seguir são necessárias como entradas para os parâmetros de automação:

Parâmetro Parâmetro da Planilha de Implantação Descrição Exemplo
CustomADGlobalCatalog FQDN da floresta de AD FS FQDN da floresta do Active Directory de destino com a qual você deseja integrar Contoso.com
CustomADAdminCredentials Um usuário com permissão de leitura de LDAP graphservice

Configurar os sites do Active Directory

Para implantações do Active Directory com vários sites, configure o site mais próximo do Active Directory para a implantação do Azure Stack Hub. A configuração evita que o serviço do Graph do Azure Stack Hub resolva consultas usando um Servidor de Catálogo Global de um site remoto.

Adicione a sub-rede de rede VIP pública do Azure Stack Hub ao Site do Active Directory mais próximo do Azure Stack Hub. Por exemplo, digamos que o Active Directory tenha dois sites: Seattle e Redmond. Se o Azure Stack Hub for implantado no site de Seattle, você adicionará a sub-rede da rede VIP pública do Azure Stack Hub ao site para Seattle do Active Directory.

Para obter mais informações sobre sites do Active Directory, consulte Projetando a topologia do site.

Observação

Se o Active Directory consistir em um único site, você poderá ignorar esta etapa. Se você tiver uma sub-rede catch-all configurada, valide se a sub-rede de rede VIP pública do Azure Stack Hub não faz parte dela.

Criar conta de usuário no Active Directory existente (opcional)

Opcionalmente, você pode criar uma conta para o Graph no Active Directory existente. Faça esta etapa se você ainda não tiver uma conta que queira usar.

  1. No Active Directory existente, crie a seguinte conta de usuário (recomendação):

    • Nome de usuário: graphservice
    • Senha: use uma senha forte e configure a senha para nunca expirar.

    Nenhuma permissão ou associação especial é necessária.

Disparar automação para configurar o grafo

Para este procedimento, use um computador na rede de datacenter que possa se comunicar com o ponto de extremidade privilegiado no Azure Stack Hub.

  1. Abra uma sessão com privilégios elevados do PowerShell no Windows (execute como administrador) e conecte-se ao endereço IP do ponto de extremidade privilegiado. Na autenticação, use as credenciais CloudAdmin.

    $creds = Get-Credential
    $pep = New-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
  2. Agora que você tem uma sessão com o ponto de extremidade privilegiado, execute o seguinte comando:

    Executar o script abaixo para a compilação do Azure Stack Hub 2008 e mais recente

     $i = @(
            [pscustomobject]@{ 
                      CustomADGlobalCatalog="fabrikam.com"
                      CustomADAdminCredential= Get-Credential -Message "Do not include the domain name of the graphservice account in the username."
                      SkipRootDomainValidation = $false 
                      ValidateParameters = $true
                    }) 
    
     Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -customCatalog $using:i} 
    
    
    

    Execute o script abaixo para o build do Azure Stack Hub antes de 2008

    Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -CustomADGlobalCatalog contoso.com} 
    
    
    

    Quando solicitado, especifique a credencial da conta de usuário que você deseja usar no serviço Graph (como graphservice). A entrada para o cmdlet Register-DirectoryService deve ser o nome da floresta/domínio raiz na floresta, em vez de qualquer outro domínio na floresta.

    Importante

    Aguarde o pop-up de credenciais (não há suporte para Get-Credential no ponto de extremidade privilegiado) e insira as credenciais da Conta de Serviço do Graph.

  3. O cmdlet Register-DirectoryService tem parâmetros opcionais que você pode usar em determinados cenários em que a validação existente do Active Directory falha. Ao ser executado, esse cmdlet valida que o domínio fornecido é o domínio raiz, um servidor de catálogo global pode ser alcançado, e que a conta fornecida recebeu acesso de leitura.

    Parâmetro Descrição
    SkipRootDomainValidation Especifica que um domínio filho deve ser usado em vez do domínio raiz recomendado.
    ValidateParameters Ignora todas as verificações de validação.

Protocolos e portas do Graph

O serviço do Graph no Azure Stack Hub usa os protocolos e portas a seguir para se comunicar com um GC (Servidor de Catálogo Global) e um KCDC (Centro de Distribuição de Chaves) graváveis que podem processar solicitações de logon na floresta de destino do Active Directory.

O serviço do Graph no Azure Stack Hub usa os seguintes protocolos e portas para se comunicar com o Active Directory de destino:

Tipo Porta Protocolo
LDAP 389 TCP & UDP
LDAP SSL 636 TCP
LDAP GC 3268 TCP
LDAP GC SSL 3269 TCP

Configurando a integração do AD FS baixando metadados de federação

As seguintes informações são necessárias como entrada para os parâmetros de automação:

Parâmetro Parâmetro da Planilha de Implantação Descrição Exemplo
CustomAdfsName Nome do provedor do AD FS Nome do provedor de declarações.
Ele aparece dessa forma na página de aterrissagem do AD FS.
Contoso
CustomAD
FSFederationMetadataEndpointUri
URI de metadados do AD FS Link de metadados de federação. https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml
SigningCertificateRevocationCheck NA Parâmetro opcional para ignorar a verificação de CRL. Nenhum

Disparar a automação para configurar a confiança do provedor de declarações no Azure Stack Hub (baixando metadados de federação)

Para este procedimento, use um computador que possa se comunicar com o ponto de extremidade privilegiado no Azure Stack Hub. Espera-se que o certificado usado pela conta STS AD FS seja confiável pelo Azure Stack Hub.

  1. Abra uma sessão de Windows PowerShell com privilégios elevados e conecte-se ao ponto de extremidade privilegiado.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Agora que você está conectado ao ponto de extremidade privilegiado, execute o seguinte comando usando os parâmetros apropriados para seu ambiente:

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataEndpointUri "https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml"
    
  3. Execute o seguinte comando para atualizar o proprietário da assinatura do provedor padrão usando os parâmetros apropriados para seu ambiente:

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

Configurando a integração do AD FS fornecendo o arquivo de metadados de federação

A partir da versão 1807, use esse método se uma das seguintes condições for verdadeira:

  • A cadeia de certificados é diferente para o AD FS em comparação com todos os outros pontos de extremidade no Azure Stack Hub.
  • Não há conectividade de rede com o servidor AD FS existente da instância do AD FS do Azure Stack Hub.

As seguintes informações são necessárias como entrada para os parâmetros de automação:

Parâmetro Descrição Exemplo
CustomAdfsName Nome do provedor de declarações. Ele aparece dessa forma na página de aterrissagem do AD FS. Contoso
CustomADFSFederationMetadataFileContent Conteúdo de metadados. $using:federationMetadataFileContent

Criar arquivo de metadados de federação

Para o procedimento a seguir, você deve usar um computador que tenha conectividade de rede com a implantação existente do AD FS, que se torna o STS da conta. Os certificados necessários também devem ser instalados.

  1. Abra uma sessão de Windows PowerShell com privilégios elevados e execute o seguinte comando usando os parâmetros apropriados para seu ambiente:

     $url = "https://win-SQOOJN70SGL.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml"
     $webclient = New-Object System.Net.WebClient
     $webclient.Encoding = [System.Text.Encoding]::UTF8
     $metadataAsString = $webclient.DownloadString($url)
     Set-Content -Path c:\metadata.xml -Encoding UTF8 -Value $metadataAsString
    
  2. Copie o arquivo de metadados para um computador que possa se comunicar com o ponto de extremidade privilegiado.

Disparar a automação para configurar a confiança do provedor de declarações no Azure Stack Hub (usando o arquivo de metadados de federação)

Para este procedimento, use um computador que possa se comunicar com o ponto de extremidade privilegiado no Azure Stack Hub e tenha acesso ao arquivo de metadados que você criou em uma etapa anterior.

  1. Abra uma sessão de Windows PowerShell com privilégios elevados e conecte-se ao ponto de extremidade privilegiado.

    $federationMetadataFileContent = get-content c:\metadata.xml
    $creds=Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Agora que você está conectado ao ponto de extremidade privilegiado, execute o seguinte comando usando os parâmetros apropriados para seu ambiente:

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataFileContent $using:federationMetadataFileContent
    
  3. Execute o comando a seguir para atualizar o proprietário da assinatura do provedor padrão. Use os parâmetros apropriados para seu ambiente.

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

    Observação

    Ao girar o certificado no AD FS (STS da conta) existente, você deve configurar a integração do AD FS novamente. Você deve configurar a integração mesmo que o ponto de extremidade de metadados esteja acessível ou ele tenha sido configurado fornecendo o arquivo de metadados.

Configurar terceira parte confiável na implantação existente do AD FS (STS da conta)

A Microsoft fornece um script que configura a relação de confiança da terceira parte confiável, incluindo as regras de transformação de declaração. O uso do script é opcional, pois você pode executar os comandos manualmente.

Você pode baixar o script auxiliar das Ferramentas do Azure Stack Hub no GitHub.

Se você decidir executar manualmente os comandos, siga estas etapas:

  1. Copie o seguinte conteúdo em um arquivo de .txt (por exemplo, salvo como c:\ClaimIssuanceRules.txt) na instância do AD FS do datacenter ou no membro do farm:

    @RuleTemplate = "LdapClaims"
    @RuleName = "Name claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "UPN claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "ObjectID claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]
    => issue(Type = "http://schemas.microsoft.com/identity/claims/objectidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
    
    @RuleName = "Family Name and Given claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"), query = ";sn,givenName;{0}", param = c.Value);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all Group SID claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Issuer =~ "^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$"]
    => issue(claim = c);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all windows account name claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
    => issue(claim = c);
    
  2. Valide se a autenticação baseada em Windows Forms para extranet e intranet está habilitada. Você pode marcar se ele já estiver habilitado executando o seguinte cmdlet:

    Get-AdfsAuthenticationProvider | where-object { $_.name -eq "FormsAuthentication" } | select Name, AllowedForPrimaryExtranet, AllowedForPrimaryIntranet
    

    Observação

    As cadeias de caracteres de agente de usuário com suporte do WIA (Autenticação Integrada do Windows) podem estar desatualizadas para sua implantação do AD FS e podem exigir uma atualização para dar suporte aos clientes mais recentes. Você pode ler mais sobre como atualizar as cadeias de caracteres de agente de usuário com suporte do WIA no artigo Configurando a autenticação baseada em formulários da intranet para dispositivos que não dão suporte a WIA.

    Para obter as etapas para habilitar a política de autenticação baseada em formulário, consulte Configurar políticas de autenticação.

  3. Para adicionar a relação de confiança de terceira parte confiável, execute o seguinte comando Windows PowerShell na instância do AD FS ou em um membro do farm. Atualize o ponto de extremidade do AD FS e aponte para o arquivo criado na Etapa 1.

    Importante

    Para clientes que executam o Azure Stack Hub versões 2002 e posteriores, o TLS 1.2 é imposto no ponto de extremidade do ADFS do Azure Stack Hub. Dessa forma, o TLS 1.2 também deve ser habilitado nos servidores do ADFS do cliente. Caso contrário, o seguinte erro ocorrerá durante a execução Add-ADFSRelyingPartyTrust no host/farm do ADFS de propriedade do cliente:

    Add-ADFSRelyingPartyTrust : The underlying connection was closed: An unexpected error occurred on a send.

    Para o AD FS 2016/2019

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -AccessControlPolicyName "Permit everyone" -TokenLifeTime 1440
    

    Para o AD FS 2012/2012 R2

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -TokenLifeTime 1440
    

    Importante

    Você deve usar o snap-in do AD FS MMC para configurar as Regras de Autorização de Emissão ao usar Windows Server 2012 ou 2012 R2 AD FS.

  4. Ao usar o Explorer da Internet ou o navegador Microsoft Edge para acessar o Azure Stack Hub, você deve ignorar as associações de token. Caso contrário, as tentativas de entrada falharão. Na instância do AD FS ou em um membro do farm, execute o seguinte comando:

    Observação

    Esta etapa não é aplicável ao usar Windows Server 2012 ou 2012 R2 AD FS. Nesse caso, é seguro ignorar esse comando e continuar com a integração.

    Set-AdfsProperties -IgnoreTokenBinding $true
    

Criação de SPN

Há muitos cenários que exigem o uso de um SPN (nome da entidade de serviço) para autenticação. Estes são alguns exemplos:

  • Uso da CLI do Azure com a implantação do AD FS do Azure Stack Hub.
  • Pacote de Gerenciamento do System Center para o Azure Stack Hub quando implantado com o AD FS.
  • Provedores de recursos no Azure Stack Hub quando implantados com o AD FS.
  • Vários aplicativos.
  • Você precisa de uma entrada não interativa.

Importante

O AD FS dá suporte apenas a sessões de entrada interativas. Se você precisar de uma entrada não interativa para um cenário automatizado, deverá usar um SPN.

Para obter mais informações sobre como criar um SPN, consulte Criar entidade de serviço para o AD FS.

Solução de problemas

Reversão de configuração

Se ocorrer um erro que deixa o ambiente em um estado em que você não pode mais se autenticar, uma opção de reversão estará disponível.

  1. Abra uma sessão de Windows PowerShell com privilégios elevados e execute os seguintes comandos:

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Em seguida, execute o seguinte cmdlet:

    Reset-DatacenterIntegrationConfiguration
    

    Depois de executar a ação de reversão, todas as alterações de configuração serão revertidas. Somente a autenticação com o usuário interno do CloudAdmin é possível.

    Importante

    Você deve configurar o proprietário original da assinatura do provedor padrão.

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "azurestackadmin@[Internal Domain]"
    

Coletando logs adicionais

Se algum dos cmdlets falhar, você poderá coletar logs adicionais usando o Get-Azurestacklogs cmdlet .

  1. Abra uma sessão de Windows PowerShell com privilégios elevados e execute os seguintes comandos:

    $creds = Get-Credential
    Enter-pssession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Em seguida, execute o seguinte cmdlet:

    Get-AzureStackLog -OutputPath \\myworkstation\AzureStackLogs -FilterByRole ECE
    

Próximas etapas

Integrar soluções de monitoramento externo