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 prestes a expirar, 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á 2 fases de alertas disparados 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 secreta se receber essas notificações. Não 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 os alertas no Azure Stack Hub.
Observação
Os ambientes do Azure Stack Hub em versões anteriores à 1811 podem ver alertas para certificados internos pendentes ou expirações de segredo. Esses alertas são imprecisos e devem ser ignorados sem executar a rotação de segredo interno. Alertas de expiração de segredo interno 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 por dois anos.
Pré-requisitos
É altamente recomendável que você esteja executando uma versão com suporte do Azure Stack Hub e aplique o hotfix mais recente disponível 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 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 de Operador do Azure Stack Hub. Se você não souber 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 o host de extensão para o Azure Stack Hub para adicionar certificados de host de extensão.
Notifique seus usuários sobre as operações de manutenção planejada. Programe janelas de manutenção normais, 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.
Gere solicitações de assinatura de certificado para o Azure Stack Hub.
Prepare certificados PKI do Azure Stack Hub.
Durante a rotação de segredos, os operadores podem notar que os alertas abrem e fecham 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 cheguem aos sistemas ITSM. No entanto, os alertas continuarão a chegar se o sistema do Azure Stack Hub se tornar inacessível.
Girar segredos externos
Importante
Rotação de segredo externo para:
- Segredos que não são certificados, como chaves seguras e cadeias de caracteres, devem ser feitos manualmente pelo administrador. Isso inclui senhas de contas de usuário e administrador e senhas de switch de rede.
- Os segredos do RP (provedor de recursos de valor agregado) são abordados em diretrizes separadas:
- As credenciais do controlador de gerenciamento da placa base (BMC) são um processo manual, abordado posteriormente neste artigo.
- Os certificados externos do Registro de Contêiner do Azure são um processo manual, abordado posteriormente neste artigo.
Esta seção aborda a rotação de certificados usados para proteger serviços externos. 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
- Gráfico1
- Registro de contêiner2
1 Aplicável ao usar os Serviços Federados do Active Directory (ADFS).
2 Aplicável ao usar o ACR (Registro de Contêiner do Azure).
Preparação
Antes da rotação de segredos externos:
Execute o cmdlet do
Test-AzureStack
PowerShell usando o parâmetro para confirmar se todas as saídas de teste estão íntegras antes de-group SecretRotationReadiness
alternar os segredos.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 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 AC (Autoridade de Certificação) nos seguintes contextos:
Alternar a partir da CA Girar para CA Suporte à versão do Azure Stack Hub Autoassinado Empresa 1903 e depois Autoassinado Autoassinado Sem suporte Autoassinado Público* 1803 e depois Enterprise Enterprise 1803 e mais tarde; 1803-1903 se a MESMA CA corporativa usada na implantação Empresa Autoassinado Sem suporte Empresa Público* 1803 e depois Público* Empresa 1903 e depois Público* Autoassinado Sem suporte Público* Público* 1803 e depois *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 haja 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.
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.
Crie um compartilhamento de arquivos que você possa acessar a partir das VMs do ERCS. O compartilhamento de arquivos deve ser legível e gravável para a identidade CloudAdmin .
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.
Crie uma pasta no compartilhamento de arquivos chamada
Certificates
. Dentro da pasta de certificados, crie uma subpasta chamadaAAD
ouADFS
, 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.Copie o novo conjunto de certificados externos de substituição criado na etapa #2 para a pasta .\Certificates\<IdentityProvider> criada na etapa #6. Conforme mencionado acima, a subpasta do provedor de identidade deve ser
AAD
ouADFS
. Verifique se os SANs (nomes alternativos da entidade) de seus certificados externos de substituição seguem ocert.<regionName>.<externalFQDN>
formato especificado nos requisitos de certificado de 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 ACR (Registro de Contêiner do Azure) para a ID do Microsoft Entra e o 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 alternar segredos externos:
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, 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 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 parâmetro
-Session
.É 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 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
A rotação de segredo externo leva aproximadamente uma hora. Após a conclusão bem-sucedida, seu console exibirá uma
ActionPlanInstanceID ... CurrentStatus: Completed
mensagem, seguida porAction 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 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 você tiver falhas repetidas de rotação secreta.
Opcionalmente, para confirmar se todos os certificados externos foram girados, execute a ferramenta de validação Test-AzureStack usando o seguinte script:
Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
Alternar 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 à 1811 podem ver alertas para certificados internos pendentes ou expirações de segredos. Esses alertas são imprecisos e devem ser ignorados, e são um problema conhecido resolvido em 1811.
Conclua as seguintes etapas para alternar segredos internos:
Execute o script do PowerShell a seguir. Aviso para rotação de segredo interno, 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 a
-Internal
bandeira.Após a conclusão bem-sucedida, seu console exibirá uma
ActionPlanInstanceID ... CurrentStatus: Completed
mensagem, seguida porAction 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 repetidas 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 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 (críticos) dias.
Para girar o certificado raiz, você deve atualizar seu sistema para 2108 e executar a rotação de segredo interno.
O snippet de código 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.
Observação
Seu OEM pode fornecer aplicativos de gerenciamento adicionais. A atualização do nome de usuário ou senha de outros aplicativos de gerenciamento não afeta o nome de usuário ou a senha do BMC.
- 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.
- Não é mais necessário atualizar primeiro 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 os mesmos e não podem exceder 16 caracteres.
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.
Depois de abrir uma sessão de ponto de extremidade privilegiado, 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 repositório de dados interno do Azure Stack Hub é atualizado. Passe sua variável de sessão de ponto de extremidade privilegiado 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, 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 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 | Type | Obrigatório | Cargo | Padrão | Descrição |
---|---|---|---|---|---|
PfxFilesPath |
String | Falso | nomeado | Nenhum | O caminho do 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 alternar segredos externos. O caminho deve terminar com a pasta \Certificates , por exemplo , \\<IPAddress>\<ShareName>\Certificates. |
CertificatePassword |
SecureString | Falso | nomeado | Nenhum | A senha para todos os certificados fornecidos no -PfXFilesPath. Valor necessário se PfxFilesPath for fornecido quando os segredos externos forem girados. |
Internal |
String | Falso | nomeado | Nenhum | O sinalizador interno deve ser usado sempre que um operador do Azure Stack Hub desejar 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 externa. Necessário apenas ao alternar segredos externos. |
ReRun |
SwitchParameter | Falso | nomeado | Nenhum | Deve ser usado sempre que a rotação secreta for tentada novamente após uma tentativa fracassada. |
Sintaxe
Para rotação de segredo externo
Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]
Para rotação de segredo interno
Start-SecretRotation [-Internal]
Para repetição de rotação de segredo externo
Start-SecretRotation [-ReRun]
Para repetição de rotação de segredo interno
Start-SecretRotation [-ReRun] [-Internal]
Exemplos
Alternar apenas segredos internos de infraestrutura
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.
Alternar 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
Esse comando gira os certificados TLS usados para os pontos de extremidade de infraestrutura de rede externa do Azure Stack Hub.
Alternar 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 de 1811+ , você não pode mais alternar 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 pela pilha e, como há certificados fornecidos, os certificados de ponto de extremidade externo também serão girados.