Rodar segredos no Azure Stack Hub
Este artigo fornece orientações para realizar a rotação de segredos, para ajudar a manter uma comunicação segura com os recursos e serviços de infraestrutura do Azure Stack Hub.
Descrição Geral
O Azure Stack Hub utiliza segredos para manter uma comunicação segura com recursos e serviços de infraestrutura. Para manter a integridade da infraestrutura do Azure Stack Hub, os operadores precisam da capacidade de rodar segredos em frequências consistentes com os requisitos de segurança da organização.
Quando os segredos estão prestes a expirar, são gerados os seguintes alertas no portal do administrador. A conclusão da rotação de segredos resolverá estes alertas:
- Expiração da palavra-passe da conta de serviço pendente
- Expiração do certificado interno pendente
- Expiração do certificado externo pendente
Aviso
Existem duas fases de alertas acionadas no portal do administrador antes da expiração:
- 90 dias antes da expiração é gerado um alerta de aviso.
- 30 dias antes da expiração, é gerado um alerta crítico.
É fundamental que conclua a rotação de segredos se receber estas notificações. Se não o fizer, pode causar a perda de cargas de trabalho e a possível reimplementação do Azure Stack Hub às suas próprias custas!
Para obter mais informações sobre monitorização e remediação de alertas, veja Monitorizar o estado de funcionamento e os alertas no Azure Stack Hub.
Nota
Os ambientes do Azure Stack Hub em versões anteriores a 1811 podem ver alertas para expirações de segredos ou certificados internos pendentes. Estes alertas são imprecisos e devem ser ignorados sem executar a rotação de segredos internos. Os alertas de expiração de segredos internos imprecisos são um problema conhecido que é resolvido em 1811. Os segredos internos não expiram, a menos que o ambiente esteja ativo há dois anos.
Pré-requisitos
É altamente recomendado que esteja a executar uma versão suportada do Azure Stack Hub e que aplique a correção mais recente disponível para a versão do Azure Stack Hub que a sua instância está a executar. Por exemplo, se estiver a executar o 2008, certifique-se de que instalou a correção mais recente disponível para o 2008.
Importante
Para versões anteriores a 1811:
- Se a rotação de segredos já tiver sido efetuada, tem de atualizar para a versão 1811 ou posterior antes de efetuar novamente a rotação de segredos. A Rotação de Segredos tem de ser executada através do Ponto Final Privilegiado e requer credenciais do Operador do Azure Stack Hub. Se não souber se a rotação de segredos foi executada no seu ambiente, atualize para o 1811 antes de efetuar a rotação de segredos.
- Não precisa de rodar segredos para adicionar certificados de anfitrião de extensão. Deve seguir as instruções no artigo Preparar o anfitrião de extensões para o Azure Stack Hub para adicionar certificados de anfitrião de extensão.
Notifique os utilizadores das operações de manutenção planeada. Agende janelas de manutenção normais, tanto quanto possível, durante o horário comercial. As operações de manutenção podem afetar as cargas de trabalho do utilizador e as operações do portal.
Gerar pedidos de assinatura de certificados para o Azure Stack Hub.
Durante a rotação de segredos, os operadores podem reparar que os alertas são abertos e fechados automaticamente. Este comportamento está previsto e os alertas podem ser ignorados. Os operadores podem verificar a validade destes alertas com o cmdlet Do PowerShell Test-AzureStack. Para os operadores, utilizar o System Center Operations Manager para monitorizar os sistemas do Azure Stack Hub, colocar um sistema no modo de manutenção impedirá que estes alertas cheguem aos respetivos sistemas ITSM. No entanto, os alertas continuarão a surgir se o sistema do Azure Stack Hub ficar inacessível.
Rodar segredos externos
Importante
Rotação de segredos externos para:
- Os segredos não certificados, como chaves seguras e cadeias de carateres , têm de ser feitos manualmente pelo administrador. Isto inclui palavras-passe de conta de utilizador e administrador e palavras-passe de comutador de rede.
- Os segredos do fornecedor de recursos de valor acrescentado (RP) são abrangidos por orientações separadas:
- As credenciais do controlador de gestão da placa base (BMC) são um processo manual, abordado mais adiante neste artigo.
- Azure Container Registry certificados externos é um processo manual, abordado mais adiante neste artigo.
Esta secção abrange a rotação de certificados utilizados para proteger serviços direcionados para o exterior. Estes certificados são fornecidos pelo Operador do Azure Stack Hub para os seguintes serviços:
- Portal do administrador
- Portal público
- Administrador do Azure Resource Manager
- Global Azure Resource Manager
- Key Vault de Administrador
- Key Vault
- Anfitrião da Extensão Administração
- ACS (incluindo armazenamento de blobs, tabelas e filas)
- ADFS1
- Gráfico1
- Container Registry2
1Aplicável ao utilizar os Serviços Federados do Active Directory (ADFS).
2Aplicável ao utilizar Azure Container Registry (ACR).
Preparação
Antes da rotação de segredos externos:
Execute o cmdlet do
Test-AzureStack
PowerShell com o-group SecretRotationReadiness
parâmetro para confirmar que todas as saídas de teste estão em bom estado de funcionamento antes de rodar segredos.Preparar um novo conjunto de certificados externos de substituição:
O novo conjunto tem de corresponder às especificações de certificado descritas nos requisitos de certificado PKI do Azure Stack Hub.
Gere um pedido de assinatura de certificado (CSR) para submeter à Autoridade de Certificação (AC). Utilize os passos descritos em Gerar pedidos de assinatura de certificados e prepare-os para utilização no ambiente do Azure Stack Hub com os passos em Preparar certificados PKI. O Azure Stack Hub suporta a rotação de segredos para certificados externos de uma nova Autoridade de Certificação (AC) nos seguintes contextos:
Rodar a partir da AC Rodar para AC Suporte da versão do Azure Stack Hub Self-Signed Grandes Empresas 1903 & posterior Self-Signed Self-Signed Não suportado Self-Signed Público* 1803 & posterior Grandes Empresas Grandes Empresas 1803 & posterior; 1803-1903 se a MESMA AC empresarial utilizada na implementação Grandes Empresas Self-Signed Não suportado Grandes Empresas Público* 1803 & posterior Público* Grandes Empresas 1903 & posterior Público* Self-Signed Não suportado Público* Público* 1803 & posterior *Parte do Programa de Raiz Fidedigna do Windows.
Certifique-se de que valida os certificados que prepara com os passos descritos em Validar Certificados PKI
Certifique-se de que não existem carateres especiais na palavra-passe, como, por exemplo
$
, ,*
,#
,@
or
)".Certifique-se de que a encriptação PFX é TripleDES-SHA1. Se tiver um problema, veja Corrigir problemas comuns com certificados PKI do Azure Stack Hub.
Armazene uma cópia de segurança nos certificados utilizados para rotação numa localização segura de cópia de segurança. Se a rotação for executada e, em seguida, falhar, substitua os certificados na partilha de ficheiros pelas cópias de segurança antes de executar novamente a rotação. Mantenha cópias de segurança na localização segura da cópia de segurança.
Crie uma partilha de ficheiros à qual pode aceder a partir das VMs do ERCS. A partilha de ficheiros tem de ser legível e gravável para a identidade do CloudAdmin .
Abra uma consola ISE do PowerShell a partir de um computador onde tenha acesso à partilha de ficheiros. Navegue para a partilha de ficheiros, onde cria diretórios para colocar os seus certificados externos.
Crie uma pasta na partilha de ficheiros com o nome
Certificates
. Dentro da pasta certificados, crie uma subpasta com o nomeAAD
ouADFS
, consoante o fornecedor de identidade que o Hub utiliza. Por exemplo, .\Certificates\AAD ou .\Certificates\ADFS. Nenhuma outra pasta além da pasta de certificados e da subpasta do fornecedor de identidade deve ser criada aqui.Copie o novo conjunto de certificados externos de substituição criado no passo 2 para a pasta .\Certificates\<IdentityProvider> criada no passo 6. Conforme mencionado acima, a subpasta do fornecedor de identidade tem de ser
AAD
ouADFS
. Certifique-se de que os nomes alternativos do requerente (SANs) dos certificados externos de substituição seguem ocert.<regionName>.<externalFQDN>
formato especificado nos requisitos de certificados de infraestrutura de chave pública (PKI) do Azure Stack Hub.Eis um exemplo de uma estrutura de pastas para o Fornecedor de identidades 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 utilizar Azure Container Registry (ACR) para Microsoft Entra ID e ADFS.
Nota
Se estiver a rodar certificados externos do Container Registry, tem de criar manualmente uma Container Registry
subpasta na subpasta do fornecedor de identidade. Além disso, tem de armazenar o certificado .pfx correspondente nesta subpasta criada manualmente.
Rotação
Conclua os seguintes passos para rodar segredos externos:
Utilize o seguinte script do PowerShell para rodar os segredos. O script requer acesso a uma sessão do Privileged EndPoint (PEP). O PEP é acedido através de uma sessão remota do PowerShell na máquina virtual (VM) que aloja o PEP. Se estiver a utilizar um sistema integrado, existem três instâncias do PEP, cada uma em execução dentro de uma VM (Prefix-ERCS01, Prefix-ERCS02 ou Prefix-ERCS03) em anfitriões diferentes. O script realiza os passos seguintes:
Cria uma Sessão do PowerShell com o ponto final Privilegiado com a conta CloudAdmin e armazena a sessão como uma variável. Esta variável é utilizada como um parâmetro no próximo passo.
Executa Invoke-Command, transmitindo a variável de sessão PEP como o
-Session
parâmetro.É executada
Start-SecretRotation
na sessão PEP com os seguintes parâmetros. Para obter mais informações, veja 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 no passo 6 da secção Preparação, por exemplo \\<IPAddress>\<ShareName>\Certificates
.-PathAccessCredential
$CertShareCreds O objeto PSCredential para credenciais para a partilha. -CertificatePassword
$CertPassword Uma cadeia segura da palavra-passe utilizada para todos os ficheiros 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 segredos externos demora aproximadamente uma hora. Após a conclusão com êxito, a consola apresentará uma
ActionPlanInstanceID ... CurrentStatus: Completed
mensagem, seguida deAction plan finished with status: 'Completed'
. Remova os certificados da partilha criada na secção Preparação e armazene-os na respetiva localização de cópia de segurança segura.Nota
Se a rotação de segredos falhar, siga as instruções na mensagem de erro e execute novamente
Start-SecretRotation
com o-ReRun
parâmetro .Start-SecretRotation -ReRun
Contacte o suporte se ocorrer falhas de rotação de segredos repetidas.
Opcionalmente, para confirmar que todos os certificados externos foram rodados, execute a ferramenta de validação Test-AzureStack com o seguinte script:
Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
Rodar segredos internos
Os segredos internos incluem certificados, palavras-passe, cadeias seguras e chaves utilizadas pela infraestrutura do Azure Stack Hub sem a intervenção do Operador do Azure Stack Hub. A rotação de segredos interna só será necessária se suspeitar que um foi comprometido ou se tiver recebido um alerta de expiração.
As implementações anteriores a 1811 podem ver alertas para expirações pendentes de certificados internos ou segredos. Estes alertas são imprecisos e devem ser ignorados e são um problema conhecido resolvido em 1811.
Conclua os seguintes passos para rodar segredos internos:
Execute o seguinte script do PowerShell. Aviso para rotação de segredo interno, a secção "Executar Rotação secreta" utiliza 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 necessitam do
-Internal
sinalizador.Após a conclusão com êxito, a consola apresentará uma
ActionPlanInstanceID ... CurrentStatus: Completed
mensagem, seguida deAction 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
Contacte o suporte se ocorrer falhas de rotação de segredos repetidas.
Rodar certificado de raiz do Azure Stack Hub
O certificado de raiz do Azure Stack Hub é aprovisionado durante a implementação com uma expiração de cinco anos. A partir do 2108, a rotação de segredos internos também roda o certificado de raiz. O alerta de expiração do segredo padrão identifica a expiração do certificado de raiz e gera alertas em 90 (aviso) e 30 dias (críticos).
Para rodar o certificado de raiz, tem de atualizar o sistema para o 2108 e efetuar a rotação de segredos internos.
O fragmento de código seguinte utiliza o Ponto Final Privilegiado para listar a data de expiração do certificado de 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 gestão do quadro base monitoriza o estado físico dos servidores. Consulte o fornecedor de hardware original do fabricante de equipamento (OEM) para obter instruções para atualizar o nome da conta de utilizador e a palavra-passe do BMC.
Nota
O seu OEM pode fornecer aplicações de gestão adicionais. Atualizar o nome de utilizador ou palavra-passe de outras aplicações de gestão não tem qualquer efeito no nome de utilizador ou palavra-passe do BMC.
- Atualize o BMC nos servidores físicos do Azure Stack Hub ao seguir as instruções do OEM. O nome de utilizador e a palavra-passe de cada BMC no seu ambiente têm de ser os mesmos. Os nomes de utilizador BMC não podem exceder os 16 carateres.
- Já não é necessário atualizar as credenciais do BMC nos servidores físicos do Azure Stack Hub ao seguir as instruções do OEM. O nome de utilizador e a palavra-passe de cada BMC no seu ambiente têm de ser iguais e não podem exceder 16 carateres.
Abra um ponto final privilegiado nas sessões do Azure Stack Hub. Para obter instruções, consulte Utilizar o ponto final privilegiado no Azure Stack Hub.
Depois de abrir uma sessão de ponto final com privilégios, execute um dos scripts do PowerShell abaixo, que utilizam Invoke-Command para executar Set-BmcCredential. Se utilizar o parâmetro opcional -BypassBMCUpdate com Set-BMCCredential, as credenciais no BMC não serão atualizadas. Apenas o arquivo de dados interno do Azure Stack Hub é atualizado. Transmita a variável de sessão de ponto final com privilégios como um parâmetro.
Eis um script do PowerShell de exemplo que irá pedir o nome de utilizador e a palavra-passe:
# Interactive Version $PEPIp = "<Privileged Endpoint IP or Name>" # You can also use the machine name instead of IP here. $PEPCreds = Get-Credential "<Domain>\CloudAdmin" -Message "PEP Credentials" $NewBmcPwd = Read-Host -Prompt "Enter New BMC password" -AsSecureString $NewBmcUser = Read-Host -Prompt "Enter New BMC user name" $PEPSession = New-PSSession -ComputerName $PEPIp -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Invoke-Command -Session $PEPSession -ScriptBlock { # Parameter BmcPassword is mandatory, while the BmcUser parameter is optional. Set-BmcCredential -BmcPassword $using:NewBmcPwd -BmcUser $using:NewBmcUser } Remove-PSSession -Session $PEPSession
Também pode codificar o nome de utilizador e a palavra-passe em variáveis, 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 roda os segredos da infraestrutura de um sistema do Azure Stack Hub. Este cmdlet só pode ser executado no ponto final privilegiado do Azure Stack Hub ao utilizar um Invoke-Command
bloco de script que passa a sessão PEP no -Session
parâmetro. Por predefinição, roda apenas os certificados de todos os pontos finais de infraestrutura de rede externa.
Parâmetro | Tipo | Necessário | Posição | Predefinição | Description |
---|---|---|---|---|---|
PfxFilesPath |
String | Falso | Com nome | Nenhuma | O caminho de partilha de ficheiros para a pasta raiz \Certificados que contém todos os certificados de ponto final de rede externos. Apenas é necessário ao rodar segredos externos. O caminho tem de terminar com a pasta \Certificates , por exemplo \\<IPAddress>\<ShareName>\Certificates. |
CertificatePassword |
SecureString | Falso | Com nome | Nenhuma | A palavra-passe de todos os certificados fornecidos no -PfXFilesPath. Valor necessário se PfxFilesPath for fornecido quando os segredos externos são rodados. |
Internal |
String | Falso | Com nome | Nenhuma | O sinalizador interno tem de ser utilizado sempre que um operador do Azure Stack Hub quiser rodar segredos internos da infraestrutura. |
PathAccessCredential |
PSCredential | Falso | Com nome | Nenhuma | A credencial do PowerShell para a partilha de ficheiros do diretório \Certificates que contém todos os certificados de ponto final de rede externos. Apenas é necessário ao rodar segredos externos. |
ReRun |
ParâmetroOpcional | Falso | Com nome | Nenhuma | Tem de ser utilizado sempre que a rotação secreta for novamente tentada após uma tentativa falhada. |
Syntax
Para rotação de segredos externos
Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]
Para rotação de segredos internos
Start-SecretRotation [-Internal]
Para a nova execução da rotação de segredos externos
Start-SecretRotation [-ReRun]
Para a nova execução da rotação de segredos internos
Start-SecretRotation [-ReRun] [-Internal]
Exemplos
Rodar apenas segredos de infraestrutura interna
Este comando tem de ser executado através do ponto final privilegiado do ambiente do Azure Stack Hub.
PS C:\> Start-SecretRotation -Internal
Este comando roda todos os segredos da infraestrutura expostos à rede interna do Azure Stack Hub.
Rodar 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 roda os certificados TLS utilizados para os pontos finais de infraestrutura de rede externa do Azure Stack Hub.
Rodar segredos de infraestrutura interna e externa (apenas antes de 1811 )
Importante
Este comando aplica-se apenas ao Azure Stack Hub anterior a 1811 , uma vez que a rotação foi dividida para certificados internos e externos.
A partir do 1811+ já não pode rodar certificados internos e externos!
# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Create Credentials for the fileshare
$CertPassword = ConvertTo-SecureString '<CertPasswordHere>' -AsPlainText -Force
$CertShareCreds = Get-Credential
$CertSharePath = "<NetworkPathOfCertShare>"
# Run Secret Rotation
Invoke-Command -Session $PEPSession -ScriptBlock {
Start-SecretRotation -PfxFilesPath $using:CertSharePath -PathAccessCredential $using:CertShareCreds -CertificatePassword $using:CertPassword
}
Remove-PSSession -Session $PEPSession
Este comando roda os segredos da infraestrutura expostos à rede interna do Azure Stack Hub e os certificados TLS utilizados para os pontos finais de infraestrutura de rede externa do Azure Stack Hub. Start-SecretRotation rodar todos os segredos gerados por pilha e, como existem certificados fornecidos, os certificados de ponto final externo também serão rodados.