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 perto da expiração, os alertas a seguir são gerados no portal do administrador. A conclusão da rotação secreta resolve 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, possivelmente, exigir a reimplantação do Azure Stack Hub às suas próprias custas.

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

Pré-requisitos

  1. É recomendável executar uma versão com suporte do Azure Stack Hub e aplicar 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 2408, certifique-se de que instalou o hotfix mais recente disponível para 2408.
  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 secreta, os operadores podem notar alertas que se abrem e fecham automaticamente. 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 anteriormente, a subpasta do provedor de identidade deve ser AAD ou ADFS. Certifique-se de que os nomes alternativos de entidade (SANs) dos seus certificados externos de substituição sigam o formato de cert.<regionName>.<externalFQDN> especificado em requisitos de certificados 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 quando se utiliza o Registo de Contentores do Azure para Microsoft Entra ID e AD FS.

Nota

Caso rode certificados de registo de contentores externos, terá de criar manualmente uma subpasta de Registo de Contentores na subpasta do fornecedor 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 novamente Start-SecretRotation com o parâmetro -ReRun:

    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.

Conclua as seguintes etapas para girar segredos internos:

  1. Execute o seguinte script do PowerShell. Na seção "Executar rotação secreta interna", usa-se apenas o parâmetro -Internal com 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
    
  2. Após a conclusão bem-sucedida, o console exibirá uma mensagem ActionPlanInstanceID ... CurrentStatus: Completed, seguida de Action plan finished with status: 'Completed'.

    Nota

    Se a rotação secreta falhar, siga as instruções na mensagem de erro e execute novamente 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 exemplo a seguir usa o Privileged Endpoint 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. Após abrir uma sessão de ponto de extremidade privilegiada, execute um dos scripts do PowerShell abaixo, os quais utilizam Invoke-Command para executar Set-BmcCredential. Se você usar o parâmetro -BypassBMCUpdate opcional com Set-BMCCredential, as credenciais no BMC não serão atualizadas; apenas 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.

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.

Próximos passos

Saiba mais sobre a segurança do Azure Stack Hub