Come ruotare i segreti per gli hub eventi nell'hub Azure StackHow to rotate secrets for Event Hubs on Azure Stack Hub

Questo articolo illustra come ruotare i segreti usati dal provider di risorse di hub eventi.This article will show you how to rotate the secrets used by the Event Hubs resource provider.

Panoramica e prerequisitiOverview and prerequisites

Nota

La rotazione del segreto per i provider di risorse di aggiunta di valori è attualmente supportata solo tramite PowerShell.Secret rotation for value-add resource providers is currently only supported via PowerShell.

Analogamente all'infrastruttura di Azure Stack Hub, i provider di risorse a valore aggiunto utilizzano i segreti interni ed esterni.Like the Azure Stack Hub infrastructure, value-add resource providers use both internal and external secrets. I segreti possono assumere più forme, incluse le password e le chiavi di crittografia gestite dai certificati X509.Secrets can take multiple forms, including passwords and the encryption keys maintained by X509 certificates. Un operatore è responsabile di:As an operator, you're responsible for:

  • Fornire segreti esterni aggiornati, ad esempio un nuovo certificato TLS usato per proteggere gli endpoint del provider di risorse.Providing updated external secrets, such as a new TLS certificate used to secure resource provider endpoints.
  • Gestione regolare della rotazione del segreto del provider di risorse.Managing resource provider secret rotation on a regular basis.

Per preparare il processo di rotazione:In preparation for the rotation process:

  1. Esaminare Azure stack requisiti dei certificati dell'infrastruttura a chiave pubblica (PKI) dell'hub per informazioni importanti sui prerequisiti prima di acquisire o rinnovare il certificato X509, inclusi i dettagli sul formato pfx necessario.Review Azure Stack Hub public key infrastructure (PKI) certificate requirements for important prerequisite information before acquiring/renewing your X509 certificate, including details on the required PFX format. Esaminare anche i requisiti specificati nella sezione facoltativa PaaS Certificatesper un valore specifico, ovvero aggiungere un provider di risorse.Also review the requirements specified in the Optional PaaS certificates section, for your specific value-add resource provider.

  2. Se non è già stato fatto, installare PowerShell AZ Module for Azure stack Hub prima di continuare.If you haven't already, Install PowerShell Az module for Azure Stack Hub before continuing. Per la rotazione del segreto dell'hub Azure Stack è necessaria la versione 2.0.2-Preview o successiva.Version 2.0.2-preview or later is required for Azure Stack Hub secret rotation. Per altre informazioni, vedere eseguire la migrazione da AzureRM a Azure PowerShell AZ nell'Hub Azure stack.For more information, see Migrate from AzureRM to Azure PowerShell Az in Azure Stack Hub.

Preparare un nuovo certificato TLSPrepare a new TLS certificate

Successivamente, creare o rinnovare il certificato TLS per proteggere gli endpoint del provider di risorse Aggiungi valore:Next, create or renew your TLS certificate for securing the value-add resource provider endpoints:

  1. Completare i passaggi in generare richieste di firma del certificato (i CSR) per il rinnovo del certificato per il provider di risorse.Complete the steps in Generate certificate signing requests (CSRs) for certificate renewal for your resource provider. Qui si usa lo strumento di controllo della conformità dell'hub Azure Stack per creare la CSR.Here you use the Azure Stack Hub Readiness Checker tool to create the CSR. Assicurarsi di eseguire il cmdlet corretto per il provider di risorse, nel passaggio "generare richieste di certificati per altri servizi dell'hub Azure Stack".Be sure to run the correct cmdlet for your resource provider, in the step "Generate certificate requests for other Azure Stack Hub services". Ad esempio New-AzsHubEventHubsCertificateSigningRequest , viene usato per gli hub eventi.For example New-AzsHubEventHubsCertificateSigningRequest is used for Event Hubs. Al termine, inviare il generato. File REQ nell'autorità di certificazione (CA) per il nuovo certificato.When finished, you submit the generated .REQ file to your Certificate Authority (CA) for the new certificate.

  2. Dopo aver ricevuto il file del certificato dalla CA, completare la procedura descritta in preparare i certificati per la distribuzione o la rotazione.Once you've received your certificate file from the CA, complete the steps in Prepare certificates for deployment or rotation. Per elaborare il file restituito dalla CA, utilizzare nuovamente lo strumento di controllo dello stato di preparazione.You use the Readiness Checker tool again, to process the file returned from the CA.

  3. Infine, completare la procedura descritta in convalidare i certificati PKI dell'Hub Azure stack.Finally, complete the steps in Validate Azure Stack Hub PKI certificates. Per eseguire test di convalida sul nuovo certificato, è necessario utilizzare lo strumento di controllo della conformità ancora una volta.You use the Readiness Checker tool once more, to perform validation tests on your new certificate.

Ruota i segretiRotate secrets

Determinare infine le proprietà di distribuzione più recenti del provider di risorse e usarle per completare il processo di rotazione dei segreti.Finally, determine the resource provider's latest deployment properties and use them to complete the secret rotation process.

Determinare le proprietà di distribuzioneDetermine deployment properties

I provider di risorse vengono distribuiti nell'ambiente dell'hub Azure Stack come pacchetto del prodotto con versione.Resource providers are deployed into your Azure Stack Hub environment as a versioned product package. Ai pacchetti viene assegnato un ID pacchetto univoco, nel formato '<product-id>.<installed-version>' .Packages are assigned a unique package ID, in the format '<product-id>.<installed-version>'. Dove <product-id> è una stringa univoca che rappresenta il provider di risorse e <installed-version> rappresenta una versione specifica.Where <product-id> is a unique string representing the resource provider, and <installed-version> represents a specific version. I segreti associati a ogni pacchetto vengono archiviati nel servizio Key Vault Hub Azure Stack.The secrets associated with each package are stored in the Azure Stack Hub Key Vault service.

Aprire una console di PowerShell con privilegi elevati e completare i passaggi seguenti per determinare le proprietà necessarie per ruotare i segreti del provider di risorse:Open an elevated PowerShell console and complete the following steps to determine the properties required to rotate the resource provider's secrets:

  1. Accedere all'ambiente di Azure Stack hub usando le credenziali dell'operatore.Sign in to your Azure Stack Hub environment using your operator credentials. Vedere connettersi all'Hub Azure stack con PowerShell per lo script di accesso PowerShell.See Connect to Azure Stack Hub with PowerShell for PowerShell sign-in script. Assicurarsi di usare i cmdlet di PowerShell AZ (anziché AzureRM) e sostituire tutti i valori segnaposto, ad esempio gli URL dell'endpoint e il nome del tenant di directory.Be sure to use the PowerShell Az cmdlets (instead of AzureRM), and replace all placeholder values, such as endpoint URLs and directory tenant name.

  2. Eseguire il Get-AzsProductDeployment cmdlet per recuperare un elenco delle distribuzioni più recenti del provider di risorse.Run the Get-AzsProductDeployment cmdlet to retrieve a list of the latest resource provider deployments. La raccolta restituita "value" contiene un elemento per ogni provider di risorse distribuito.The returned "value" collection contains an element for each deployed resource provider. Trovare il provider di risorse di interesse e prendere nota dei valori per queste proprietà:Find the resource provider of interest and make note of the values for these properties:

    • "name" : contiene l'ID del prodotto del provider di risorse nel secondo segmento del valore."name" - contains the resource provider product ID in the second segment of the value.
    • "properties"."deployment"."version" : contiene il numero di versione attualmente distribuito."properties"."deployment"."version" - contains the currently deployed version number.

    Nell'esempio seguente si noti la distribuzione RP di hub eventi nel primo elemento della raccolta, che ha un ID prodotto "microsoft.eventhub" , e la versione "1.2003.0.0" :In the following example, notice the Event Hubs RP deployment in the first element in the collection, which has a product ID of "microsoft.eventhub", and version "1.2003.0.0":

    PS C:\WINDOWS\system32> Get-AzsProductDeployment -AsJson
    VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/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/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productDeployments/microsoft.eventhub",
                          "name":  "global/microsoft.eventhub",
                          "type":  "Microsoft.Deployment.Admin/locations/productDeployments",
                          "properties":  {
                                             "status":  "DeploymentSucceeded",
                                             "subscriptionId":  "b37ae55a-a6c6-4474-ba97-81519412adf5",
                                             "deployment":  {
                                                                "version":  "1.2003.0.0",
                                                                "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                                "parameters":  {
    
                                                                               }
                                                            },
                                             "lastSuccessfulDeployment":  {
                                                                              "version":  "1.2003.0.0",
                                                                              "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                                              "parameters":  {
    
                                                                                             }
                                                                          },
                                             "provisioningState":  "Succeeded"
                                         }
                      },
                      {
                      ...
                      }
                  ]
    }
    
  3. Compilare l'ID pacchetto del provider di risorse concatenando l'ID prodotto e la versione del provider di risorse.Build the resource provider's package ID, by concatenating the resource provider product ID and version. Ad esempio, usando i valori derivati nel passaggio precedente, l'ID del pacchetto RP di hub eventi è microsoft.eventhub.1.2003.0.0 .For example, using the values derived in the previous step, the Event Hubs RP package ID is microsoft.eventhub.1.2003.0.0.

  4. Utilizzando l'ID del pacchetto derivato nel passaggio precedente, eseguire Get-AzsProductSecret -PackageId per recuperare l'elenco dei tipi di segreto utilizzati dal provider di risorse.Using the package ID derived in the previous step, run Get-AzsProductSecret -PackageId to retrieve the list of secret types being used by the resource provider. Nella raccolta restituita value trovare l'elemento contenente il valore "Certificate" per la "properties"."secretKind" Proprietà.In the returned value collection, find the element containing a value of "Certificate" for the "properties"."secretKind" property. Questo elemento contiene le proprietà per il segreto del certificato del relying party.This element contains properties for the RP's certificate secret. Prendere nota del nome assegnato a questo segreto del certificato, identificato dall'ultimo segmento della "name" proprietà, appena sopra "properties" .Make note of the name assigned to this certificate secret, which is identified by the last segment of the "name" property, just above "properties".

    Nell'esempio seguente la raccolta Secrets restituita per la RP di hub eventi contiene un "Certificate" segreto denominato aseh-ssl-gateway-pfx .In the following example, the secrets collection returned for the Event Hubs RP contains a "Certificate" secret named 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/ze22ca96-z546-zbc6-z566-z35f68799816/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/ze22ca96-z546-zbc6-z566-z35f68799816/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"
                                        }
                        },
                        ...
                    ]
    }
    

Ruotare i segretiRotate the secrets

  1. Usare il Set-AzsProductSecret cmdlet per importare il nuovo certificato in Key Vault, che verrà usato dal processo di rotazione.Use the Set-AzsProductSecret cmdlet to import your new certificate to Key Vault, which will be used by the rotation process. Sostituire i valori segnaposto della variabile di conseguenza prima di eseguire lo script:Replace the variable placeholder values accordingly before running the script:

    SegnapostoPlaceholder DescrizioneDescription Valore di esempioExample value
    <product-id> ID prodotto della distribuzione del provider di risorse più recente.The product ID of the latest resource provider deployment. microsoft.eventhub
    <installed-version> Versione della distribuzione del provider di risorse più recente.The version of the latest resource provider deployment. 1.2003.0.0
    <cert-secret-name> Nome con cui viene archiviato il segreto del certificato.The name under which the certificate secret is stored. aseh-ssl-gateway-pfx
    <cert-pfx-file-path> Percorso del file PFX del certificato.The path to your certificate PFX file. C:\dir\eh-cert-file.pfx
    <pfx-password> Password assegnata al certificato. File PFX.The password assigned to your certificate .PFX file. 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. Infine, usare il Invoke-AzsProductRotateSecretsAction cmdlet per ruotare i segreti interni ed esterni:Finally, use the Invoke-AzsProductRotateSecretsAction cmdlet to rotate the internal and external secrets:

    Nota

    Per completare il processo di rotazione sono necessarie circa 3,5-4 ore.It takes approximately 3.5 - 4 hours to complete the rotation process.

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

    È possibile monitorare lo stato della rotazione del segreto nella console di PowerShell o nel portale di amministrazione selezionando il provider di risorse nel servizio Marketplace:You can monitor secret rotation progress in either the PowerShell console, or in the administrator portal by selecting the resource provider in the Marketplace service:

    Secret-Rotation-Progresssecret-rotation-progress

Risoluzione dei problemiTroubleshooting

La rotazione del segreto deve essere completata senza errori.Secret rotation should complete successfully without errors. Se si verifica una delle condizioni seguenti nel portale di amministrazione, aprire una richiesta di supporto per assistenza:If you experience any of the following conditions in the administrator portal, open a support request for assistance:

  • Problemi di autenticazione, inclusi i problemi di connessione al provider di risorse di hub eventi.Authentication issues, including problems connecting to the Event Hubs resource provider.
  • Non è possibile aggiornare il provider di risorse o modificare i parametri di configurazione.Unable to upgrade resource provider, or edit configuration parameters.
  • Le metriche di utilizzo non vengono visualizzate.Usage metrics aren't showing.
  • Non vengono generate fatture.Bills aren't being generated.
  • I backup non sono in corso.Backups aren't occurring.

Passaggi successiviNext steps

Per informazioni dettagliate sulla rotazione dei segreti dell'infrastruttura di Azure Stack Hub, vedere ruotare i segreti nell'hub Azure stack.For details on rotating your Azure Stack Hub infrastructure secrets, visit Rotate secrets in Azure Stack Hub.