Смена секретов для Центров событий в Azure Stack Hub

В этой статье показано, как сменить секреты, используемые поставщиком ресурсов Центров событий.

Обзор и предварительные требования

Примечание

Смена секретов для поставщиков ресурсов с добавленной стоимостью (RP) в настоящее время поддерживается только с помощью PowerShell. Кроме того, необходимо регулярно менять секреты для запросов с дополнительными преимуществами, так как административные оповещения в настоящее время не создаются.

Как и инфраструктура Azure Stack Hub, поставщики дополнительных ресурсов используют как внутренние, так и внешние секреты. Секреты могут принимать разные формы, включая пароли и ключи шифрования, поддерживаемые сертификатами X509. Как оператор, вы отвечаете за:

  • предоставление обновленных внешних секретов, таких как новый сертификат TLS, используемый для защиты конечных точек поставщика ресурсов;
  • Регулярное управление сменой секретов поставщика ресурсов.

При подготовке к процессу смены:

  1. Ознакомьтесь с требованиями к сертификату инфраструктуры открытого ключа (PKI) Azure Stack Hub, чтобы получить важную предварительную информацию перед приобретением или продлением сертификата X509, включая сведения о требуемом формате PFX. Также ознакомьтесь с требованиями, указанными в разделе Необязательные сертификаты PaaS для вашего конкретного поставщика дополнительных ресурсов.

  2. Если вы еще этого не сделали, установите модуль PowerShell Az для Azure Stack Hub, прежде чем продолжать. Для смены секретов Azure Stack Hub требуется предварительная версия 2.0.2 или более поздняя. Дополнительные сведения см. в разделе Миграция с AzureRM на Azure PowerShell Az в Azure Stack Hub.

Подготовка нового TLS-сертификата

Затем создайте или обновите свой TLS-сертификат для защиты конечных точек поставщика дополнительных ресурсов:

  1. Выполните действия, описанные в разделе Создание запросов на подпись сертификатов (CSR) для обновления сертификата для вашего поставщика ресурсов. Здесь вы используете средство проверки готовности Azure Stack Hub для создания CSR. Обязательно запустите правильный командлет для вашего поставщика ресурсов на шаге "Создание запросов сертификатов для других служб Azure Stack Hub". Например, New-AzsHubEventHubsCertificateSigningRequest используется для Центров событий. По завершении вы отправляете созданный объект . REQ-файл в центр сертификации (ЦС) для нового сертификата.

  2. После получения файла сертификата от ЦС выполните действия, описанные в разделе Подготовка сертификатов к развертыванию или смене. Вам снова нужно использовать средство проверки готовности для обработки файла, возвращенного ЦС.

  3. Наконец, выполните действия, описанные в разделе Проверка сертификатов PKI Azure Stack Hub. Вы снова нужно использовать средство проверки готовности, чтобы выполнить проверочные тесты для вашего нового сертификата.

Смена секретов

Наконец, определите свойства последнего развертывания поставщика ресурсов и используйте их для завершения процесса смены секретов.

Определение свойств развертывания

Поставщики ресурсов развертываются в вашей среде Azure Stack Hub как пакет продукта с определенной версией. Пакетам присваивается уникальный идентификатор пакета в формате '<product-id>.<installed-version>'. Где <product-id> — это уникальная строка, представляющая поставщика ресурсов, а <installed-version> представляет конкретную версию. Секреты, связанные с каждым пакетом, хранятся в службе Key Vault Azure Stack Hub.

Откройте консоль PowerShell с повышенными привилегиями и выполните следующие действия, чтобы определить свойства, требуемые для смены секретов поставщика ресурсов:

  1. Войдите в среду Azure Stack Hub, используя учетные данные оператора. См. статью Подключение к Azure Stack Hub с помощью PowerShell для сценария входа в PowerShell. Обязательно используйте командлеты PowerShell Az (вместо AzureRM) и замените все значения заполнителей, такие как URL-адреса конечных точек и имя арендатора каталога.

  2. Выполните командлет Get-AzsProductDeployment, чтобы получить список последних развертываний поставщика ресурсов. Возвращаемая коллекция "value" содержит элемент для каждого развернутого поставщика ресурсов. Найдите интересующий вас поставщик ресурсов и запишите значения следующих свойств:

    • "name" – содержит идентификатор продукта поставщика ресурсов во втором сегменте значения;
    • "properties"."deployment"."version" – содержит номер развернутой версии.

    В следующем примере обратите внимание на развертывание RP Центров событий в первом элементе коллекции с идентификатором "microsoft.eventhub"продукта и версией "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. Создайте идентификатор пакета поставщика ресурсов, объединив идентификатор продукта поставщика ресурсов и версию. Например, при использовании значений, полученных на предыдущем шаге, идентификатор пакета RP концентраторов событий будет microsoft.eventhub.1.2003.0.0.

  4. Используя идентификатор пакета, полученный на предыдущем шаге, выполните Get-AzsProductSecret -PackageId, чтобы получить список типов секретов, используемых поставщиком ресурсов. В возвращенной коллекции value найдите элемент, содержащий значение "Certificate" для свойства "properties"."secretKind". Этот элемент содержит свойства для секрета сертификата RP. Запишите имя, присвоенное этому секрету сертификата, которое определяется последним сегментом свойства "name" сразу над "properties".

    В следующем примере коллекция секретов, возвращаемая для RP Центров событий, содержит секрет с "Certificate" именем 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"
                                        }
                        },
                        ...
                    ]
    }
    

Смена секретов

  1. Используйте командлет Set-AzsProductSecret для импорта нового сертификата в Key Vault, который будет использоваться в процессе смены. Перед выполнением скрипта замените значения заполнителей переменных соответствующим образом:

    Заполнитель Описание Пример значения
    <product-id> Идентификатор продукта последнего развертывания поставщика ресурсов. microsoft.eventhub
    <installed-version> Версия последнего развертывания поставщика ресурсов. 1.2003.0.0
    <cert-secret-name> Имя, под которым хранится секрет сертификата. aseh-ssl-gateway-pfx
    <cert-pfx-file-path> Путь к PFX-файлу сертификата. C:\dir\eh-cert-file.pfx
    <pfx-password> Пароль, назначенный сертификату . 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. Наконец, используйте Invoke-AzsProductRotateSecretsAction командлет для смены внутренних и внешних секретов:

    Примечание

    Процесс ротации занимает примерно 3,5–4 часа.

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

    Вы можете отслеживать ход смены секретов либо в консоли PowerShell, либо на портале администратора, выбрав поставщика ресурсов в службе Marketplace:

    secret-rotation-progress

Устранение неполадок

Смена секретов должна завершиться успешно без ошибок. Если на портале администрирования возникают какие-либо из следующих условий, отправьте запрос в службу поддержки :

  • Проблемы с проверкой подлинности, включая проблемы с подключением к поставщику ресурсов Центров событий.
  • Не удается обновить поставщик ресурсов или изменить параметры конфигурации.
  • Метрики использования не отображаются.
  • Счета не создаются.
  • Резервное копирование не выполняется.

Дальнейшие действия

Дополнительные сведения о смене секретов инфраструктуры Azure Stack Hub см. в статье Смена секретов в Azure Stack Hub.