Habilitar a rotação automática de certificados em um pool de lotes
Você pode criar um pool de lotes com um certificado que pode ser renovado automaticamente. Para fazer isso, seu pool deve ser criado com uma identidade gerenciada atribuída pelo usuário que tenha acesso ao certificado no Cofre da Chave do Azure.
Criar uma identidade atribuída pelo utilizador
Primeiro, crie sua identidade gerenciada atribuída pelo usuário no mesmo locatário que sua conta do Batch. Essa identidade gerenciada não precisa estar no mesmo grupo de recursos ou mesmo na mesma assinatura.
Certifique-se de anotar a ID do Cliente da identidade gerenciada atribuída pelo usuário. Vai precisar deste valor mais à frente.
Crie o seu certificado
Em seguida, você precisa criar um certificado e adicioná-lo ao Cofre da Chave do Azure. Se você ainda não criou um cofre de chaves, você precisa fazer isso primeiro. Para obter instruções, consulte Guia de início rápido: definir e recuperar um certificado do Cofre de Chaves do Azure usando o portal do Azure.
Ao criar seu certificado, certifique-se de definir Tipo de ação vitalício para renovar automaticamente e especifique o número de dias após os quais o certificado deve ser renovado.
Depois que o certificado for criado, anote seu Identificador Secreto. Vai precisar deste valor mais à frente.
Adicionar uma política de acesso no Azure Key Vault
No cofre de chaves, atribua uma política de acesso ao Cofre da Chave que permita que sua identidade gerenciada atribuída pelo usuário acesse segredos e certificados. Para obter instruções detalhadas, consulte Atribuir uma política de acesso ao Cofre da Chave usando o portal do Azure.
Criar um pool de lotes com uma identidade gerenciada atribuída pelo usuário
Crie um pool de lotes com sua identidade gerenciada usando a biblioteca de gerenciamento .NET em lote. Para obter mais informações, consulte Configurar identidades gerenciadas em pools de lotes.
Gorjeta
Os pools existentes não podem ser atualizados com a extensão de VM do Cofre da Chave. Terá de recriar a sua piscina.
O exemplo a seguir usa a API REST de gerenciamento de lote para criar um pool. Certifique-se de usar o Identificador Secreto do seu certificado e observedCertificates
o 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 para o nó 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": {}
}
}
}
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ACR/providers/Microsoft.ManagedIdentity/userAssignedIdentities/testumaforpools": {}
}
}
}
Validar o certificado
Para confirmar que o certificado foi implantado com êxito, faça login no nó de computação. Deverá ver um resultado semelhante ao 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 Key Vault
Se a extensão do Cofre da Chave 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, o nó de computação está em estado ocioso, você pode fazer login 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 seguinte link do documento de extensão do Key Vault para obter mais informações.
Próximos passos
- Saiba mais sobre Identidades gerenciadas para recursos do Azure.
- Saiba como usar chaves gerenciadas pelo cliente com identidades gerenciadas pelo usuário.