Compartir a través de


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

  1. 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.
  2. 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.
  3. Genere solicitudes de firma de certificados para Azure Stack Hub.
  4. Prepare los certificados PKI de Azure Stack Hub.
  5. 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:

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:

  1. 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.

  2. Prepare un nuevo conjunto de certificados externos de reemplazo:

  3. 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.

  4. 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.

  5. 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.

  6. Cree una carpeta en el recurso compartido de archivos denominado Certificates. Dentro de la carpeta certificates, cree una subcarpeta denominada AAD o ADFS, 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í.

  7. 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 o ADFS. Asegúrese de que los nombres alternativos de asunto (SAN) de sus certificados externos de sustitución siguen el formato especificado cert.<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:

  1. 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
    
  2. 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 estado Action 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.

  3. 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:

  1. 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
    
  2. Después de la finalización correcta, la consola muestra un mensaje de ActionPlanInstanceID ... CurrentStatus: Completed seguido de Action 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.

  1. 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.
  1. 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.
  1. 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.

  2. 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 ejecutar Set-BmcCredential. Si usa el parámetro opcional -BypassBMCUpdate con Set-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.

Pasos siguientes

Más información acerca de la seguridad de Azure Stack