Cambio de secretos en Azure Stack Hub
En este artículo se proporcionan instrucciones para la rotación de secretos, a fin de ayudar a mantener una comunicación segura con los recursos y servicios de la infraestructura de Azure Stack Hub.
Información general
Azure Stack Hub usa secretos para mantener una comunicación segura con los recursos y servicios de la infraestructura. Para mantener la integridad de la infraestructura de Azure Stack Hub, los operadores necesitan la posibilidad de rotar los secretos con una frecuencia que se ajuste a los requisitos de seguridad de la organización.
Cuando se aproxime la expiración de los secretos, se generan las siguientes alertas en el portal de administración. La finalización de la rotación de secretos resolverá estas alertas:
- Expiración de contraseña de cuenta de servicio pendiente
- Expiración de certificado interno pendiente
- Expiración de certificado externo pendiente
Advertencia
Hay dos fases de alertas que se desencadenan en el portal de administración antes de la expiración:
- 90 días antes de la expiración, se genera una alerta de advertencia.
- 30 días antes de la expiración, se genera una alerta crítica.
La rotación de secretos es un paso crítico que debe completar si recibe estas notificaciones. Si no lo hace, puede que se pierdan cargas de trabajo y que deba volver a implementar Azure Stack Hub por su cuenta.
Para más información sobre la supervisión y corrección de alertas, consulte Supervisión del estado y las alertas en Azure Stack Hub.
Nota
Los entornos de Azure Stack Hub de las versiones anteriores a la 1811 pueden ver alertas sobre el vencimiento de certificados o secretos internos pendientes. Estas alertas son inexactas y deben omitirse sin ejecutar el cambio de secretos interno. Las alertas de expiración de secretos internos inexactos son un problema conocido resuelto en la versión 1811. Los secretos internos no expirarán a menos que el entorno haya estado activo durante dos años.
Requisitos previos
Se recomienda encarecidamente que ejecute una versión compatible de Azure Stack Hub y que aplique la revisión más reciente disponible para la versión de Azure Stack Hub en la que se ejecuta la instancia. Por ejemplo, si ejecuta 2008, asegúrese de que ha instalado la revisión más reciente disponible para 2008.
Importante
Para versiones anteriores a la 1811:
- Si ya se ha realizado la rotación de secretos, debe actualizar a la versión 1811 o posterior antes de ejecutar la rotación de secretos de nuevo. El cambio de secretos se debe ejecutar utilizando el punto de conexión con privilegios y requiere credenciales de operador de Azure Stack Hub. Si no sabe si la rotación de secretos se ha ejecutado en su entorno, actualice a la versión 1811 antes de realizarla.
- No es necesario rotar los secretos para agregar certificados de host de extensiones. Debe seguir las instrucciones del artículo Preparación de un host de extensiones de Azure Stack Hub de extensiones para agregar certificados de un host de extensiones.
Notifique a los usuarios cualquier operación de mantenimiento planeado. Programe ventanas de mantenimiento normales, en la medida de lo posible, durante horas no laborables. Las operaciones de mantenimiento pueden afectar tanto a las cargas de trabajo del usuario como a las operaciones del portal.
Generación de solicitudes de firma de certificados para Azure Stack Hub.
Los operadores pueden notar que las alertas se abren y cierran automáticamente durante la rotación de secretos. Este comportamiento es el esperado y puede hacerse caso omiso de las alertas. Los operadores pueden comprobar la validez de estas alertas mediante el cmdlet Test-AzureStack de PowerShell. Para los operadores, el uso de System Center Operations Manager para supervisar los sistemas de Azure Stack Hub, colocar un sistema en modo de mantenimiento impedirá que estas alertas lleguen a sus sistemas ITSM. Sin embargo, las alertas seguirán viniendo si el sistema de Azure Stack Hub deja de ser accesible.
Rotación de secretos externos
Importante
Rotación de secretos externos para:
- El administrador debe administrar manualmente los secretos que no son del certificado, como las claves seguras y las cadenas. Esto incluye las contraseñas de cuentas de usuario y administrador y las contraseñas de conmutador de red.
- Los secretos del proveedor de recursos (RP) de valor agregado se tratan en instrucciones independientes:
- Las credenciales del controlador de administración de placa base (BMC) son un proceso manual que se trata más adelante en este artículo.
- Azure Container Registry certificados externos es un proceso manual, que se trata más adelante en este artículo.
En esta sección se describe la rotación de certificados que se usan para proteger los servicios orientados a externos. Estos certificados los proporciona el operador de Azure Stack Hub para los siguientes servicios:
- Administrator Portal
- Public Portal
- Administrator Azure Resource Manager
- Global Azure Resource Manager
- Administrator Key Vault
- Key Vault
- Host de extensiones de administración
- ACS (incluido Blob Storage, Table Storage y Queue Storage)
- ADFS1
- Gráfico1
- Container Registry2
1Aplicable al usar Servicios federados de Active Directory (ADFS).
2Aplicable al usar Azure Container Registry (ACR).
Preparación
Antes de la rotación de secretos externos:
Ejecute el cmdlet
Test-AzureStack
de PowerShell con el parámetro-group SecretRotationReadiness
, para confirmar que todas las salidas de prueba son correctas antes de rotar los secretos.Prepare un nuevo conjunto de certificados externos de reemplazo:
El nuevo conjunto debe coincidir con las especificaciones de certificado que se describen en Requisitos de certificados de infraestructura de clave pública de Azure Stack Hub.
Genere una solicitud de firma de certificado (CSR) para enviarla a la entidad de certificación (CA). Use los pasos que se describen en Generación de solicitudes de firma de certificados y prepárelos para usarlos en su entorno de Azure Stack Hub siguiendo los pasos de Preparación de certificados PKI. Azure Stack Hub permite cambiar los secretos con certificados externos de una nueva entidad de certificación (CA) en los contextos siguientes:
Rotar desde CA Rotar a CA Compatibilidad con la versión de Azure Stack Hub Autofirmado Enterprise 1903 y posteriores Autofirmado Autofirmado No compatible Autofirmado Público* 1803 y posteriores Enterprise Enterprise 1803 y posteriores; de 1803 a 1903 si se usa la misma CA de empresa en la implementación Enterprise Autofirmado No compatible Enterprise Público* 1803 y posteriores Público* Enterprise 1903 y posteriores Público* Autofirmado No compatible Público* Público* 1803 y posteriores *Parte del programa raíz de confianza de Windows.
No olvide validar los certificados que prepare con los pasos descritos en Validación de certificados PKI.
Asegúrese de que no haya ningún carácter especial en la contraseña (como
$
,*
,#
,@
,or
).Asegúrese de que el cifrado PFX es TripleDES-SHA1. Si surge un problema, consulte Corrección de problemas comunes con certificados de PKI en Azure Stack Hub.
Guarde una copia de seguridad de los certificados usados para el cambio en una ubicación segura. Si se ejecuta el cambio y, después, se produce un error, reemplace los certificados del recurso compartido de archivos por las copias de seguridad antes de volver a ejecutar el cambio. Conserve las copias de seguridad en la ubicación segura.
Cree un recurso compartido de archivos al que pueda acceder desde las máquinas virtuales de ERCS. El recurso compartido de archivos debe ser de lectura y escritura para la identidad CloudAdmin.
Abra una consola de PowerShell ISE desde un equipo que tenga acceso al recurso compartido de archivos. Vaya al recurso compartido de archivos donde se crean los directorios para colocar los certificados externos.
Cree una carpeta en el recurso compartido de archivos denominado
Certificates
. Dentro de la carpeta certificates, cree una subcarpeta denominadaAAD
oADFS
, en función del proveedor de identidades que use el centro de conectividad. Por ejemplo, .\Certificates\AAD o .\Certificates\ADFS. No se deben crear otras carpetas además de la carpeta certificates y la subcarpeta del proveedor de identidades aquí.Copie el nuevo conjunto de certificados externos de reemplazo creados en el paso 2, en la carpeta .\Certificates\<IdentityProvider> creada en el paso 6. Como se mencionó anteriormente, la subcarpeta del proveedor de identidades debe ser
AAD
oADFS
. Asegúrese de que los nombres alternativos del firmante de los certificados externos de reemplazo siguen elcert.<regionName>.<externalFQDN>
formato especificado en los requisitos de certificado de infraestructura de clave pública (PKI) de Azure Stack Hub.Este es un ejemplo de una estructura de carpetas para el proveedor de identidades de 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
*Aplicable al usar Azure Container Registry (ACR) para Microsoft Entra id. y ADFS.
Nota:
Si va a rotar certificados externos de Container Registry, debe crear manualmente una Container Registry
subcarpeta en la subcarpeta del proveedor de identidades. Además, debe almacenar el certificado .pfx correspondiente dentro de esta subcarpeta creada manualmente.
Rotación
Realice los pasos siguientes para rotar los secretos externos:
Use el siguiente script de PowerShell para rotar los secretos. El script requiere acceso a una sesión de punto de conexión con privilegios (PEP). El acceso a este punto de conexión se realiza mediante una sesión remota de PowerShell en la máquina virtual que lo hospeda. Si va a usar un sistema integrado, hay tres instancias del PEP, cada una de las cuales se ejecuta en una máquina virtual (Prefix-ERCS01, Prefix-ERCS02 o Prefix-ERCS03) en diferentes hosts. Este script lleva a cabo los pasos siguientes:
Cree una sesión de PowerShell con el punto de conexión con privilegios mediante la cuenta CloudAdmin y almacene la sesión como una variable. Esta variable se usa como parámetro en el paso siguiente.
Ejecuta Invoke-Command para pasar la variable de la sesión de PEP como parámetro
-Session
.Ejecuta
Start-SecretRotation
en la sesión de PEP, con los parámetros siguientes. Para obtener más información, consulte la referencia start-SecretRotation :Parámetro Variable Descripción -PfxFilesPath
$CertSharePath Ruta de acceso de red a la carpeta raíz certificates como se describe en el paso 6 de la sección Preparación, por ejemplo \\<IPAddress>\<ShareName>\Certificates
.-PathAccessCredential
$CertShareCreds el objeto PSCredential con las credenciales del recurso compartido. -CertificatePassword
$CertPassword Una cadena segura de la contraseña usada para todos los archivos de certificados pfx creados.
# 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
El cambio de secretos externos tarda aproximadamente una hora. Después de la finalización correcta del proceso, la consola mostrará el mensaje
ActionPlanInstanceID ... CurrentStatus: Completed
, seguido deAction plan finished with status: 'Completed'
. Elimine los certificados del recurso compartido creado en la sección Preparación y almacénelos en su ubicación segura de copia de seguridad.Nota
Si se produce un error en el cambio de secretos, siga las instrucciones del mensaje de error y vuelva a ejecutar
Start-SecretRotation
con el parámetro-ReRun
.Start-SecretRotation -ReRun
Póngase en contacto con el soporte técnico si el cambio de secretos falla en reiteradas ocasiones.
De manera opcional, para confirmar que se han rotado todos los certificados externos, ejecute la herramienta de validación Test-AzureStack con el siguiente script:
Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
Rotación de secretos internos
Los secretos internos incluyen los certificados, las contraseñas, las cadenas seguras y las claves que utilizan la infraestructura de Azure Stack Hub sin la intervención del operador de este servicio. La rotación de secretos internos solo es necesaria si sospecha que alguno de ellos se ha puesto en peligro o si ha recibido una alerta de expiración.
En las implementaciones anteriores a 1811, puede ver alertas para las expiraciones de certificados o secretos internos pendientes. Estas alertas no son correctas y deben ignorarse, y son un problema conocido resuelto en la versión 1811.
Realice los pasos siguientes para rotar los secretos internos:
Ejecute el siguiente script de PowerShell. Tenga en cuenta que, para la rotación de secretos internos, en la sección "Run Secret Rotation", solo se usa el parámetro
-Internal
en el 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
Las versiones anteriores a la 1811 no requieren la marca
-Internal
.Después de la finalización correcta del proceso, la consola mostrará el mensaje
ActionPlanInstanceID ... CurrentStatus: Completed
, seguido del estadoAction plan finished with status: 'Completed'
.Nota
Si se produce un error en la rotación de secretos, siga las instrucciones del mensaje de error y vuelva a ejecutar
Start-SecretRotation
con los parámetros-Internal
y-ReRun
.Start-SecretRotation -Internal -ReRun
Póngase en contacto con el soporte técnico si el cambio de secretos falla en reiteradas ocasiones.
Rotación de los certificados raíz de Azure Stack Hub
El certificado raíz de Azure Stack Hub se aprovisiona durante la implementación con una expiración de cinco años. A partir de 2108, la rotación interna de secretos también rota el certificado raíz. La alerta de expiración de secretos estándar identifica la expiración del certificado raíz y genera alertas en 90 (advertencia) y 30 días (crítico).
Para rotar el certificado raíz, debe actualizar el sistema a 2108 y realizar la rotación interna de secretos.
El siguiente fragmento de código usa el punto de conexión con privilegios para enumerar la fecha de expiración del certificado raíz:
$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
Actualización de la credencial de BMC
El controlador de administración de placa base supervisa el estado físico de sus servidores. Consulte con el proveedor de hardware del fabricante de equipos originales (OEM) para obtener instrucciones sobre cómo actualizar el nombre y la contraseña de la cuenta de usuario del BMC.
Nota
El OEM puede proporcionar aplicaciones de administración adicionales. La actualización del nombre de usuario o la contraseña para otras aplicaciones de administración no tiene ningún efecto en el nombre de usuario o la contraseña del BMC.
- Actualice el BMC de los servidores físicos de Azure Stack Hub siguiendo las instrucciones del OEM. El nombre de usuario y la contraseña para cada BMC de su entorno deben ser los mismos. Los nombres de usuario de BMC no pueden superar los 16 caracteres.
- Ya no es necesario que actualice primero las credenciales del BMC en los servidores físicos de Azure Stack Hub siguiendo las instrucciones del OEM. El nombre de usuario y la contraseña para cada BMC de su entorno deben ser los mismos y no pueden superar los 16 caracteres.
Abra un punto de conexión con privilegios en sesiones de Azure Stack Hub. Para obtener instrucciones, consulte Uso del punto de conexión con privilegios en Azure Stack Hub.
Después de abrir una sesión de punto de conexión con privilegios, ejecute uno de los siguientes scripts de PowerShell que usan Invoke-Command para ejecutar Set-BmcCredential. Si usa el parámetro opcional -BypassBMCUpdate con Set-BMCCredential, las credenciales del BMC no se actualizarán. Solo se actualiza el almacén de datos interno de Azure Stack Hub. Pase la variable de sesión del punto de conexión con privilegios como parámetro.
Este es un script de ejemplo de PowerShell que solicitará el nombre de usuario y la contraseña:
# 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
También puede codificar el nombre de usuario y la contraseña en las variables, lo cual puede 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
Referencia: Cmdlet Start-SecretRotation
El cmdlet Start-SecretRotation permite rotar los secretos de la infraestructura de un sistema de Azure Stack Hub. Este cmdlet solo se puede ejecutar en el punto de conexión con privilegios de Azure Stack Hub, mediante un bloque de script Invoke-Command
que pasa la sesión de PEP en el parámetro -Session
. De forma predeterminada, solo se cambian los certificados de todos los puntos de conexión de la infraestructura de red externa.
Parámetro | Tipo | Obligatorio | Posición | Valor predeterminado | Descripción |
---|---|---|---|---|---|
PfxFilesPath |
String | False | con nombre | None | La ruta de acceso del recurso compartido de archivos a la carpeta raíz \Certificates que contiene todos los certificados del punto de conexión de la red externa. Solo se necesita al rotar secretos externos. La ruta de acceso debe terminar con la carpeta \Certificates, por ejemplo \\<IPAddress>\<ShareName>\Certificates. |
CertificatePassword |
SecureString | False | con nombre | None | La contraseña de todos los certificados que se proporcionan en -PfXFilesPath. Valor obligatorio si se proporciona PfxFilesPath al cambiar secretos externos. |
Internal |
String | False | con nombre | None | La marca Internal se debe utilizar cada vez que un operador de Azure Stack Hub quiera cambiar los secretos de infraestructura interna. |
PathAccessCredential |
PSCredential | False | con nombre | None | La credencial de PowerShell para el recurso compartido de archivos al directorio \Certificates que contiene todos los certificados del punto de conexión de la red externa. Solo se necesita al rotar secretos externos. |
ReRun |
SwitchParameter | False | con nombre | None | Se debe usar en cualquier momento en que se vuelva a intentar la rotación de secretos después de un intento fallido. |
Sintaxis
Para el cambio de secretos externos
Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]
Para el cambio de secretos internos
Start-SecretRotation [-Internal]
Para volver a ejecutar el cambio de secretos externos
Start-SecretRotation [-ReRun]
Para volver a ejecutar el cambio de secretos internos
Start-SecretRotation [-ReRun] [-Internal]
Ejemplos
Cambio de solo los secretos de infraestructura interna
Este comando debe ejecutarse utilizando el punto de conexión con privilegios del entorno de Azure Stack Hub.
PS C:\> Start-SecretRotation -Internal
Este comando cambia todos los secretos de la infraestructura expuestos a la red interna de Azure Stack Hub.
Cambio de solo los secretos de infraestructura 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 cambia los certificados TLS que se usan con los puntos de conexión de la infraestructura de red externa de Azure Stack Hub.
Cambio de secretos de la infraestructura interna y externa (solo anterior a 1811)
Importante
Este comando solo se aplica a las versiones de Azure Stack Hub anteriores a la 1811, ya que el cambio ahora es diferente para los certificados internos y para los certificados externos.
Desde las versiones posteriores a 1811 ya no se pueden cambiar los certificados internos y 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 rota los secretos de la infraestructura expuestos a la red interna de Azure Stack Hub y los certificados TLS que se usan con los puntos de conexión de la infraestructura de red externa de Azure Stack Hub. Start-SecretRotation cambia todos los secretos generados por Stack, y dado que se han proporcionado certificados, los certificados de punto de conexión externos también se cambiarán.