Compartir a través de


Rotación de secretos para Event Hubs en Azure Stack Hub

En este artículo se muestra cómo rotar los secretos que utiliza el proveedor de recursos de Event Hubs.

Introducción y requisitos previos

Nota:

La rotación de secretos para proveedores de recursos de valor agregado solo se admite actualmente mediante PowerShell. Además, debe rotar los secretos de forma proactiva para los proveedores de recursos de valor agregado de forma periódica, ya que actualmente no se generan alertas administrativas.

Al igual que la infraestructura de Azure Stack Hub, los proveedores de recursos de valor añadido usan tanto secretos internos como externos. Los secretos pueden tomar varias formas, incluidas las contraseñas y las claves de cifrado que mantienen los certificados X509. Como operador, es responsable de:

  • Proporcionar secretos externos actualizados, como un nuevo certificado TLS que se usa para proteger los puntos de conexión del proveedor de recursos.
  • Administrar la rotación de secretos del proveedor de recursos de forma periódica.

Como preparación para el proceso de rotación:

  1. Consulte Requisitos de certificados de la infraestructura de clave pública (PKI) de Azure Stack Hub para obtener información importante sobre los requisitos previos antes de adquirir o renovar el certificado X509, incluidos los detalles sobre el formato PFX requerido. Revise también los requisitos especificados en la sección Certificados de PaaS opcionales para su proveedor de recursos de valor añadido específico.

  2. Si no lo ha hecho ya, instale el módulo Az de PowerShell para Azure Stack Hub antes de continuar. Es necesaria la versión 2.0.2-preview o posterior para la rotación de secretos de Azure Stack Hub. Consulte Migración desde AzureRM al módulo Az de Azure PowerShell en Azure Stack Hub para más información.

Preparación de un nuevo certificado TLS

A continuación, cree o renueve el certificado TLS para proteger los puntos de conexión del proveedor de recursos de valor añadido:

  1. Complete los pasos descritos en Generación de solicitudes de firma de certificados para la renovación de certificados para el proveedor de recursos. Aquí se usa la herramienta Readiness Checker de Azure Stack Hub para crear la CSR. Asegúrese de ejecutar el cmdlet correcto para el proveedor de recursos, en el paso "generar solicitudes de certificado para otros servicios de Azure Stack Hub". Por ejemplo, se utiliza New-AzsHubEventHubsCertificateSigningRequest para Event Hubs. Cuando termine, envíe el archivo .REQ generado a la entidad de certificación (CA) para el nuevo certificado.

  2. Una vez que haya recibido el archivo de certificado de la CA, complete los pasos que se describen en el artículo sobre la preparación de certificados para la implementación o rotación. Se utiliza de nuevo la herramienta Readiness Checker para procesar el archivo devuelto por la CA.

  3. Por último, complete los pasos descritos en Validación de los certificados PKI de Azure Stack Hub. Utilice una vez más la herramienta Readiness Checker para realizar pruebas de validación en el nuevo certificado.

Girar secretos

Por último, determine las propiedades de implementación más recientes del proveedor de recursos y úselas para completar el proceso de rotación de secretos.

Determinación de las propiedades de implementación

Los proveedores de recursos se implementan en el entorno de Azure Stack Hub como un paquete de producto con versión. A los paquetes se les asigna un identificador de paquete único, con el formato '<product-id>.<installed-version>'. Donde <product-id> es una cadena única que representa el proveedor de recursos y <installed-version> representa una versión específica. Los secretos asociados a cada paquete se almacenan en el servicio Key Vault de Azure Stack Hub.

Abra una consola de PowerShell con privilegios elevados y complete los pasos siguientes para determinar las propiedades necesarias para rotar los secretos del proveedor de recursos:

  1. Inicie sesión en el entorno de Azure Stack Hub con sus credenciales de operador. Consulte Conexión a Azure Stack Hub con PowerShell para el script de inicio de sesión de PowerShell. Asegúrese de usar los cmdlets Az de PowerShell (en lugar de AzureRM) y reemplazar todos los valores de marcador de posición, como las direcciones URL del punto de conexión y el nombre de inquilino del directorio.

  2. Ejecute el cmdlet Get-AzsProductDeployment para recuperar una lista de las implementaciones más recientes del proveedor de recursos. La colección "value" devuelta contiene un elemento para cada proveedor de recursos implementado. Busque el proveedor de recursos de interés y tome nota de los valores de estas propiedades:

    • "name": contiene el identificador de producto del proveedor de recursos en el segundo segmento del valor.
    • "properties"."deployment"."version": contiene el número de versión implementado actualmente.

    En el ejemplo siguiente, observe la implementación del proveedor de recursos de Event Hubs en el primer elemento de la colección, que tiene el identificador de producto "microsoft.eventhub" y la versión "1.2003.0.0":

    PS C:\WINDOWS\system32> Get-AzsProductDeployment -AsJson
    VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/productDeployments?api-version=2019-01-01 with 0-char payload
    VERBOSE: Received 2656-char response, StatusCode = OK
    {
        "value":  [
                      {
                          "id":  "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/productDeployments/microsoft.eventhub",
                          "name":  "global/microsoft.eventhub",
                          "type":  "Microsoft.Deployment.Admin/locations/productDeployments",
                          "properties":  {
                                             "status":  "DeploymentSucceeded",
                                             "subscriptionId":  "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
                                             "deployment":  {
                                                                "version":  "1.2003.0.0",
                                                                "actionPlanInstanceResourceId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/actionplans/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
                                                                "parameters":  {
    
                                                                               }
                                                            },
                                             "lastSuccessfulDeployment":  {
                                                                              "version":  "1.2003.0.0",
                                                                              "actionPlanInstanceResourceId":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/actionplans/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
                                                                              "parameters":  {
    
                                                                                             }
                                                                          },
                                             "provisioningState":  "Succeeded"
                                         }
                      },
                      {
                      ...
                      }
                  ]
    }
    
  3. Construya el identificador de paquete del proveedor de recursos mediante la concatenación del identificador de producto y la versión del proveedor de recursos. Por ejemplo, con los valores que se derivan del paso anterior, el identificador de paquete del proveedor de recursos de Event Hubs es microsoft.eventhub.1.2003.0.0.

  4. Con el identificador de paquete derivado del paso anterior, ejecute Get-AzsProductSecret -PackageId para recuperar la lista de tipos de secreto utilizados por el proveedor de recursos. En la colección value devuelta, busque el elemento que contiene el valor "Certificate" para la propiedad "properties"."secretKind". Este elemento contiene las propiedades del secreto del certificado del proveedor de recursos. Anote el nombre asignado a este secreto del certificado, que se identifica mediante el último segmento de la propiedad "name", justo encima de "properties".

    En el ejemplo siguiente, la colección de secretos devuelta para el proveedor de recursos de Event Hubs contiene un secreto de tipo "Certificate" llamado aseh-ssl-gateway-pfx.

    PS C:\WINDOWS\system32> Get-AzsProductSecret -PackageId 'microsoft.eventhub.1.2003.0.0' -AsJson
    VERBOSE: GET
    https://adminmanagement.myregion.mycompany.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets?api-version=2019-01-01 with 0-char payload
    VERBOSE: Received 617-char response, StatusCode = OK
    {
        "value":  [
                        {
                            "id":  "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets/aseh-ssl-gateway-pfx",
                            "name":  "global/microsoft.eventhub.1.2003.0.0/aseh-ssl-gateway-pfx",
                            "type":  "Microsoft.Deployment.Admin/locations/productPackages/secrets",
                            "properties":  {
                                            "secretKind":  "Certificate",
                                            "description":  "Event Hubs gateway SSL certificate.",
                                            "expiresAfter":  "P730D",
                                            "secretDescriptor":  {
    
                                                                    },
                                            "secretState":  {
                                                                "status":  "Deployed",
                                                                "rotationStatus":  "None",
                                                                "expirationDate":  "2022-03-31T00:16:05.3068718Z"
                                                            },
                                            "provisioningState":  "Succeeded"
                                        }
                        },
                        ...
                    ]
    }
    

Rotación de los secretos

  1. Use el cmdlet Set-AzsProductSecret para importar el nuevo certificado en Key Vault, que se usará en el proceso de rotación. Reemplace los valores de marcador de posición de las variables en consecuencia antes de ejecutar el script:

    Marcador de posición Descripción Valor de ejemplo
    <product-id> Identificador de producto de la última implementación del proveedor de recursos. microsoft.eventhub
    <installed-version> Versión de la última implementación del proveedor de recursos. 1.2003.0.0
    <cert-secret-name> Nombre con el que se almacena el secreto del certificado. aseh-ssl-gateway-pfx
    <cert-pfx-file-path> Ruta de acceso al archivo PFX del certificado. C:\dir\eh-cert-file.pfx
    <pfx-password> Contraseña asignada al archivo .PFX del certificado. strong@CertSecret6
    $productId = '<product-id>'
    $packageId = $productId + '.' + '<installed-version>'
    $certSecretName = '<cert-secret-name>' 
    $pfxFilePath = '<cert-pfx-file-path>'
    $pfxPassword = ConvertTo-SecureString '<pfx-password>' -AsPlainText -Force   
    Set-AzsProductSecret -PackageId $packageId -SecretName $certSecretName -PfxFileName $pfxFilePath -PfxPassword $pfxPassword -Force
    
  2. Por último, use el cmdlet Invoke-AzsProductRotateSecretsAction para rotar los secretos internos y externos:

    Nota:

    El proceso de rotación tarda aproximadamente de 3,5 a 4 horas en completarse.

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

    Puede supervisar el progreso de la rotación de secretos en la consola de PowerShell o en el portal de administración; para ello, seleccione el proveedor de recursos en el servicio Marketplace:

    Progreso de rotación de secretos

Solución de problemas

La rotación de secretos debe completarse correctamente sin errores. Si experimenta alguna de las siguientes condiciones en el portal de administración, abra una solicitud de soporte técnico para obtener ayuda:

  • Problemas de autenticación, incluidos los problemas de conexión con el proveedor de recursos de Event Hubs.
  • No se puede actualizar el proveedor de recursos ni editar los parámetros de configuración.
  • No aparecen las métricas de uso.
  • No se generan las facturas.
  • Las copias de seguridad no se realizan.

Pasos siguientes

Para más información sobre cómo rotar los secretos de la infraestructura de Azure Stack Hub, visite Rotación de secretos en Azure Stack Hub.