Utilizar o ponto final privilegiado no Azure Stack Hub

Enquanto operador do Azure Stack Hub, deve utilizar o portal de administrador, o PowerShell ou as APIs de Resource Manager do Azure para a maioria das tarefas de gestão diárias. No entanto, para algumas operações menos comuns, tem de utilizar o ponto final privilegiado (PEP). O PEP é uma consola remota do PowerShell pré-configurada que lhe fornece capacidades suficientes para o ajudar a realizar uma tarefa necessária. O ponto final utiliza a JEA do PowerShell (Administração Just Enough) para expor apenas um conjunto restrito de cmdlets. Para aceder ao PEP e invocar o conjunto restrito de cmdlets, é utilizada uma conta com privilégios baixos. Não são necessárias contas de administrador. Para segurança adicional, o scripting não é permitido.

Pode utilizar o PEP para realizar estas tarefas:

  • Tarefas de baixo nível, como recolher registos de diagnóstico.
  • Muitas tarefas de integração de datacenters pós-implementação para sistemas integrados, como adicionar reencaminhadores do Sistema de Nomes de Domínio (DNS) após a implementação, configurar a integração do Microsoft Graph, integração de Serviços de Federação do Active Directory (AD FS) (AD FS), rotação de certificados, etc.
  • Para trabalhar com suporte para obter acesso temporário e de alto nível para uma resolução de problemas aprofundada de um sistema integrado.

O PEP regista todas as ações (e o resultado correspondente) que executa na sessão do PowerShell. Isto proporciona transparência total e auditoria completa das operações. Pode manter estes ficheiros de registo para futuras auditorias.

Nota

No Azure Stack Development Kit (ASDK), pode executar alguns dos comandos disponíveis no PEP diretamente a partir de uma sessão do PowerShell no anfitrião do development kit. No entanto, poderá querer testar algumas operações com o PEP, como a recolha de registos, porque este é o único método disponível para realizar determinadas operações num ambiente de sistemas integrados.

Nota

Também pode utilizar a Estação de Trabalho de Acesso do Operador (OAW) para aceder ao ponto final privilegiado (PEP), ao portal do Administrador para cenários de suporte e às Ferramentas do GitHub do Azure Stack Hub. Para obter mais informações, veja Azure Stack Hub Operator Access Workstation (Estação de Trabalho de Acesso do Operador do Azure Stack Hub).

Aceder ao ponto final privilegiado

Pode aceder ao PEP através de uma sessão remota do PowerShell na máquina virtual (VM) que aloja o PEP. No ASDK, esta VM tem o nome AzS-ERCS01. Se estiver a utilizar um sistema integrado, existem três instâncias do PEP, cada uma em execução dentro de uma VM (Prefix-ERCS01, Prefix-ERCS02 ou Prefix-ERCS03) em anfitriões diferentes para resiliência.

Antes de iniciar este procedimento para um sistema integrado, certifique-se de que consegue aceder ao PEP através do endereço IP ou através do DNS. Após a implementação inicial do Azure Stack Hub, só pode aceder ao PEP por endereço IP porque a integração de DNS ainda não está configurada. O fornecedor de hardware do OEM irá fornecer-lhe um ficheiro JSON com o nome AzureStackStampDeploymentInfo que contém os endereços IP PEP.

Também pode encontrar o endereço IP no portal de administrador do Azure Stack Hub. Abra o portal, por exemplo, https://adminportal.local.azurestack.external. Selecione Propriedades de Gestão> deRegiões.

Terá de definir a definição de cultura atual como ao en-US executar o ponto final privilegiado. Caso contrário, os cmdlets como Test-AzureStack ou Get-AzureStackLog não funcionarão conforme esperado.

Nota

Por motivos de segurança, necessitamos que se ligue ao PEP apenas a partir de uma VM protegida em execução sobre o anfitrião do ciclo de vida do hardware ou a partir de um computador dedicado e seguro, como uma Estação de Trabalho de Acesso Privilegiado. A configuração original do anfitrião do ciclo de vida do hardware não pode ser modificada a partir da configuração original (incluindo a instalação de software novo) ou utilizada para ligar ao PEP.

  1. Estabeleça a confiança.

    • Num sistema integrado, execute o seguinte comando a partir de uma sessão de Windows PowerShell elevada para adicionar o PEP como um anfitrião fidedigno na VM protegida em execução no anfitrião do ciclo de vida do hardware ou na Estação de Trabalho de Acesso Privilegiado.

      Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
      
    • Se estiver a executar o ASDK, inicie sessão no anfitrião do development kit.

  2. Na VM protegida em execução no anfitrião do ciclo de vida do hardware ou na Estação de Trabalho de Acesso Privilegiado, abra uma sessão de Windows PowerShell. Execute os seguintes comandos para estabelecer uma sessão remota na VM que aloja o PEP:

    • Num sistema integrado:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

      O ComputerName parâmetro pode ser o endereço IP ou o nome DNS de uma das VMs que aloja o PEP.

      Nota

      O Azure Stack Hub não faz uma chamada remota ao validar a credencial pep. Baseia-se numa chave pública RSA armazenada localmente para o fazer.

    • Se estiver a executar o ASDK:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

    Quando lhe for pedido, utilize as seguintes credenciais:

    • Nome de utilizador: especifique a conta CloudAdmin, no formato < domínio >do Azure Stack Hub\cloudadmin. (Para o ASDK, o nome de utilizador é azurestack\cloudadmin)
    • Palavra-passe: introduza a mesma palavra-passe fornecida durante a instalação da conta de administrador de domínio do AzureStackAdmin.

    Nota

    Se não conseguir ligar ao ponto final ERCS, repita os passos um e dois com outro endereço IP da VM ERCS.

    Aviso

    Por predefinição, o selo do Azure Stack Hub está configurado com apenas uma conta CloudAdmin. Não existem opções de recuperação se as credenciais da conta forem perdidas, comprometidas ou bloqueadas. Perderá o acesso ao ponto final privilegiado e a outros recursos.

    Recomenda-se vivamente que crie contas CloudAdmin adicionais para evitar a reimplementação do seu selo às suas próprias custas. Certifique-se de que documenta estas credenciais com base nas diretrizes da sua empresa.

  3. Depois de ligar, o pedido será alterado para [endereço IP ou nome da VM ERCS]: PS> ou para [azs-ercs01]: PS>, consoante o ambiente. A partir daqui, execute Get-Command para ver a lista de cmdlets disponíveis.

    Pode encontrar uma referência para cmdlets em referência de ponto final privilegiado do Azure Stack Hub

    Muitos destes cmdlets destinam-se apenas a ambientes de sistema integrados (como os cmdlets relacionados com a integração do datacenter). No ASDK, os seguintes cmdlets foram validados:

    • Clear-Host
    • Close-PrivilegedEndpoint
    • Exit-PSSession
    • Get-AzureStackLog
    • Get-AzureStackStampInformation
    • Get-Command
    • Get-FormatData
    • Get-Help
    • Get-ThirdPartyNotices
    • Measure-Object
    • New-CloudAdminUser
    • Out-Default
    • Remove-CloudAdminUser
    • Select-Object
    • Set-CloudAdminUserPassword
    • Test-AzureStack
    • Stop-AzureStack
    • Get-ClusterLog

Como utilizar o ponto final privilegiado

Conforme mencionado acima, o PEP é um ponto final JEA do PowerShell . Ao fornecer uma camada de segurança forte, um ponto final JEA reduz algumas das capacidades básicas do PowerShell, como scripting ou conclusão de separadores. Se tentar qualquer tipo de operação de script, a operação falha com o erro ScriptsNotAllowed. Este comportamento de falha é esperado.

Por exemplo, para obter a lista de parâmetros para um determinado cmdlet, execute o seguinte comando:

    Get-Command <cmdlet_name> -Syntax

Em alternativa, pode utilizar o cmdlet Import-PSSession para importar todos os cmdlets PEP para a sessão atual no seu computador local. Os cmdlets e as funções do PEP estão agora disponíveis no seu computador local, juntamente com a conclusão do separador e, em geral, o scripting. Também pode executar o módulo Get-Help para rever as instruções do cmdlet.

Para importar a sessão PEP no seu computador local, siga os seguintes passos:

  1. Estabeleça a confiança.

    • Num sistema integrado, execute o seguinte comando a partir de uma sessão de Windows PowerShell elevada para adicionar o PEP como um anfitrião fidedigno na VM protegida em execução no anfitrião do ciclo de vida do hardware ou na Estação de Trabalho de Acesso Privilegiado.

      winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
      
    • Se estiver a executar o ASDK, inicie sessão no anfitrião do development kit.

  2. Na VM protegida em execução no anfitrião do ciclo de vida do hardware ou na Estação de Trabalho de Acesso Privilegiado, abra uma sessão de Windows PowerShell. Execute os seguintes comandos para estabelecer uma sessão remota na máquina virtual que aloja o PEP:

    • Num sistema integrado:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName <IP_address_of_ERCS> `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

      O ComputerName parâmetro pode ser o endereço IP ou o nome DNS de uma das VMs que aloja o PEP.

    • Se estiver a executar o ASDK:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName azs-ercs01 `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

    Quando lhe for pedido, utilize as seguintes credenciais:

    • Nome de utilizador: especifique a conta cloudAdmin, no formato < domínio >do Azure Stack Hub\cloudadmin. (Para ASDK, o nome de utilizador é azurestack\cloudadmin.)

    • Palavra-passe: introduza a mesma palavra-passe fornecida durante a instalação da conta de administrador de domínio do AzureStackAdmin.

  3. Importe a sessão PEP para o computador local:

    Import-PSSession $session
    
  4. Agora, pode utilizar a conclusão de separadores e fazer scripts como habitualmente na sua sessão local do PowerShell com todas as funções e cmdlets do PEP, sem diminuir a postura de segurança do Azure Stack Hub. Divirta-se!

Fechar a sessão de ponto final com privilégios

Conforme mencionado anteriormente, o PEP regista todas as ações (e o resultado correspondente) que fizer na sessão do PowerShell. Tem de fechar a sessão com o Close-PrivilegedEndpoint cmdlet. Este cmdlet fecha corretamente o ponto final e transfere os ficheiros de registo para uma partilha de ficheiros externa para retenção.

Para fechar a sessão de ponto final:

  1. Crie uma partilha de ficheiros externa acessível pelo PEP. Num ambiente de kit de desenvolvimento, pode simplesmente criar uma partilha de ficheiros no anfitrião do kit de desenvolvimento.

  2. Execute o seguinte cmdlet:

    Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
    

    O cmdlet utiliza os parâmetros na tabela seguinte:

    Parâmetro Descrição Tipo Necessário
    TranscriptsPathDestination Caminho para a partilha de ficheiros externa definida como "fileshareIP\sharefoldername" String Yes
    Credencial Credenciais para aceder à partilha de ficheiros SecureString Yes

Depois de os ficheiros de registo de transcrição serem transferidos com êxito para a partilha de ficheiros, estes são eliminados automaticamente do PEP.

Nota

Se fechar a sessão PEP com os cmdlets Exit-PSSession ou Exit, ou apenas fechar a consola do PowerShell, os registos de transcrição não serão transferidos para uma partilha de ficheiros. Permanecem no PEP. Da próxima vez que executar Close-PrivilegedEndpoint e incluir uma partilha de ficheiros, os registos de transcrição das sessões anteriores também serão transferidos. Não utilize Exit-PSSession nem Exit feche a sessão PEP; utilize Close-PrivilegedEndpoint em alternativa.

Desbloquear o ponto final privilegiado para cenários de suporte

Durante um cenário de suporte, o engenheiro de suporte da Microsoft poderá ter de elevar a sessão de ponto final privilegiado do PowerShell para aceder aos internos da infraestrutura do Azure Stack Hub. Por vezes, este processo é informalmente referido como "quebrar o vidro" ou "desbloquear o PEP". O processo de elevação da sessão PEP é um processo de autenticação de dois passos, duas pessoas e duas organizações. O procedimento de desbloqueio é iniciado pelo operador do Azure Stack Hub, que mantém sempre o controlo do seu ambiente. O operador acede ao PEP e executa este cmdlet:

     Get-SupportSessionToken

O cmdlet devolve o token de pedido de sessão de suporte, uma cadeia alfanumérica muito longa. Em seguida, o operador transmite o token de pedido ao engenheiro de suporte da Microsoft através de um meio à sua escolha (por exemplo, chat, e-mail). O engenheiro de suporte da Microsoft utiliza o token de pedido para gerar, se for válido, um token de autorização de sessão de suporte e envia-o de volta para o operador do Azure Stack Hub. Na mesma sessão do PEP PowerShell, o operador transmite o token de autorização como entrada para este cmdlet:

      unlock-supportsession
      cmdlet Unlock-SupportSession at command pipeline position 1
      Supply values for the following parameters:
      ResponseToken:

Se o token de autorização for válido, a sessão do PEP PowerShell é elevada ao fornecer capacidades de administrador completas e capacidade de alcance total na infraestrutura.

Nota

Todas as operações e cmdlets executados numa sessão PEP elevada têm de ser efetuadas sob supervisão rigorosa do engenheiro de suporte da Microsoft. Se não o fizer, poderá resultar num período de indisponibilidade grave, perda de dados e pode exigir uma reimplementação completa do ambiente do Azure Stack Hub.

Assim que a sessão de suporte for terminada, é muito importante fechar novamente a sessão pep elevada com o cmdlet Close-PrivilegedEndpoint , conforme explicado na secção acima. Uma sessão PEP é terminada, o token de desbloqueio já não é válido e não pode ser reutilizado para desbloquear novamente a sessão PEP. Uma sessão PEP elevada tem uma validade de 8 horas, após a qual, se não terminar, a sessão PEP elevada será automaticamente bloqueada para uma sessão PEP normal.

Conteúdo dos tokens de pontos finais privilegiados

O pedido de sessão de suporte do PEP e os tokens de autorização tiram partido da criptografia para proteger o acesso e garantir que apenas os tokens autorizados podem desbloquear a sessão PEP. Os tokens foram concebidos para garantir criptograficamente que um token de resposta só pode ser aceite pela sessão PEP que gerou o token de pedido. Os tokens PEP não contêm qualquer tipo de informação que possa identificar exclusivamente um ambiente do Azure Stack Hub ou um cliente. São completamente anónimos. Abaixo são fornecidos os detalhes do conteúdo de cada token.

Token de pedido de sessão de suporte

O token de pedido de sessão de suporte PEP é composto por três objetos:

  • Um ID de Sessão gerado aleatoriamente.
  • Um certificado autoassinado, gerado com o objetivo de ter um par de chaves públicas/privadas única. O certificado não contém quaisquer informações sobre o ambiente.
  • Um carimbo de data/hora que indica a expiração do token de pedido.

Em seguida, o token de pedido é encriptado com a chave pública da cloud do Azure na qual o ambiente do Azure Stack Hub está registado.

Token de resposta de autorização de sessão de suporte

O token de resposta de autorização de suporte do PEP é composto por dois objetos:

  • O ID de sessão gerado aleatoriamente extraído do token de pedido.
  • Um carimbo de data/hora que indica a expiração do token de resposta.

Em seguida, o token de resposta é encriptado com o certificado autoassinado contido no token de pedido. O certificado autoassinado foi desencriptado com a chave privada associada à cloud do Azure na qual o ambiente do Azure Stack Hub está registado.

Passos seguintes