Compartilhar via


Como habilitar a rotação automática de certificado em um pool do lote

Você pode criar um pool do Lote com um certificado que pode ser renovado automaticamente. Para fazer isso, o pool deve ser criado com uma identidade gerenciada atribuída pelo usuário que tem acesso ao certificado no Azure Key Vault.

Criar uma identidade atribuída pelo usuário

Primeiro, crie sua identidade gerenciada atribuída ao usuário no mesmo locatário da sua conta do Lote. Essa identidade gerenciada não precisa estar no mesmo grupo de recursos e nem na mesma assinatura.

Certifique-se de anotar a ID do cliente da identidade gerenciada atribuída ao usuário. Você precisará desse valor mais tarde.

Captura de tela mostrando a ID do cliente de uma identidade gerenciada atribuída ao usuário no portal do Azure.

Como criar o seu certificado

Em seguida, você precisa criar um certificado e adicioná-lo ao Azure Key Vault. Você precisa criar um cofre de chaves antes, caso ainda não tenha feito isso. Para orientações, consulte Início Rápido: definir e recuperar um certificado do Azure Key Vault usando o portal do Azure.

Ao criar o seu certificado, certifique-se de definir o Tipo de Ação de Tempo de Vida para renovar automaticamente e de especificar o número de dias no qual o certificado deverá ser renovado.

Captura de tela mostrando a criação de certificado no portal do Azure.

Anote o seu Identificador Secreto depois que o certificado for criado. Você precisará desse valor mais tarde.

Captura de tela mostrando o Identificador Secreto de um certificado.

Como adicionar uma política de acesso no Azure Key Vault

No cofre de chaves, atribua uma política de acesso Key Vault que permita à sua identidade gerenciada atribuída ao usuário acessar segredos e certificados. Consulte este guia para saber como atribuir uma política de acesso Key Vault usando o portal do Azure.

Como criar um pool do Lote com identidades gerenciadas atribuídas ao usuário

Crie um pool do Lote com a sua identidade gerenciada usando a biblioteca de gerenciamento do .NET do Lote. Consulte Configurar identidades gerenciadas em pools do Lote para saber mais.

Dica

Os pools existentes não podem ser atualizados com a extensão de VM do Key Vault. Você precisará recriar seu pool.

O exemplo a seguir usa a API REST de gerenciamento do Lote para criar um pool. Certifique-se de usar o Identificador Secreto do certificado para observedCertificates e a ID do cliente da sua identidade gerenciada para msiClientId, substituindo os dados de exemplo abaixo.

URI da API REST

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

Corpo da solicitação de nó do 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": {}
    }
  }
}

Corpo da Solicitação para o nó do 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": {}
        }
    }
}

Validar o certificado

Faça logon no nó de computação para confirmar que o certificado foi implantado com êxito. Será exibida uma saída semelhante à seguinte:

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#

Solução de problemas da extensão do Key Vault

Se a extensão do Key Vault estiver configurada incorretamente, o nó de computação poderá estar em estado utilizável. Para solucionar problemas de falha de extensão do Key Vault, você pode definir temporariamente requireInitialSync como false e reimplantar seu pool; em seguida, quando o nó de computação estiver em estado ocioso, você poderá fazer logon no nó de computação para verificar se há erros nos logs de extensão do KeyVault e corrigir os problemas de configuração. Visite o link do documento de extensão do Key Vault a seguir para obter mais informações.

Próximas etapas