Girar segredos no Azure Stack Hub

Este artigo fornece diretrizes para executar a rotação de segredos, para ajudar a manter a comunicação segura com os recursos e serviços de infraestrutura do Azure Stack Hub.

Visão geral

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

Quando os segredos estão se aproximando da expiração, os alertas a seguir são gerados no portal do administrador. Concluir a rotação de segredo resolverá estes alertas:

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

Aviso

Há duas fases de alertas disparadas no portal do administrador antes da expiração:

  • 90 dias antes da expiração, um alerta de aviso é gerado.
  • 30 dias antes da expiração, um alerta crítico é gerado.

É fundamental que você conclua a rotação de segredos se receber essas notificações. Não fazer isso pode causar a perda de cargas de trabalho e a possível reimplantação do Azure Stack Hub às suas próprias custas!

Para obter mais informações sobre monitoramento e correção de alertas, consulte Monitorar a integridade e os alertas no Azure Stack Hub.

Observação

Os ambientes do Azure Stack Hub em versões anteriores a 1811 podem ver alertas para expirações de certificado interno ou segredo pendentes. Esses alertas são imprecisos e devem ser ignorados sem executar a rotação de segredo interna. Alertas de expiração de segredo interno imprecisos são um problema conhecido resolvido em 1811. Os segredos internos não expirarão a menos que o ambiente esteja ativo há dois anos.

Pré-requisitos

  1. É altamente recomendável que você esteja executando uma versão com suporte do Azure Stack Hub e que aplique o hotfix disponível mais recente para a versão do Azure Stack Hub que sua instância está executando. Por exemplo, se você estiver executando o 2008, verifique se instalou o hotfix mais recente disponível para 2008.

    Importante

    Para versões anteriores a 1811:

    • Se a rotação de segredo já tiver sido executada, você deverá atualizar para a versão 1811 ou posterior antes de executar a rotação de segredo novamente. A Rotação de Segredos deve ser executada por meio do ponto de extremidade privilegiado e requer credenciais do Operador do Azure Stack Hub. Se você não souber se a rotação de segredo foi executada em seu ambiente, atualize para 1811 antes de executar a rotação de segredo.
    • Você não precisa girar segredos para adicionar certificados de host de extensão. Você deve seguir as instruções no artigo Preparar o host de extensão para o Azure Stack Hub para adicionar certificados de host de extensão.
  2. Notifique os usuários sobre operações de manutenção planejadas. Agende janelas de manutenção normais, tanto quanto possível, durante o horário não comercial. As operações de manutenção podem afetar as cargas de trabalho do usuário e as operações do portal.

  3. Gerar solicitações de assinatura de certificado para o Azure Stack Hub.

  4. Preparar certificados PKI do Azure Stack Hub.

  5. Durante a rotação de segredos, os operadores podem observar alertas abertos e fechados automaticamente. Esse comportamento é esperado e os alertas podem ser ignorados. Os operadores podem verificar a validade desses alertas usando o cmdlet Test-AzureStack do PowerShell. Para operadores, usando o System Center Operations Manager para monitorar sistemas do Azure Stack Hub, colocar um sistema no modo de manutenção impedirá que esses alertas atinjam seus sistemas ITSM. No entanto, os alertas continuarão por vir se o sistema do Azure Stack Hub se tornar inacessível.

Girar segredos externos

Importante

Rotação de segredo externo para:

Esta seção aborda a rotação de certificados usados para proteger serviços voltados para o externo. Esses certificados são fornecidos pelo operador Azure Stack Hub, para os seguintes serviços:

  • Portal do administrador
  • Public portal
  • Administrator Azure Resource Manager
  • Global Azure Resource Manager
  • Administrator Key Vault
  • Key Vault
  • Admin Extension Host
  • ACS (incluindo armazenamento de blob, tabela e fila)
  • ADFS1
  • Grafo1
  • Registro de Contêiner2

1Aplicável ao usar o ADFS (Active Directory Federated Services).

2Aplicável ao usar Registro de Contêiner do Azure (ACR).

Preparação

Antes da rotação de segredos externos:

  1. Execute o cmdlet do Test-AzureStack PowerShell usando o -group SecretRotationReadiness parâmetro para confirmar se todas as saídas de teste estão íntegras antes de girar segredos.

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

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

    • Gere uma CSR (solicitação de assinatura de certificado) para enviar para sua AC (Autoridade de Certificação). Use as etapas descritas em Gerar solicitações de assinatura de certificado e prepare-as para uso no ambiente do Azure Stack Hub usando as etapas em Preparar certificados PKI. O Azure Stack Hub dá suporte à rotação de segredos para certificados externos de uma nova AC (Autoridade de Certificação) nos seguintes contextos:

      Girar da AC Girar para a AC Suporte à versão do Azure Stack Hub
      Self-Signed Enterprise 1903 & mais tarde
      Self-Signed Self-Signed Sem suporte
      Self-Signed Público* 1803 & mais tarde
      Enterprise Enterprise 1803 & posterior; 1803-1903 se a MESMA AC corporativa usada na implantação
      Enterprise Self-Signed Sem suporte
      Enterprise Público* 1803 & mais tarde
      Público* Enterprise 1903 & mais tarde
      Público* Self-Signed Sem suporte
      Público* Público* 1803 & mais tarde

      *Parte do Programa Raiz Confiável do Windows.

    • Certifique-se de validar os certificados que você prepara com as etapas descritas em Validar certificados PKI

    • Verifique se não há caracteres especiais na senha, como, por exemplo$, ,*,#,@or)'.

    • Verifique se a criptografia PFX é TripleDES-SHA1. Se você encontrar um problema, consulte Corrigir problemas comuns com certificados PKI do Azure Stack Hub.

  3. Armazene um backup nos certificados usados para rotação em um local de backup seguro. Se a rotação for executada e falhar, substitua os certificados no compartilhamento de arquivos pelas cópias de backup antes de executar novamente a rotação. Mantenha as cópias de backup no local de backup seguro.

  4. Crie um compartilhamento de arquivos que você pode acessar nas VMs do ERCS. O compartilhamento de arquivos deve ser legível e gravável para a identidade CloudAdmin .

  5. Abra um console do ISE do PowerShell em um computador em que você tenha acesso ao compartilhamento de arquivos. Navegue até o compartilhamento de arquivos, em que você cria diretórios para colocar seus certificados externos.

  6. Crie uma pasta no compartilhamento de arquivos chamado Certificates. Dentro da pasta certificados, crie uma subpasta chamada AAD ou ADFS, dependendo do provedor de identidade usado pelo Hub. Por exemplo, .\Certificates\AAD ou .\Certificates\ADFS. Nenhuma outra pasta além da pasta certificados e da subpasta do provedor de identidade devem ser criadas aqui.

  7. Copie o novo conjunto de certificados externos de substituição criados na etapa 2 para a pasta .\Certificates\<IdentityProvider> criada na etapa nº 6. Conforme mencionado acima, a subpasta do provedor de identidade deve ser AAD ou ADFS. Verifique se os SANs (nomes alternativos de entidade) de seus certificados externos de substituição seguem o cert.<regionName>.<externalFQDN> formato especificado nos requisitos de certificado PKI (infraestrutura de chave pública) do Azure Stack Hub.

    Aqui está um exemplo de uma estrutura de pastas para o provedor de identidade Microsoft Entra:

        <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
                      │
                      ├───Container Registry*
                      │       <CertName>.pfx
                      │
                      ├───KeyVault
                      │       <CertName>.pfx
                      │
                      ├───KeyVaultInternal
                      │       <CertName>.pfx
                      │
                      ├───Public Extension Host
                      │       <CertName>.pfx
                      │
                      └───Public Portal
                              <CertName>.pfx
    

*Aplicável ao usar Registro de Contêiner do Azure (ACR) para Microsoft Entra ID e ADFS.

Observação

Se você estiver girando certificados externos do Registro de Contêiner, deverá criar manualmente uma Container Registry subpasta na subpasta do provedor de identidade. Além disso, você deve armazenar o certificado .pfx correspondente nessa subpasta criada manualmente.

Rotação

Conclua as seguintes etapas para girar segredos externos:

  1. Use o script do PowerShell a seguir para girar os segredos. O script requer acesso a uma sessão PEP (Ponto de Extremidade Privilegiado). O PEP é acessado por meio de uma sessão remota do PowerShell na VM (máquina virtual) que hospeda o PEP. Se você estiver usando um sistema integrado, haverá três instâncias do PEP, cada uma em execução dentro de uma VM (Prefix-ERCS01, Prefix-ERCS02 ou Prefix-ERCS03) em hosts diferentes. O script executa as seguintes etapas:

    • Cria uma Sessão do PowerShell com o ponto de extremidade Privilegiado usando a conta CloudAdmin e armazena a sessão como uma variável. Essa variável é usada como um parâmetro na próxima etapa.

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

    • É executado Start-SecretRotation na sessão PEP, usando os parâmetros a seguir. Para obter mais informações, consulte a referência Start-SecretRotation :

      Parâmetro Variável Descrição
      -PfxFilesPath $CertSharePath O caminho de rede para a pasta raiz de certificados, conforme discutido na etapa nº 6 da seção Preparação, por exemplo \\<IPAddress>\<ShareName>\Certificates.
      -PathAccessCredential $CertShareCreds O objeto PSCredential para credenciais para o compartilhamento.
      -CertificatePassword $CertPassword Uma cadeia de caracteres segura da senha usada para todos os arquivos de certificado pfx criados.
    # 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
    
  2. A rotação de segredo externo leva aproximadamente uma hora. Após a conclusão bem-sucedida, o console exibirá uma ActionPlanInstanceID ... CurrentStatus: Completed mensagem, seguida por Action plan finished with status: 'Completed'. Remova seus certificados do compartilhamento criado na seção Preparação e armazene-os em seu local de backup seguro.

    Observação

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

    Start-SecretRotation -ReRun
    

    Entre em contato com o suporte se você tiver falhas de rotação de segredo repetidas.

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

    Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
    

Girar segredos internos

Os segredos internos incluem certificados, senhas, cadeias de caracteres seguras e chaves usadas pela infraestrutura do Azure Stack Hub sem intervenção do operador do Azure Stack Hub. A troca interna de segredo será necessária somente se você suspeitar que um segredo foi comprometido ou se você recebeu um alerta de expiração.

As implantações anteriores a 1811 podem ver alertas para expirações pendentes de certificado interno ou segredo. Esses alertas são imprecisos e devem ser ignorados e são um problema conhecido resolvido em 1811.

Conclua as seguintes etapas para girar segredos internos:

  1. Execute o script do PowerShell a seguir. Observe que, para rotação de segredo interna, a seção "Executar Rotação de Segredo" usa apenas o -Internal parâmetro para o cmdlet Start-SecretRotation:

    # 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
    

    Observação

    As versões anteriores a 1811 não exigem o -Internal sinalizador.

  2. Após a conclusão bem-sucedida, o console exibirá uma ActionPlanInstanceID ... CurrentStatus: Completed mensagem, seguida por Action plan finished with status: 'Completed'.

    Observação

    Se a troca de segredo falhar, siga as instruções na mensagem de erro e execute Start-SecretRotation novamente com os parâmetros -Internal e -ReRun.

    Start-SecretRotation -Internal -ReRun
    

    Entre em contato com o suporte se você tiver falhas de rotação de segredo repetidas.

Girar o certificado raiz do Azure Stack Hub

O certificado raiz do Azure Stack Hub é provisionado durante a implantação com uma expiração de cinco anos. A partir do 2108, a rotação de segredo interno também gira o certificado raiz. O alerta de expiração de segredo padrão identifica a expiração do certificado raiz e gera alertas em 90 (aviso) e 30 dias (críticos).

Para girar o certificado raiz, você deve atualizar seu sistema para 2108 e executar a rotação de segredo interna.

O snippet de código a seguir usa o Ponto de Extremidade Privilegiado para listar a data de validade do certificado raiz:

$pep = New-PSSession -ComputerName <ip address> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) 
 
$stampInfo = Invoke-Command -Session $pep -ScriptBlock { Get-AzureStackStampInformation }

$rootCert = $stampInfo.RootCACertificates| Sort-Object -Property NotAfter | Select-Object -Last 1
"The Azure Stack Hub Root Certificate expires on {0}" -f $rootCert.NotAfter.ToString("D") | Write-Host -ForegroundColor Cyan

Atualizar a credencial do BMC

O controlador de gerenciamento do quadro de base monitora o estado físico dos servidores. Consulte o fornecedor de hardware OEM (fabricante do equipamento original) para obter instruções para atualizar o nome da conta de usuário e a senha do BMC.

Observação

Seu OEM pode fornecer aplicativos de gerenciamento adicionais. Atualizar o nome de usuário ou a senha para outros aplicativos de gerenciamento não tem efeito sobre o nome de usuário ou a senha do BMC.

  1. Atualize o BMC nos servidores físicos do Azure Stack Hub seguindo as instruções do OEM. O nome de usuário e a senha de cada BMC em seu ambiente devem ser os mesmos. Os nomes de usuário do BMC não podem exceder 16 caracteres.
  1. Não é mais necessário que você primeiro atualize as credenciais do BMC nos servidores físicos do Azure Stack Hub seguindo as instruções do OEM. O nome de usuário e a senha de cada BMC em seu ambiente devem ser iguais e não podem exceder 16 caracteres.
  1. Abra um ponto de extremidade privilegiado nas sessões do Azure Stack Hub. Para obter instruções, consulte Usando o ponto de extremidade privilegiado no Azure Stack Hub.

  2. Depois de abrir uma sessão de ponto de extremidade com privilégios, execute um dos scripts do PowerShell abaixo, que usam Invoke-Command para executar Set-BmcCredential. Se você usar o parâmetro opcional -BypassBMCUpdate com Set-BMCCredential, as credenciais no BMC não serão atualizadas. Somente o armazenamento de dados interno do Azure Stack Hub é atualizado. Passe sua variável de sessão de ponto de extremidade com privilégios como um parâmetro.

    Aqui está um exemplo de script do PowerShell que solicitará o nome de usuário e a 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
    

    Você também pode codificar o nome de usuário e a senha em variáveis, o que pode ser menos seguro:

    # 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: cmdlet Start-SecretRotation

O cmdlet Start-SecretRotation gira os segredos de infraestrutura de um sistema do Azure Stack Hub. Esse cmdlet só pode ser executado no ponto de extremidade privilegiado do Azure Stack Hub usando um Invoke-Command bloco de script passando a sessão PEP no -Session parâmetro . Por padrão, ele gira apenas os certificados de todos os pontos de extremidade de infraestrutura de rede externa.

Parâmetro Tipo Obrigatório Posição Padrão Descrição
PfxFilesPath String Falso nomeado Nenhum O caminho de compartilhamento de arquivos para a pasta raiz \Certificates que contém todos os certificados de ponto de extremidade de rede externos. Necessário somente ao girar segredos externos. O caminho deve terminar com a pasta \Certificates , por exemplo \\<IPAddress>\<ShareName>\Certificates.
CertificatePassword SecureString Falso nomeado Nenhum A senha de todos os certificados fornecidos no -PfXFilesPath. Valor necessário se PfxFilesPath for fornecido quando os segredos externos forem girados.
Internal Cadeia de caracteres Falso nomeado Nenhum O sinalizador interno deve ser usado sempre que um operador do Azure Stack Hub quiser girar segredos de infraestrutura interna.
PathAccessCredential PSCredential Falso nomeado Nenhum A credencial do PowerShell para o compartilhamento de arquivos do diretório \Certificates que contém todos os certificados de ponto de extremidade de rede externos. Necessário somente ao girar segredos externos.
ReRun SwitchParameter Falso nomeado Nenhum Deve ser usado sempre que a rotação de segredo for reattempted após uma tentativa com falha.

Syntax

Para rotação de segredo externo

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

Para rotação de segredo interno

Start-SecretRotation [-Internal]  

Para executar novamente a rotação de segredos externos

Start-SecretRotation [-ReRun]

Para executar novamente a rotação de segredos interna

Start-SecretRotation [-ReRun] [-Internal]

Exemplos

Girar somente segredos de infraestrutura interna

Esse comando deve ser executado por meio do ponto de extremidade privilegiado do ambiente do Azure Stack Hub.

PS C:\> Start-SecretRotation -Internal

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

Girar somente 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

Esse comando gira os certificados TLS usados para os pontos de extremidade de infraestrutura de rede externa do Azure Stack Hub.

Girar segredos de infraestrutura interna e externa (somente antes de 1811 )

Importante

Esse comando só se aplica ao Azure Stack Hub pré-1811 , pois a rotação foi dividida para certificados internos e externos.

A partir do 1811+ você não pode mais girar 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

Esse comando gira os segredos de infraestrutura expostos à rede interna do Azure Stack Hub e os certificados TLS usados para os pontos de extremidade de infraestrutura de rede externa do Azure Stack Hub. Start-SecretRotation gira todos os segredos gerados por pilha e, como há certificados fornecidos, os certificados de ponto de extremidade externo também serão girados.

Próximas etapas

Saiba mais sobre a segurança do Azure Stack Hub