Включение автоматической смены сертификатов в пуле пакетной службы

Пул пакетной службы можно создать с сертификатом, который можно обновить автоматически. Для этого необходимо создать пул с назначаемого пользователем управляемого удостоверения , имеющего доступ к сертификату в Azure Key Vault.

Создание назначаемого пользователем удостоверения

Сначала создайте управляемое удостоверение, назначаемое пользователем, в одном клиенте с учетной записью пакетной службы. Это управляемое удостоверение не должно находиться в одной группе ресурсов или даже в той же подписке.

Обязательно укажите идентификатор клиента управляемого удостоверения, назначенного пользователем. Это значение понадобится позже.

На снимке экрана показан идентификатор клиента управляемого удостоверения, назначенного пользователем, в портале Microsoft Azure.

Создание сертификата

Затем необходимо создать сертификат и добавить его в Azure Key Vault. Если вы еще не создали хранилище ключей, необходимо сначала сделать это. Инструкции см. в статье Быстрое начало: настройка и получение сертификата из Azure Key Vault с помощью портала Microsoft Azure.

Создавая сертификат, не забудьте задать автоматическое продление для параметра Тип действия времени существования и указать срок, по истечении которого сертификат необходимо продлить.

Снимок экрана создания сертификата на портале Microsoft Azure.

После создания сертификата запишите его идентификатор секрета. Это значение понадобится позже.

Снимок экрана, показывающий идентификатор секрета для сертификата.

Добавление политики доступа в Azure Key Vault

В хранилище ключей назначьте политику доступа Azure Key Vault, которая позволяет управляемому удостоверению, назначаемому пользователем, получать доступ к секретам и сертификатам. Подробные инструкции см. в статье Назначение политики доступа Key Vault с помощью портала Microsoft Azure.

Создание пула пакетной службы с управляемым удостоверением, назначаемым пользователем

Создайте пул пакетной службы с управляемым удостоверением, используя библиотеку управления пакетной службы .NET. Дополнительные сведения см. в статье Настройка управляемых удостоверений в пулах пакетной службы.

Совет

Существующие пулы нельзя обновить с помощью расширения виртуальной машины Key Vault. Вам потребуется повторно создать пул.

В следующем примере для создания пула используется REST API для управления пакетной службой. Не забудьте использовать идентификатор секрета вашего сертификата для observedCertificates и идентификатора клиента управляемого удостоверения для msiClientId, заменив данные из приведенного ниже примера.

Универсальный код ресурса (URI) REST API

PUT https://management.azure.com/subscriptions/<subscriptionid>/resourceGroups/<resourcegroupName>/providers/Microsoft.Batch/batchAccounts/<batchaccountname>/pools/<poolname>?api-version=2021-01-01

Текст запроса для узла Linux

{
  "name": "test2",
  "type": "Microsoft.Batch/batchAccounts/pools",
  "properties": {
    "vmSize": "STANDARD_DS2_V2",
    "taskSchedulingPolicy": {
      "nodeFillType": "Pack"
    },
    "deploymentConfiguration": {
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "canonical",
          "offer": "ubuntuserver",
          "sku": "20.04-lts",
          "version": "latest"
        },
        "nodeAgentSkuId": "batch.node.ubuntu 20.04",
        "extensions": [
          {
            "name": "KVExtensions",
            "type": "KeyVaultForLinux",
            "publisher": "Microsoft.Azure.KeyVault",
            "typeHandlerVersion": "3.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "secretsManagementSettings": {
                "pollingIntervalInS": "300",
                "certificateStoreLocation": "/var/lib/waagent/Microsoft.Azure.KeyVault",
                "requireInitialSync": true,
                "observedCertificates": [
                  "https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af"
                ]
              },
              "authenticationSettings": {
                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                "msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
              }
            }
          }
        ]
      }
    },
    "scaleSettings": {
      "fixedScale": {
        "targetDedicatedNodes": 1,
        "resizeTimeout": "PT15M"
      }
    }
  },
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/042998e4-36dc-4b7d-8ce3-a7a2c4877d33/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
    }
  }
}

Текст запроса для узла Windows

{
    "name": "test2",
    "type": "Microsoft.Batch/batchAccounts/pools",
    "properties": {
        "vmSize": "STANDARD_DS2_V2",
        "taskSchedulingPolicy": {
            "nodeFillType": "Pack"
        },
        "deploymentConfiguration": {
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "microsoftwindowsserver",
                    "offer": "windowsserver",
                    "sku": "2022-datacenter",
                    "version": "latest"
                },
                "nodeAgentSkuId": "batch.node.windows amd64",
                "extensions": [
                    {
                        "name": "KVExtensions",
                        "type": "KeyVaultForWindows",
                        "publisher": "Microsoft.Azure.KeyVault",
                        "typeHandlerVersion": "3.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "secretsManagementSettings": {
                                "pollingIntervalInS": "300",
                                "requireInitialSync": true,
                                "observedCertificates": [
                                    {
                                        "url": "https://testkvwestus2s.vault.azure.net/secrets/authcertforumatesting/8f5f3f491afd48cb99286ba2aacd39af",
                                        "certificateStoreLocation": "LocalMachine",
                                        "keyExportable": true
                                    }
                                ]
                            },
                            "authenticationSettings": {
                                "msiEndpoint": "http://169.254.169.254/metadata/identity",
                                "msiClientId": "b9f6dd56-d2d6-4967-99d7-8062d56fd84c"
                            }
                        },
                    }
               ]
            }
        },
        "scaleSettings": {
            "fixedScale": {
                "targetDedicatedNodes": 1,
                "resizeTimeout": "PT15M"
            }
        },
    },
    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/042998e4-36dc-4b7d-8ce3-a7a2c4877d33/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
        }
    }
}

Проверка сертификата

Чтобы убедиться, что сертификат успешно развернут, войдите на вычислительный узел. Вы должны увидеть результат, аналогичный приведенному ниже:

root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status# cat 1.status
[{"status":{"code":0,"formattedMessage":{"lang":"en","message":"Successfully started Key Vault extension service. 2021-03-03T23:12:23Z"},"operation":"Service start.","status":"success"},"timestampUTC":"2021-03-03T23:12:23Z","version":"1.0"}]root@74773db5fe1b42ab9a4b6cf679d929da000000:/var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux-1.0.1363.13/status#

Устранение неполадок с расширением Key Vault

Если расширение Key Vault настроено неправильно, вычислительный узел может находиться в состоянии, доступном для использования. Чтобы устранить сбой расширения Key Vault, можно временно задать значение false и повторно развернуть пул, а вычислительный узел находится в состоянии простоя, вы можете войти в вычислительный узел, чтобы проверка журналы расширений KeyVault для ошибок и устранения проблем конфигурации. Дополнительные сведения см. по ссылке на документацию по расширению Key Vault.

Следующие шаги