Rodar segredos no Azure Stack Hub

Este artigo fornece orientações para a realização de rotação secreta, para ajudar a manter uma comunicação segura com os recursos e serviços de infraestrutura do Azure Stack Hub.

Descrição Geral

O Azure Stack Hub utiliza segredos para manter uma comunicação segura com recursos e serviços de infraestrutura. Para manter a integridade da infraestrutura Azure Stack Hub, os operadores precisam da capacidade de girar segredos em frequências consistentes com os requisitos de segurança da sua organização.

Quando os segredos estão perto da expiração, os seguintes alertas são gerados no portal do administrador. Completar a rotação secreta resolverá estes alertas:

  • Expiração da senha de conta de serviço pendente
  • Expiração do certificado interno pendente
  • Expiração do certificado externo pendente

Aviso

Existem 2 fases de alertas desencadeados no portal do administrador antes da expiração:

  • 90 dias antes de expirar, é gerado um alerta de aviso.
  • 30 dias antes de expirar, é gerado um alerta crítico.

É fundamental que complete a rotação secreta se receber estas notificações. Se não o fizer, pode causar a perda de cargas de trabalho e possível redistribuição do Azure Stack Hub às suas próprias custas!

Para obter mais informações sobre a monitorização e reparação de alertas, consulte a saúde do Monitor e os alertas no Azure Stack Hub.

Nota

Os ambientes do Azure Stack Hub em versões anteriores a 1811 podem ver alertas para certificados internos pendentes ou expirações secretas. Estes alertas são imprecisos e devem ser ignorados sem executar a rotação secreta interna. Alertas internos imprecisos de expiração são um assunto conhecido que foi resolvido em 1811. Os segredos internos não caducarão a menos que o ambiente esteja ativo há dois anos.

Pré-requisitos

  1. É altamente recomendado que esteja a executar uma versão suportada do Azure Stack Hub, e certifique-se de aplicar o mais recente hotfix disponível para a versão Azure Stack Hub que o seu exemplo está a executar. Por exemplo, se estiver a executar 2008, certifique-se de que instalou o mais recente hotfix disponível para 2008.

    Importante

    Para versões pré-1811:

    • Se a rotação secreta já tiver sido realizada, deve atualizar para a versão 1811 ou mais tarde antes de voltar a efetuar a rotação secreta. A Rotação Secreta deve ser executada através do Ponto Final Privilegiado e requer credenciais do Azure Stack Hub Operator. Se não sabe se a rotação secreta foi executada no seu ambiente, atualize para 1811 antes de realizar uma rotação secreta.
    • Não é necessário rodar segredos para adicionar certificados de anfitrião de extensão. Deve seguir as instruções do artigo Preparar para o anfitrião de extensão do Azure Stack Hub para adicionar certificados de anfitrião de extensão.
  2. Notifique os seus utilizadores das operações de manutenção planeadas. Agende as janelas normais de manutenção, tanto quanto possível, durante o horário não comercial. As operações de manutenção podem afetar tanto as cargas de trabalho dos utilizadores como as operações do portal.

  3. Durante a rotação de segredos, os operadores podem notar alertas abertos e automaticamente fechados. Este comportamento está previsto e os alertas podem ser ignorados. Os operadores podem verificar a validade destes alertas utilizando o cmdlet PowerShell test-AzureStack. Para os operadores que utilizam System Center Gestor de Operações para monitorizar os sistemas Azure Stack Hub, a colocação de um sistema em modo de manutenção impedirá que estes alertas cheguem aos seus sistemas ITSM, mas continuarão a alertar se o sistema Azure Stack Hub se tornar inacessível.

Rode segredos externos

Importante

Rotação secreta externa para:

Esta secção abrange a rotação dos certificados utilizados para assegurar serviços virados para o exterior. Estes certificados são fornecidos pelo Operador Azure Stack Hub, para os seguintes serviços:

  • Portal do administrador
  • Portal público
  • Administrador Azure Gestor de Recursos
  • Global Azure Resource Manager
  • Cofre chave do administrador
  • Key Vault
  • Anfitrião da extensão de Admin
  • ACS (incluindo bolha, mesa e armazenamento de fila)
  • ADFS*
  • Graph*

*Aplicável ao utilizar serviços federados de diretório ativo (AD FS).

Preparação

Antes da rotação de segredos externos:

  1. Executar o Test-AzureStack cmdlet PowerShell utilizando o -group SecretRotationReadiness parâmetro, para confirmar que todas as saídas de teste são saudáveis antes de rodar segredos.

  2. Preparar um novo conjunto de certificados externos de substituição:

    • O novo conjunto deve corresponder às especificações do certificado descritas nos requisitos do certificado Azure Stack Hub PKI.

    • Gere um pedido de assinatura de certificado (CSR) para submeter à sua Autoridade de Certificados (CA). Utilize os passos descritos em Pedidos de assinatura de certificados e prepare-os para utilização no seu ambiente Azure Stack Hub utilizando os passos nos certificados Prepare pki. O Azure Stack Hub suporta a rotação secreta de certificados externos a partir de uma nova Autoridade de Certificados (CA) nos seguintes contextos:

      Rotação da CA Rode para CA Suporte de versão Azure Stack Hub
      Self-Signed Grandes Empresas 1903 & mais tarde
      Self-Signed Self-Signed Não suportado
      Self-Signed Público* 1803 & mais tarde
      Grandes Empresas Grandes Empresas 1803 & mais tarde; 1803-1903 se a MESMA empresa CA utilizada na implantação
      Grandes Empresas Self-Signed Não suportado
      Grandes Empresas Público* 1803 & mais tarde
      Público* Grandes Empresas 1903 & mais tarde
      Público* Self-Signed Não suportado
      Público* Público* 1803 & mais tarde

      *Parte do *.

    • Certifique-se de validar os certificados que prepara com os passos delineados em Certificados PKI Validados

    • Certifique-se de que não existem caracteres especiais na palavra-passe, como * ou ) .

    • Certifique-se de que a encriptação PFX é TripleDES-SHA1. Se tiver um problema, consulte corrigir problemas comuns com certificados PKI Azure Stack Hub.

  3. Guarde uma cópia de segurança dos certificados utilizados para a rotação num local de reserva seguro. Se a sua rotação correr e falhar, substitua os certificados na partilha de ficheiros pelas cópias de cópias de cópias de segurança antes de refazer a rotação. Guarde cópias de segurança no local de reserva seguro.

  4. Crie uma partilha de ficheiros a partir dos VMS ERCS. A partilha de ficheiros deve ser legível e presibilizável para a identidade CloudAdmin.

  5. Abra uma consola PowerShell ISE a partir de um computador onde tenha acesso ao ficheiro. Navegue para o seu conjunto de ficheiros, onde cria diretórios para colocar os seus certificados externos.

  6. Faça o downloadCertDirectoryMaker.ps1 para o seu ficheiro de rede e execute o script. O script criará uma estrutura de pasta que adere a .\Certificates\AAD ou .\Certificates\ADFS,dependendo do seu fornecedor de identidade. A sua estrutura de pasta deve começar com uma pasta \Certificados, seguida apenas por uma pasta \AAD ou \ADFS. Todas as subdiretões restantes estão contidas na estrutura anterior. Por exemplo:

    • Partilha de ficheiros = \\ IPAddress > \ < ShareName >
    • Pasta de raiz de certificado para provedor de Ad Azure = \Certificados\AAD
    • Percurso completo = \\ IPAddress > \ Partilhar nome <> \Certificados\AAD

    Importante

    Quando correr Start-SecretRotation mais tarde, validará a estrutura da pasta. Uma estrutura de pasta que não esteja em conformidade lançará o seguinte erro:

    Cannot bind argument to parameter 'Path' because it is null.
    + CategoryInfo          : InvalidData: (:) [Test-Certificate], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Test-Certificate
    + PSComputerName        : xxx.xxx.xxx.xxx
    
  7. Copie o novo conjunto de certificados externos de substituição criados no passo nº 2, para o diretório \Certificados\ IdentityProvider > criado no passo nº 6. Certifique-se de seguir o cert.<regionName>.<externalFQDN> formato < de CertName > .

    Aqui está um exemplo de uma estrutura de pasta para o Fornecedor de Identidade AZure AD:

        <ShareName>
            │
            └───Certificates
                  └───AAD
                      ├───ACSBlob
                      │       <CertName>.pfx
                      │
                      ├───ACSQueue
                      │       <CertName>.pfx
                      │
                      ├───ACSTable
                      │       <CertName>.pfx
                      │
                      ├───Admin Extension Host
                      │       <CertName>.pfx
                      │
                      ├───Admin Portal
                      │       <CertName>.pfx
                      │
                      ├───ARM Admin
                      │       <CertName>.pfx
                      │
                      ├───ARM Public
                      │       <CertName>.pfx
                      │
                      ├───KeyVault
                      │       <CertName>.pfx
                      │
                      ├───KeyVaultInternal
                      │       <CertName>.pfx
                      │
                      ├───Public Extension Host
                      │       <CertName>.pfx
                      │
                      └───Public Portal
                              <CertName>.pfx
    
    

Rotação

Complete os seguintes passos para rodar segredos externos:

  1. Utilize o seguinte script PowerShell para rodar os segredos. O script requer acesso a uma sessão de EndPoint Privilegiado (PEP). O PEP é acedido através de uma sessão remota do PowerShell na máquina virtual (VM) que acolhe o PEP. Se estiver a utilizar um sistema integrado, existem três instâncias do PEP, cada uma a correr dentro de um VM (Prefix-ERCS01, Prefix-ERCS02 ou Prefix-ERCS03) em diferentes anfitriões.

    # Create a PEP Session
    winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
    $PEPCreds = Get-Credential
    $PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS_Machine> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
    # Run Secret Rotation
    $CertPassword = ConvertTo-SecureString '<Cert_Password>' -AsPlainText -Force
    $CertShareCreds = Get-Credential
    $CertSharePath = "<Network_Path_Of_CertShare>"
    Invoke-Command -Session $PEPsession -ScriptBlock {
        param($certSharePath, $certPassword, $certShareCreds )
        Start-SecretRotation -PfxFilesPath $certSharePath -PathAccessCredential $certShareCreds -CertificatePassword $certPassword
    } -ArgumentList ($certSharePath, $certPassword, $certShareCreds)
    Remove-PSSession -Session $PEPSession
    

    O script realiza os passos seguintes:

    • Cria uma Sessão PowerShell com o ponto final privilegiado utilizando a conta CloudAdmin e armazena a sessão como uma variável. Esta variável é usada como parâmetro no passo seguinte.

    • Executa o Invoke-Command,passando a variável de sessão PEP como parâmetro.

    • Funciona Start-SecretRotation na sessão PEP, utilizando os seguintes parâmetros:

      • -PfxFilesPath: O caminho da rede para o seu diretório de certificados criado anteriormente.
      • -PathAccessCredential: O objeto PSCredential para credenciais para a parte.
      • -CertificatePassword: Uma sequência segura da palavra-passe utilizada para todos os ficheiros de certificado pfx criados.
  2. A rotação secreta externa leva aproximadamente uma hora. Após a conclusão com sucesso, a sua consola apresentará uma ActionPlanInstanceID ... CurrentStatus: Completed mensagem, seguida de Action plan finished with status: 'Completed' . Retire os certificados da parte criada na secção Preparação e guarde-os na sua localização de reserva segura.

    Nota

    Se a rotação secreta falhar, siga as instruções na mensagem de erro e reeca Start-SecretRotation com o -ReRun parâmetro.

    Start-SecretRotation -ReRun
    

    Suporte de contato se tiver falhas de rotação secretas repetidas.

  3. Opcionalmente, para confirmar que todos os certificados externos foram rotados, executar a ferramenta de validação Test-AzureStack utilizando o seguinte script:

    Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
    

Rode segredos internos

Os segredos internos incluem certificados, palavras-passe, cadeias seguras e chaves utilizadas pela infraestrutura do Azure Stack Hub sem a intervenção do Operador do Azure Stack Hub. A rotação de segredos interna só será necessária se suspeitar que um foi comprometido ou se tiver recebido um alerta de expiração.

As implementações anteriores a 1811 podem ver alertas para certificados internos pendentes ou expirações secretas. Estes alertas são imprecisos e devem ser ignorados, e são uma questão conhecida resolvida em 1811.

Complete os seguintes passos para rodar segredos internos:

  1. Executar o seguinte script PowerShell. Aviso para a rotação secreta interna, a secção "Executar rotação secreta" utiliza apenas o -Internal parâmetro para o -Internal:

    # Create a PEP Session
    winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
    $PEPCreds = Get-Credential
    $PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS_Machine> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
    # Run Secret Rotation
    Invoke-Command -Session $PEPSession -ScriptBlock {
        Start-SecretRotation -Internal
    }
    Remove-PSSession -Session $PEPSession
    

    Nota

    As versões pré-1811 não requerem a -Internal bandeira.

  2. Após a conclusão com sucesso, a sua consola apresentará uma ActionPlanInstanceID ... CurrentStatus: Completed mensagem, seguida de Action plan finished with status: 'Completed' .

    Nota

    Se a rotação de segredos falhar, siga as instruções na mensagem de erro e volte a executar Start-SecretRotation com os parâmetros -Internal e -ReRun.

    Start-SecretRotation -Internal -ReRun
    

    Suporte de contato se tiver falhas de rotação secretas repetidas.

Atualizar a credencial do BMC

O controlador de gestão do rodapé monitoriza o estado físico dos seus servidores. Consulte o seu fornecedor de hardware original do fabricante de equipamentos (OEM) para obter instruções para atualizar o nome da conta de utilizador e a palavra-passe do BMC.

Nota

O seu OEM pode fornecer aplicações de gestão adicionais. A atualização do nome de utilizador ou da palavra-passe para outras aplicações de gestão não tem qualquer efeito no nome de utilizador ou na palavra-passe do BMC.

  1. Atualize o BMC nos servidores físicos do Azure Stack Hub seguindo as instruções do OEM. O nome de utilizador e a palavra-passe de cada BMC no seu ambiente devem ser os mesmos. Os nomes de utilizador BMC não podem exceder 16 caracteres.
  1. Já não é necessário atualizar as credenciais BMC nos servidores físicos do Azure Stack Hub seguindo as instruções do OEM. O nome de utilizador e a palavra-passe de cada BMC no seu ambiente devem ser os mesmos e não podem exceder 16 caracteres.
  1. Abra um ponto final privilegiado nas sessões do Azure Stack Hub. Para obter instruções, consulte utilizando o ponto final privilegiado no Azure Stack Hub.

  2. Depois de abrir uma sessão de ponto final privilegiada, execute um dos scripts PowerShell abaixo, que usam Invoke-Command para executar Set-BmcCredential. Se utilizar o parâmetro opcional -BypassBMCUpdate com Set-BMCCredential, as credenciais no BMC não são atualizadas. Apenas a loja de dados interna Azure Stack Hub é atualizada. Passe a sua variável de sessão de ponto final privilegiada como parâmetro.

    Aqui está um exemplo de script PowerShell que irá solicitar o nome de utilizador e senha:

    # Interactive Version
    $PEPIp = "<Privileged Endpoint IP or Name>" # You can also use the machine name instead of IP here.
    $PEPCreds = Get-Credential "<Domain>\CloudAdmin" -Message "PEP Credentials"
    $NewBmcPwd = Read-Host -Prompt "Enter New BMC password" -AsSecureString
    $NewBmcUser = Read-Host -Prompt "Enter New BMC user name"
    
    $PEPSession = New-PSSession -ComputerName $PEPIp -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
    Invoke-Command -Session $PEPSession -ScriptBlock {
        # Parameter BmcPassword is mandatory, while the BmcUser parameter is optional.
        Set-BmcCredential -BmcPassword $using:NewBmcPwd -BmcUser $using:NewBmcUser
    }
    Remove-PSSession -Session $PEPSession
    

    Também pode codificar o nome de utilizador e a palavra-passe em variáveis, que podem ser menos seguras:

    # Static Version
    $PEPIp = "<Privileged Endpoint IP or Name>" # You can also use the machine name instead of IP here.
    $PEPUser = "<Privileged Endpoint user for example Domain\CloudAdmin>"
    $PEPPwd = ConvertTo-SecureString '<Privileged Endpoint Password>' -AsPlainText -Force
    $PEPCreds = New-Object System.Management.Automation.PSCredential ($PEPUser, $PEPPwd)
    $NewBmcPwd = ConvertTo-SecureString '<New BMC Password>' -AsPlainText -Force
    $NewBmcUser = "<New BMC User name>"
    
    $PEPSession = New-PSSession -ComputerName $PEPIp -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
    Invoke-Command -Session $PEPSession -ScriptBlock {
        # Parameter BmcPassword is mandatory, while the BmcUser parameter is optional.
        Set-BmcCredential -BmcPassword $using:NewBmcPwd -BmcUser $using:NewBmcUser
    }
    Remove-PSSession -Session $PEPSession
    

Referência: Start-SecretRotation cmdlet

Start-SecretRotation cmdlet gira os segredos de infraestrutura de um sistema Azure Stack Hub. Este cmdlet só pode ser executado contra o ponto final privilegiado do Azure Stack Hub, utilizando um Invoke-Command bloco de script que passa a sessão PEP no -Session parâmetro. Por predefinição, gira apenas os certificados de todos os pontos finais de infraestrutura de rede externa.

Parâmetro Tipo Necessário Posição Predefinição Description
PfxFilesPath String Falso Nomeado Nenhuma O caminho de partilha de ficheiros para o diretório \Certificados contendo todos os certificados de ponto final de rede externa. Só é necessário para rodar segredos externos. O diretório final deve ser \Certificados.
CertificatePassword SecureString Falso Nomeado Nenhuma A palavra-passe para todos os certificados fornecidos no -PfXFilesPath. Valor necessário se o PfxFilesPath for fornecido quando os segredos externos são rotativos.
Internal String Falso Nomeado Nenhuma A bandeira interna deve ser utilizada sempre que um operador do Azure Stack Hub pretenda rodar segredos de infraestrutura interna.
PathAccessCredential PSCredential Falso Nomeado Nenhuma A credencial PowerShell para a partilha de ficheiros do diretório \Certificados contendo todos os certificados de ponto final de rede externa. Só é necessário para rodar segredos externos.
ReRun ParâmetroOpcional Falso Nomeado Nenhuma Deve ser usado sempre que a rotação secreta for re-atampada após uma tentativa falhada.

Syntax

Para rotação secreta externa

Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]  

Para rotação secreta interna

Start-SecretRotation [-Internal]  

Para a repetição da rotação secreta externa

Start-SecretRotation [-ReRun]

Para a repetição da rotação secreta interna

Start-SecretRotation [-ReRun] [-Internal]

Exemplos

Rode apenas segredos de infraestrutura interna

Este comando deve ser executado através do ponto final privilegiado doseu ambiente Azure Stack Hub .

PS C:\> Start-SecretRotation -Internal

Este comando gira todos os segredos de infraestrutura expostos à rede interna Azure Stack Hub.

Rode apenas segredos de infraestrutura externa

# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

# Create Credentials for the fileshare
$CertPassword = ConvertTo-SecureString '<CertPasswordHere>' -AsPlainText -Force
$CertShareCreds = Get-Credential
$CertSharePath = "<NetworkPathOfCertShare>"
# Run Secret Rotation
Invoke-Command -Session $PEPsession -ScriptBlock {
    param($certSharePath, $certPassword, $certShareCreds )
    Start-SecretRotation -PfxFilesPath $certSharePath -PathAccessCredential $certShareCreds -CertificatePassword $certPassword
} -ArgumentList ($certSharePath, $certPassword, $certShareCreds)
Remove-PSSession -Session $PEPSession

Este comando gira os certificados TLS utilizados para os pontos finais de infraestrutura externa da rede externa do Azure Stack Hub.

Rode segredos de infraestrutura interna e externa (apenasantes de 1811)

Importante

Este comando aplica-se apenas ao Azure Stack Hub antes de 1811, uma vez que a rotação foi dividida para certificados internos e externos.

A partir de 1811 já não pode rodar certificados internos e externos!

# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Create Credentials for the fileshare
$CertPassword = ConvertTo-SecureString '<CertPasswordHere>' -AsPlainText -Force
$CertShareCreds = Get-Credential
$CertSharePath = "<NetworkPathOfCertShare>"
# Run Secret Rotation
Invoke-Command -Session $PEPSession -ScriptBlock {
    Start-SecretRotation -PfxFilesPath $using:CertSharePath -PathAccessCredential $using:CertShareCreds -CertificatePassword $using:CertPassword
}
Remove-PSSession -Session $PEPSession

Este comando gira os segredos de infraestrutura expostos à rede interna do Azure Stack Hub, e os certificados TLS utilizados para os pontos finais de infraestrutura externa da Azure Stack Hub. Start-SecretRotation gira todos os segredos gerados pela pilha, e como existem certificados fornecidos, os certificados de ponto final externos também serão rotativos.

Passos seguintes

Saiba mais sobre a segurança do Azure Stack Hub