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 los secretos están a punto de expirar, se generan las siguientes alertas en el portal de administración. Completar la rotación secreta resuelve 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 provocar la pérdida de cargas de trabajo y, posiblemente, requerir la reimplementación de Azure Stack Hub a su propio gasto.
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.
Requisitos previos
- Se recomienda ejecutar una versión compatible de Azure Stack Hub y aplicar 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 estás ejecutando 2408, asegúrate de que has instalado el último hotfix disponible para 2408.
- 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 de usuario como a las operaciones del portal.
- Genere solicitudes de firma de certificados para Azure Stack Hub.
- Prepare los certificados PKI de Azure Stack Hub.
- Durante la rotación secreta, los operadores pueden notar que las alertas se abren y se cierran automáticamente. 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.
- Los certificados externos de Azure Container Registry son 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 cuando se usan servicios federados de Active Directory (ADFS).
2Aplicable cuando se usa 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 Empresa 1903 y posteriores Autofirmado Autofirmado No compatible Autofirmado Público* 1803 y posteriores Empresa Empresa 1803 y posteriores; de 1803 a 1903 si se usa la misma CA de empresa en la implementación Empresa Autofirmado No compatible Empresa Público* 1803 y posteriores Público* Empresa 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. 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, su subcarpeta de proveedor de identidad debe ser
AAD
oADFS
. Asegúrese de que los nombres alternativos de asunto (SAN) de sus certificados externos de sustitución siguen el formato especificadocert.<regionName>.<externalFQDN>
en los requisitos de certificado de la 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 cuando se usa Azure Container Registry con Microsoft Entra ID y AD FS.
Nota:
Si rota los certificados externos del registro de contenedores, debe crear manualmente una subcarpeta Container Registry en la subcarpeta del proveedor de identidad. 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, vea 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 del estadoAction 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 falla la rotación secreta, 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.
Realice los pasos siguientes para rotar los secretos internos:
Ejecute el siguiente script de PowerShell. Para la rotación secreta interna, la sección "Ejecutar rotación secreta" utiliza solo el parámetro
-Internal
del 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
Después de la finalización correcta, la consola muestra un mensaje de
ActionPlanInstanceID ... CurrentStatus: Completed
seguido deAction plan finished with status: 'Completed'
.Nota:
Si falla la rotación secreta, 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.
En el ejemplo siguiente se 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 scripts de PowerShell siguientes, que usan
Invoke-Command
para ejecutarSet-BmcCredential
. Si usa el parámetro opcional-BypassBMCUpdate
conSet-BMCCredential
, no se actualizan las credenciales de BMC; 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 | Type | Obligatorio | Posición | Valor predeterminado | Descripción |
---|---|---|---|---|---|
PfxFilesPath |
Cadena | False | con nombre | Ninguno | 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 | Ninguno | La contraseña de todos los certificados que se proporcionan en -PfXFilesPath. Valor obligatorio si se proporciona PfxFilesPath al cambiar secretos externos. |
Internal |
Cadena | False | con nombre | Ninguno | 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 | Ninguno | 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 | Ninguno | 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.
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.