Partilhar via


Rodar segredos no Azure Stack Hub

Este artigo fornece orientação para executar a 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 usa segredos para manter uma comunicação segura com recursos e serviços 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 de sua organização.

Quando os segredos estão prestes a expirar, os alertas a seguir são gerados no portal do administrador. Completar a rotação secreta resolverá estes alertas:

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

Aviso

Existem 2 fases de alertas acionados 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ê complete a rotação secreta se receber essas notificações. A falha em fazer isso pode causar a perda de cargas de trabalho e 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 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. Esses alertas são imprecisos e devem ser ignorados sem executar a rotação de segredo interno. Alertas de expiração secretos internos imprecisos são um problema conhecido que foi 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 mais recente disponível para a versão do Azure Stack Hub que sua instância está executando. Por exemplo, se estiver a executar o 2008, certifique-se de que instalou a correção mais recente disponível para 2008.

    Importante

    Para versões anteriores a 1811:

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

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

  4. Prepare certificados PKI do Azure Stack Hub.

  5. 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 desses alertas usando o cmdlet Test-AzureStack PowerShell. Para os operadores, usando o System Center Operations Manager para monitorar os sistemas do Azure Stack Hub, colocar um sistema no modo de manutenção impedirá que esses alertas cheguem aos seus sistemas ITSM. No entanto, os alertas continuarão a chegar se o sistema Azure Stack Hub se tornar inacessível.

Girar segredos externos

Importante

Rotação secreta externa para:

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

  • Portal do administrador
  • Portal público
  • Administrador Azure Resource Manager
  • Global Azure Resource Manager
  • Cofre da Chave do Administrador
  • Key Vault
  • Host de extensão de administrador
  • ACS (incluindo armazenamento de blob, tabela e fila)
  • ADFS1
  • Gráfico1
  • Registro de contêiner2

1 Aplicável ao usar os Serviços Federados do Ative Directory (ADFS).

2 Aplicável ao usar o Azure Container Registry (ACR).

Preparação

Antes da rotação de segredos externos:

  1. Execute o Test-AzureStack cmdlet do 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 solicitação de assinatura de certificado (CSR) para enviar à sua Autoridade de Certificação (CA). Use as etapas descritas em Gerar solicitações de assinatura de certificado e prepare-as para uso em seu ambiente do Azure Stack Hub usando as etapas em Preparar certificados PKI. O Azure Stack Hub dá suporte à rotação secreta para certificados externos de uma nova Autoridade de Certificação (CA) nos seguintes contextos:

      Girar a partir da autoridade de certificação Girar para CA Suporte à versão do Azure Stack Hub
      Autoassinado Grandes Empresas 1903 & mais tarde
      Autoassinado Autoassinado Não suportado
      Autoassinado Público* 1803 & mais tarde
      Grandes Empresas Grandes Empresas 1803 e mais tarde; 1803-1903 se a MESMA autoridade de certificação corporativa usada na implantação
      Grandes Empresas Autoassinado Não suportado
      Grandes Empresas Público* 1803 & mais tarde
      Público* Grandes Empresas 1903 & mais tarde
      Público* Autoassinado Não suportado
      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

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

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

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

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

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

  6. Crie uma pasta no compartilhamento de arquivos chamada Certificates. Dentro da pasta de certificados, crie uma subpasta chamada AAD ou ADFS, dependendo do provedor de identidade que seu Hub usa. Por exemplo, .\Certificates\AAD ou .\Certificates\ADFS. Nenhuma outra pasta além da pasta de certificados e da subpasta do provedor de identidade deve ser criada aqui.

  7. Copie o novo conjunto de certificados externos de substituição criados na etapa #2 para a pasta .\Certificates\<IdentityProvider> criada na etapa #6. Como mencionado acima, a subpasta do provedor de identidade deve ser AAD ou ADFS. Certifique-se de que os nomes alternativos de entidade (SANs) de seus certificados externos de substituição sigam 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 do 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 o Azure Container Registry (ACR) para Microsoft Entra ID e ADFS.

Nota

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 dentro dessa subpasta criada manualmente.

Rotação

Conclua as seguintes etapas para girar segredos externos:

  1. Use o seguinte script do PowerShell para girar os segredos. O script requer acesso a uma sessão PEP (Privileged EndPoint). O PEP é acessado por meio de uma sessão remota do PowerShell na máquina virtual (VM) que hospeda o PEP. Se você estiver usando um sistema integrado, há 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 realiza os passos seguintes:

    • 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. Esta variável é usada como parâmetro na próxima etapa.

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

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

      Parâmetro Variável Description
      -PfxFilesPath $CertSharePath O caminho de rede para a pasta raiz dos certificados, conforme discutido na etapa #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 do segredo externo leva aproximadamente uma hora. Após a conclusão bem-sucedida, o console exibirá uma ActionPlanInstanceID ... CurrentStatus: Completed mensagem, seguida de 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.

    Nota

    Se a rotação secreta 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 ocorrer repetidas falhas de rotação secreta.

  3. Opcionalmente, para confirmar que todos os certificados externos foram rotacionados, 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, 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 implantações anteriores ao 1811 podem ver alertas para certificados internos pendentes ou expirações secretas. 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 seguinte script do PowerShell. Aviso para rotação de segredo interno, a seção "Executar rotação secreta" 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
    

    Nota

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

  2. Após a conclusão bem-sucedida, o console exibirá 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
    

    Entre em contato com o suporte se ocorrer repetidas falhas de rotação secreta.

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 de 2108, a rotação secreta interna também gira o certificado raiz. O alerta de expiração secreta padrão identifica a expiração do certificado raiz e gera alertas em 90 (aviso) e 30 (crítico) dias.

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

O trecho de código a seguir usa o ponto de extremidade privilegiado para listar a data de expiração 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 da placa base monitora o estado físico de seus servidores. Consulte o fornecedor de hardware do fabricante do equipamento original (OEM) para obter instruções sobre como atualizar o nome da conta de usuário e a senha do BMC.

Nota

Seu OEM pode fornecer aplicativos de gerenciamento adicionais. A atualização do nome de usuário ou senha para outros aplicativos de gerenciamento não tem efeito sobre o nome de usuário ou a senha da 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 para cada BMC em seu ambiente devem ser os mesmos. Os nomes de usuário da BMC não podem exceder 16 caracteres.
  1. Não é mais necessário que você primeiro atualize as credenciais da 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 e não podem exceder 16 caracteres.
  1. Abra um ponto de extremidade privilegiado em 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 privilegiada, 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 privilegiada como um parâmetro.

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

    Você também pode codificar o nome de usuário e a senha 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: cmdlet Start-SecretRotation

O cmdlet Start-SecretRotation gira os segredos de infraestrutura de um sistema Azure Stack Hub. Esse cmdlet só pode ser executado no ponto de extremidade privilegiado do Azure Stack Hub, usando um bloco de Invoke-Command 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 Type Necessário Position Predefinido Description
PfxFilesPath String False Nomeado Nenhuma O caminho de compartilhamento de arquivos para a pasta raiz \Certificates que contém todos os certificados de ponto de extremidade de rede externa. Necessário apenas ao girar segredos externos. O caminho deve terminar com a pasta \Certificates , por exemplo \\<IPAddress>\<ShareName>\Certificates.
CertificatePassword SecureString False Nomeado Nenhuma A senha para todos os certificados fornecidos no -PfXFilesPath. Valor necessário se PfxFilesPath for fornecido quando segredos externos forem girados.
Internal String False Nomeado Nenhuma O sinalizador interno deve ser usado sempre que um operador do Azure Stack Hub desejar girar segredos de infraestrutura interna.
PathAccessCredential PSCredential False Nomeado Nenhuma 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 externa. Necessário apenas ao girar segredos externos.
ReRun ParâmetroSwitch False Nomeado Nenhuma Deve ser usado sempre que a rotação secreta for tentada novamente após uma tentativa falhada.

Sintaxe

Para rotação de segredos externos

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

Para rotação secreta interna

Start-SecretRotation [-Internal]  

Para repetição da rotação de segredos externos

Start-SecretRotation [-ReRun]

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

Start-SecretRotation [-ReRun] [-Internal]

Exemplos

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

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

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

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

A partir de 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

Este 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 pela pilha e, como há certificados fornecidos, os certificados de ponto de extremidade externos também serão girados.

Próximos passos

Saiba mais sobre a segurança do Azure Stack Hub