Поделиться через


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Совет

Существующие пулы нельзя обновить с помощью расширения виртуальной машины 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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, можно временно задать параметру requireInitialSync значение false и повторно развернуть пул. После этого, когда вычислительный узел находится в состоянии простоя, вы можете войти в вычислительный узел, чтобы проверить журналы расширений KeyVault на наличие ошибок и устранить проблемы с конфигурацией. Ознакомьтесь с дополнительной информацией по расширению Key Vault, перейдя по следующей ссылке на документацию.

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