Integrar a identidade do AD FS com o datacenter do Azure Stack Hub

Pode implementar o Azure Stack Hub com Microsoft Entra ID ou Serviços de Federação do Active Directory (AD FS) (AD FS) como fornecedor de identidade. A escolha tem de ser feita antes de implementar o Azure Stack Hub. Num cenário ligado, pode escolher Microsoft Entra ID ou AD FS. Para um cenário desligado, apenas o AD FS é suportado. Este artigo mostra como integrar o AD FS do Azure Stack Hub com o seu datacenter AD FS.

Importante

Não pode mudar o fornecedor de identidade sem reimplementar toda a solução do Azure Stack Hub.

Serviços de Federação do Active Directory (AD FS) e Graph

A implementação com o AD FS permite que as identidades numa floresta existente do Active Directory se autentiquem com recursos no Azure Stack Hub. Esta floresta existente do Active Directory requer uma implementação do AD FS para permitir a criação de uma confiança de federação do AD FS.

A autenticação é uma parte da identidade. Para gerir o controlo de acesso baseado em funções (RBAC) no Azure Stack Hub, o componente do Graph tem de ser configurado. Quando o acesso a um recurso é delegado, o componente do Graph procura a conta de utilizador na floresta existente do Active Directory com o protocolo LDAP.

Arquitetura do AD FS do Azure Stack Hub

O AD FS existente é o serviço de tokens de segurança de conta (STS) que envia afirmações para o Azure Stack Hub AD FS (o STS do recurso). No Azure Stack Hub, a automatização cria a confiança do fornecedor de afirmações com o ponto final de metadados do AD FS existente.

No AD FS existente, tem de ser configurada uma confiança de entidade confiadora. Este passo não é efetuado pela automatização e tem de ser configurado pelo operador. O ponto final VIP do Azure Stack Hub para o AD FS pode ser criado com o padrão https://adfs.<Region>.<ExternalFQDN>/.

A configuração de confiança da entidade confiadora também requer que configure as regras de transformação de afirmações fornecidas pela Microsoft.

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

Para o último passo, é configurado um novo proprietário para a subscrição de fornecedor predefinida. Esta conta tem acesso total a todos os recursos quando tem sessão iniciada no portal de administrador do Azure Stack Hub.

Requisitos:

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

Configurar a integração do Graph

O Graph só suporta a integração com uma única floresta do Active Directory. Se existirem múltiplas florestas, apenas a floresta especificada na configuração será utilizada para obter utilizadores e grupos.

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

Parâmetro Parâmetro da Folha de Cálculo de Implementação Descrição Exemplo
CustomADGlobalCatalog FQDN da Floresta do AD FS FQDN da floresta do Active Directory de destino com a qual pretende integrar Contoso.com
CustomADAdminCredentials Um utilizador com permissão de Leitura LDAP graphservice

Configurar Sites do Active Directory

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

Adicione a sub-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 seu Active Directory tem dois sites: Seattle e Redmond. Se o Azure Stack Hub estiver implementado no site de Seattle, adicionará a sub-rede VIP Pública do Azure Stack Hub ao site do Active Directory para Seattle.

Para obter mais informações sobre Sites do Active Directory, veja Estruturar a topologia do site.

Nota

Se o Active Directory for composto por um único site, pode ignorar este passo. Se tiver uma sub-rede catch-all configurada, confirme que a sub-rede vip pública do Azure Stack Hub não faz parte da mesma.

Criar uma conta de utilizador no Active Directory existente (opcional)

Opcionalmente, pode criar uma conta para o serviço Graph no Active Directory existente. Efetue este passo se ainda não tiver uma conta que pretenda utilizar.

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

    • Nome de utilizador: graphservice
    • Palavra-passe: utilize uma palavra-passe segura e configure a palavra-passe para nunca expirar.

    Não são necessárias permissões especiais ou associação.

Automatização de acionador para configurar o gráfico

Para este procedimento, utilize um computador na sua rede de datacenter que possa comunicar com o ponto final privilegiado no Azure Stack Hub.

  1. Abra uma sessão de Windows PowerShell elevada (executar como administrador) e ligue-se ao endereço IP do ponto final privilegiado. Utilize as credenciais do CloudAdmin para autenticar.

    $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 tem uma sessão com o ponto final privilegiado, execute o seguinte comando:

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

     $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} 
    
    
    

    Executar o script abaixo da compilação do Azure Stack Hub antes de 2008

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

    Quando lhe for pedido, especifique a credencial da conta de utilizador que pretende utilizar para o serviço Graph (como o graphservice). A entrada do cmdlet Register-DirectoryService tem de ser o nome da floresta/domínio raiz na floresta em vez de qualquer outro domínio na floresta.

    Importante

    Aguarde pelo pop-up das credenciais (Get-Credential não é suportado no ponto final privilegiado) e introduza as credenciais da Conta de Serviço do Graph.

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

    Parâmetro Description
    SkipRootDomainValidation Especifica que um domínio subordinado tem de ser utilizado em vez do domínio de raiz recomendado.
    ValidateParameters Ignora todas as verificações de validação.

Protocolos e portas de gráficos

O serviço Graph no Azure Stack Hub utiliza os seguintes protocolos e portas para comunicar com um Servidor de Catálogo Global (GC) gravável e o Centro de Distribuição de Chaves (KDC) que podem processar pedidos de início de sessão na floresta do Active Directory de destino.

O serviço Graph no Azure Stack Hub utiliza os seguintes protocolos e portas para 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

Configurar a integração do AD FS ao transferir metadados de federação

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

Parâmetro Parâmetro da Folha de Cálculo de Implementação Descrição Exemplo
CustomAdfsName Nome do Fornecedor do AD FS Nome do fornecedor de afirmações.
Aparece assim na página de destino do AD FS.
Contoso
CustomAD
FSFederationMetadataEndpointUri
URI de Metadados do AD FS Ligação de metadados de federação. https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml
SigningCertificateRevocationCheck ND Parâmetro opcional para ignorar a verificação CRL. Nenhuma

Acionar a automatização para configurar a confiança do fornecedor de afirmações no Azure Stack Hub (ao transferir metadados de federação)

Para este procedimento, utilize um computador que possa comunicar com o ponto final privilegiado no Azure Stack Hub. Espera-se que o certificado utilizado pela conta STS AD FS seja considerado fidedigno pelo Azure Stack Hub.

  1. Abra uma sessão de Windows PowerShell elevada e ligue-se ao ponto final privilegiado.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Agora que está ligado ao ponto final privilegiado, execute o seguinte comando com os parâmetros adequados para o 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 subscrição de fornecedor predefinida com os parâmetros adequados para o seu ambiente:

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

Configurar a integração do AD FS ao fornecer o ficheiro de metadados de federação

A partir da versão 1807, utilize este 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 finais no Azure Stack Hub.
  • Não existe conectividade de rede ao servidor do AD FS existente a partir 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 automatização:

Parâmetro Descrição Exemplo
CustomAdfsName Nome do fornecedor de afirmações. Aparece assim na página de destino do AD FS. Contoso
CustomADFSFederationMetadataFileContent Conteúdo de metadados. $using:federationMetadataFileContent

Criar ficheiro de metadados de federação

Para o procedimento seguinte, tem de utilizar um computador com conectividade de rede à implementação do AD FS existente, que se torna o STS da conta. Os certificados necessários também têm de ser instalados.

  1. Abra uma sessão de Windows PowerShell elevada e execute o seguinte comando com os parâmetros adequados para o 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 ficheiro de metadados para um computador que possa comunicar com o ponto final privilegiado.

Automatização de acionador para configurar a confiança do fornecedor de afirmações no Azure Stack Hub (com o ficheiro de metadados de federação)

Para este procedimento, utilize um computador que possa comunicar com o ponto final privilegiado no Azure Stack Hub e tenha acesso ao ficheiro de metadados que criou num passo anterior.

  1. Abra uma sessão de Windows PowerShell elevada e ligue-se ao ponto final privilegiado.

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

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataFileContent $using:federationMetadataFileContent
    
  3. Execute o seguinte comando para atualizar o proprietário da subscrição de fornecedor predefinida. Utilize os parâmetros adequados para o seu ambiente.

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

    Nota

    Quando roda o certificado no AD FS (STS da conta) existente, tem de configurar novamente a integração do AD FS. Tem de configurar a integração mesmo que o ponto final de metadados esteja acessível ou tenha sido configurado ao fornecer o ficheiro de metadados.

Configurar a entidade confiadora na implementação do AD FS existente (STS da conta)

A Microsoft fornece um script que configura a confiança da entidade confiadora, incluindo as regras de transformação de afirmações. A utilização do script é opcional, uma vez que pode executar os comandos manualmente.

Pode transferir o script auxiliar a partir das Ferramentas do Azure Stack Hub no GitHub.

Se decidir executar manualmente os comandos, siga estes passos:

  1. Copie o seguinte conteúdo para um ficheiro de .txt (por exemplo, guardado como c:\ClaimIssuanceRules.txt) na instância do AD FS ou membro do farm do seu datacenter:

    @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á ativada. Pode verificar se já está ativado ao executar o seguinte cmdlet:

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

    Nota

    As cadeias de agente de utilizador suportadas pela Autenticação Integrada do Windows (WIA) podem estar desatualizadas para a implementação do AD FS e podem necessitar de uma atualização para suportar os clientes mais recentes. Pode ler mais sobre a atualização das cadeias de agente de utilizador suportadas por WIA no artigo Configurar a autenticação baseada em formulários da intranet para dispositivos que não suportam WIA.

    Para obter os passos para ativar a política de autenticação baseada em formulários, veja Configurar Políticas de Autenticação.

  3. Para adicionar a confiança da entidade confiadora, execute o seguinte comando Windows PowerShell na instância do AD FS ou num membro do farm. Certifique-se de que atualiza o ponto final do AD FS e aponta para o ficheiro criado no Passo 1.

    Importante

    Para os clientes que executam as versões 2002 e posteriores do Azure Stack Hub, o TLS 1.2 é imposto no ponto final do Azure Stack Hub ADFS. Como tal, o TLS 1.2 também tem de estar ativado nos servidores ADFS do cliente. Caso contrário, ocorrerá o seguinte erro ao ser executado Add-ADFSRelyingPartyTrust no anfitrião/farm do ADFS 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

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

  4. Quando utiliza o Internet Explorer ou o browser Microsoft Edge para aceder ao Azure Stack Hub, tem de ignorar os enlaces de tokens. Caso contrário, as tentativas de início de sessão falham. Na instância do AD FS ou membro do farm, execute o seguinte comando:

    Nota

    Este passo não é aplicável ao utilizar Windows Server 2012 ou 2012 R2 AD FS. Nesse caso, é seguro ignorar este comando e continuar com a integração.

    Set-AdfsProperties -IgnoreTokenBinding $true
    

Criação do SPN

Existem muitos cenários que requerem a utilização de um nome principal de serviço (SPN) para autenticação. Seguem-se alguns exemplos:

  • Utilização da CLI do Azure com a implementação do AD FS do Azure Stack Hub.
  • Pacote de Gestão do System Center para o Azure Stack Hub quando implementado com o AD FS.
  • Fornecedores de recursos no Azure Stack Hub quando implementados com o AD FS.
  • Várias aplicações.
  • Precisa de um início de sessão não interativo.

Importante

O AD FS só suporta sessões de início de sessão interativas. Se precisar de um início de sessão não interativo para um cenário automatizado, tem de utilizar um SPN.

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

Resolução de problemas

Reversão da Configuração

Se ocorrer um erro que deixe o ambiente num estado em que já não pode autenticar, está disponível uma opção de reversão.

  1. Abra uma sessão de Windows PowerShell elevada 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 são revertidas. Só é possível autenticar com o utilizador do CloudAdmin incorporado.

    Importante

    Tem de configurar o proprietário original da subscrição de fornecedor predefinida.

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

Recolher registos adicionais

Se algum dos cmdlets falhar, pode recolher registos adicionais com o Get-Azurestacklogs cmdlet .

  1. Abra uma sessão de Windows PowerShell elevada 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
    

Passos seguintes

Integrar soluções de monitorização externas