Como girar segredos para Hubs de Eventos no Azure Stack Hub

Este artigo mostrará como girar os segredos usados pelo provedor de recursos dos Hubs de Eventos.

Visão geral e pré-requisitos

Observação

Atualmente, a rotação de segredos para provedores de recursos de adição de valor (RPs) só tem suporte por meio do PowerShell. Além disso, você deve girar proativamente segredos para RPs de valor agregado regularmente, pois os alertas administrativos não são gerados no momento.

Assim como a infraestrutura do Azure Stack Hub, os provedores de recursos de valor agregado usam segredos internos e externos. Os segredos podem assumir várias formas, incluindo senhas e chaves de criptografia mantidas por certificados X509. Como operador, você é responsável por:

  • Fornecer segredos externos atualizados, como um novo certificado TLS usado para proteger os pontos de extremidade do provedor de recursos.
  • Gerenciando a rotação de segredo do provedor de recursos regularmente.

Em preparação para o processo de alternância:

  1. Revise os requisitos de certificado de infraestrutura de chave pública (PKI) do Azure Stack Hub para obter informações de pré-requisito importantes antes de adquiri/renovar seu certificado X509, incluindo detalhes sobre o formato PFX necessário. Revise também os requisitos especificados na seção de certificados PaaS opcionais, para seu provedor de recursos de valor agregado específico.

  2. Se ainda não o fez, instale o módulo do Azure PowerShell para Azure Stack Hub antes de continuar. A versão 2.0.2 prévia ou posterior é necessária para a alternância de segredos do Azure Stack Hub. Para obter mais informações, confira Migrar do AzureRM para o Azure PowerShell no Azure Stack Hub.

Preparar um novo certificado TLS

Em seguida, crie ou renove seu certificado TLS para proteger os pontos de extremidade do provedor de recursos de valor agregado:

  1. Conclua as etapas em Gerar solicitações de assinatura de certificado (CSRs) para renovação de certificado para seu provedor de recursos. Aqui, você usa a ferramenta Verificador de Prontidão do Azure Stack Hub para criar o CSR. Certifique-se de executar o cmdlet correto para o seu provedor de recursos, na etapa "Gerar solicitações de certificado para outros serviços do Azure Stack Hub". Por exemplo, New-AzsHubEventHubsCertificateSigningRequest é usado para Hubs de Eventos. Quando terminar, você enviará o gerado. Arquivo REQ para a AC (Autoridade de Certificação) para o novo certificado.

  2. Depois de receber o arquivo de certificado da CA, conclua as etapas em Preparar certificados para implantação ou alternância. Use a ferramenta Verificador de Prontidão novamente para processar o arquivo retornado da CA.

  3. Por fim, conclua as etapas em Validar certificados PKI do Azure Stack Hub. Use a ferramenta Verificador de Prontidão mais uma vez para executar testes de validação em seu novo certificado.

Alternar segredos

Por fim, determine as propriedades de implantação mais recentes do provedor de recursos e use-as para concluir o processo de alternância de segredos.

Determinar propriedades de implantação

Os provedores de recursos são implantados em seu ambiente Azure Stack Hub como um pacote de produtos com controle de versão. Os pacotes são atribuídos a uma ID de pacote exclusiva, no formato '<product-id>.<installed-version>'. Em que <product-id> é uma cadeia de caracteres exclusiva que representa o provedor de recursos e <installed-version> representa uma versão específica. Os segredos associados a cada pacote são armazenados no serviço Key Vault do Azure Stack Hub.

Abra um console elevado do PowerShell e conclua as etapas a seguir para determinar as propriedades necessárias para alternar os segredos do provedor de recursos:

  1. Entre em seu ambiente do Azure Stack Hub usando suas credenciais de operador. Confira Conectar-se ao Azure Stack Hub com o script de entrada do PowerShell para PowerShell. Use os cmdlets do Azure PowerShell Az (em vez de AzureRM) e substitua todos os valores de espaço reservado, como URLs de ponto de extremidade e nome do locatário do diretório.

  2. Execute o cmdlet Get-AzsProductDeployment para recuperar uma lista das implantações mais recentes do provedor de recursos. A coleção "value" retornada contém um elemento para cada provedor de recursos implantado. Encontre o provedor de recursos de interesse e anote os valores dessas propriedades:

    • "name" – contém a ID do produto do provedor de recursos no segundo segmento do valor.
    • "properties"."deployment"."version" – contém o número da versão atualmente implantada.

    No exemplo a seguir, observe a implantação de RP dos Hubs de Eventos no primeiro elemento da coleção, que tem uma ID de produto de "microsoft.eventhub"e versão "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. Crie a ID do pacote do provedor de recursos concatenando a ID do produto e a versão do provedor de recursos. Por exemplo, usando os valores derivados na etapa anterior, a ID do pacote do provedor de recursos do Hubs de Eventos é microsoft.eventhub.1.2003.0.0.

  4. Usando a ID do pacote derivada na etapa anterior, execute Get-AzsProductSecret -PackageId para recuperar a lista de tipos de segredo que estão sendo usados pelo provedor de recursos. Na coleção value retornada, encontre o elemento que contém um valor de "Certificate" para a propriedade "properties"."secretKind". Esse elemento contém propriedades para o segredo do certificado do provedor de recursos. Anote o nome atribuído a este segredo de certificado, que é identificado pelo último segmento da propriedade "name", logo acima de "properties".

    No exemplo a seguir, a coleção de segredos retornada para o RP dos Hubs de Eventos contém um "Certificate" segredo chamado 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"
                                        }
                        },
                        ...
                    ]
    }
    

Alternar os segredos

  1. Use o cmdlet Set-AzsProductSecret para importar seu novo certificado para Key Vault, que será usado pelo processo de alternância. Substitua os valores de espaço reservado da variável conforme necessário antes de executar o script:

    Espaço reservado Descrição Valor de exemplo
    <product-id> A ID do produto da implantação mais recente do provedor de recursos. microsoft.eventhub
    <installed-version> A versão da implantação mais recente do provedor de recursos. 1.2003.0.0
    <cert-secret-name> O nome sob o qual o segredo do certificado é armazenado. aseh-ssl-gateway-pfx
    <cert-pfx-file-path> O caminho para o arquivo PFX do certificado. C:\dir\eh-cert-file.pfx
    <pfx-password> A senha atribuída ao seu certificado . Arquivo PFX. 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 fim, use o Invoke-AzsProductRotateSecretsAction cmdlet para girar os segredos internos e externos:

    Observação

    Leva aproximadamente 3,5 a 4 horas para concluir o processo de rotação.

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

    Você pode monitorar o progresso da alternância de segredos no console do PowerShell ou no portal do administrador, selecionando o provedor de recursos no serviço do Marketplace:

    secret-rotation-progress

Solução de problemas

A rotação de segredo deve ser concluída com êxito sem erros. Se você enfrentar qualquer uma das seguintes condições no portal do administrador, abra uma solicitação de suporte para assistência:

  • Problemas de autenticação, incluindo problemas de conexão com o provedor de recursos dos Hubs de Eventos.
  • Não é possível atualizar o provedor de recursos ou editar parâmetros de configuração.
  • As métricas de uso não estão sendo exibidas.
  • As contas não estão sendo geradas.
  • Backups não estão ocorrendo.

Próximas etapas

Para obter detalhes sobre como girar seus segredos de infraestrutura do Azure Stack Hub, visite Girar segredos no Azure Stack Hub.