Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A extensão de máquina virtual (VM) do Azure Key Vault fornece atualização automática de certificados armazenados em um cofre de chaves do Azure. A extensão monitora uma lista de certificados observados armazenados em cofres de chaves. Quando deteta uma alteração, a extensão recupera e instala os certificados correspondentes. Este artigo descreve as plataformas, configurações e opções de implantação suportadas para a extensão de VM do Cofre da Chave para Windows.
Observação
Experimenta o VM assist para diagnósticos mais rápidos. Recomendamos que execute o VM assist para Windows ou o VM assist para Linux. Essas ferramentas de diagnóstico baseadas em script ajudam você a identificar problemas comuns que afetam o Agente Convidado da VM do Azure e a integridade geral da VM.
Se estiver a experienciar problemas de desempenho com máquinas virtuais, antes de contactar o suporte, execute estas ferramentas.
Sistemas operacionais
A extensão Key Vault VM suporta Windows Server 2022 e Windows Server 2025, tanto em AMD64 como em ARM64. No Windows Server 2025, as chaves privadas são guardadas no KeyGuard.
Observação
A versão 4.0 da extensão Key Vault VM não se instala no Windows Server 2019 ou anteriores.
Certificados suportados
A extensão de VM do Cofre de Chaves suporta os seguintes tipos de conteúdos de certificados:
- PKCS #12
- PEM
Observação
A extensão VM do Cofre de Chaves baixa todos os certificados para o armazenamento de certificados do Windows ou para o local especificado na propriedade certificateStoreLocation nas configurações de extensão da VM.
Caraterísticas
A extensão VM Key Vault para Windows versão 4.0:
- Instala chaves privadas no KeyGuard se estiver a correr no Windows Server 2025.
- Instala as duas versões mais recentes de cada certificado.
- Realiza a validação da cadeia de certificados antes de instalar qualquer certificado que contenha o TLS Server Authentication Extended Key Usage (EKU), incluindo certificados que transportam outros EKUs juntamente (como a Autenticação do Cliente). Erros de validação em cadeia resultam numa falha de provisionamento para a extensão. Certificados sem a EKU de Autenticação do Servidor não estão sujeitos a esta verificação.
Atualização da versão 3.0
Se estiver a atualizar a partir da 3.0, as seguintes funcionalidades são alteradas ou removidas:
-
pollingIntervalInSestá agora limitado a entre 5 e 60 minutos. Por padrão, as sondagens são realizadas uma vez por hora. -
linkOnRenewalé removido. A ligação ocorre sempre. -
keyExportableé removido. As chaves privadas já não são exportáveis. -
requireInitialSyncé removido. A extensão só reporta sucesso se todos os certificados configurados estiverem instalados. - Configurar uma versão específica de um certificado já não é possível.
- As chaves privadas são agora sempre armazenadas através da API de Criptografia: Next Generation (CNG) em vez de CAPI.
Pré-requisitos
Analise os seguintes pré-requisitos para usar a extensão de Máquina Virtual (VM) do Cofre de Chaves para Windows:
Uma instância do Azure Key Vault com um certificado. Para obter mais informações, consulte Criar um cofre de chaves usando o portal do Azure.
Uma VM com uma identidade gerenciada atribuída.
A função Usuário de Segredos do Cofre da Chave deve ser atribuída no nível de escopo do Cofre da Chave para a identidade gerida de VMs e dos Conjuntos de Escala de Máquinas Virtuais do Azure. Esta função recupera parte de um segredo de um certificado. Para obter mais informações, consulte os seguintes artigos:
Os Conjuntos de Dimensionamento de Máquinas Virtuais devem ter a seguinte configuração
identity:"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }A extensão Key Vault VM deve ter a seguinte
authenticationSettingsconfiguração:"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Observação
O antigo modelo de permissão de política de acesso também pode ser usado para fornecer acesso a VMs e Conjuntos de Dimensionamento de Máquina Virtual. Este método requer uma política com permissões para obter e listar segredos. Para obter mais informações, consulte Atribuir uma política de acesso ao Key Vault.
Esquema de extensão
O JSON a seguir mostra o esquema da extensão de VM do Key Vault. Antes de considerar as opções de implementação do esquema, revise as seguintes observações importantes.
A extensão não requer configurações protegidas. Todas as configurações são consideradas informações públicas.
Os URLs de certificados observados devem ser do formato
https://myVaultName.vault.azure.net/secrets/myCertName.Este formulário é preferido porque o
/secretscaminho retorna o certificado completo, incluindo a chave privada, mas o/certificatescaminho não. Para obter mais informações sobre certificados, consulte Visão geral de chaves, segredos e certificados do Azure Key Vault.A
authenticationSettingspropriedade é necessária para VMs com identidades atribuídas ao usuário.Esta propriedade especifica a identidade a ser usada para autenticação no Cofre da Chave. Defina essa propriedade com uma identidade atribuída ao sistema para evitar problemas com uma extensão de VM com várias identidades.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForWindows",
"apiVersion": "2025-04-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "4.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"observedCertificates": <An array of KeyVault URIs that represent monitored certificates, including certificate store location and ACL permission to certificate private key. Example:
[
{
"url": <A Key Vault URI to the secret portion of the certificate. Example: "https://myvault.vault.azure.net/secrets/mycertificate1">,
"certificateStoreName": <The certificate store name. Example: "MY">,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "LocalMachine">,
"accounts": <Optional. An array of preferred accounts with read access to certificate private keys. Administrators and SYSTEM get Full Control by default. Example: ["Network Service", "Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreName": <Example: "MY">,
"certificateStoreLocation": <Example: "CurrentUser">,
"accounts": <Example: ["Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate3">,
"certificateStoreName": <Example: "TrustedPeople">,
"certificateStoreLocation": <Example: "LocalMachine">
}
]>
},
"authenticationSettings": {
"msiEndpoint": <Required when the msiClientId property is used. Specifies the MSI endpoint. Example for most Azure VMs: "http://169.254.169.254/metadata/identity/oauth2/token">,
"msiClientId": <Required when the VM has any user assigned identities. Specifies the MSI identity. Example: "00001111-aaaa-2222-bbbb-3333cccc4444">
}
}
}
}
Valores de propriedade
O esquema JSON inclui as seguintes propriedades.
| Nome | Valor/Exemplo | Tipo de dados |
|---|---|---|
apiVersion |
2025-04-01 | data |
publisher |
Microsoft.Azure.KeyVault | cadeia (de caracteres) |
type |
KeyVaultForWindows | cadeia (de caracteres) |
typeHandlerVersion |
"4.0" | cadeia (de caracteres) |
observedCertificates |
[{...}, {...}] | array de strings |
observedCertificates/url |
"https://myvault.vault.azure.net/secrets/mycertificate" | cadeia (de caracteres) |
observedCertificates/certificateStoreName |
MEU | cadeia (de caracteres) |
observedCertificates/certificateStoreLocation |
LocalMachine ou CurrentUser (diferencia sensível a maiúsculas e minúsculas) | cadeia (de caracteres) |
observedCertificates/accounts (opcional) |
["Serviço de Rede", "Serviço Local"] | array de strings |
msiEndpoint |
"http://169.254.169.254/metadata/identity/oauth2/token" | cadeia (de caracteres) |
msiClientId |
00001111-aaaa-2222-bbbb-3333cccc444 | cadeia (de caracteres) |
Implementação de modelos
As extensões de VM do Azure podem ser implantadas com modelos do Azure Resource Manager (ARM). Os modelos são ideais ao implantar uma ou mais máquinas virtuais que exigem atualização pós-implantação de certificados. A extensão pode ser implantada em VMs individuais ou instâncias de Conjuntos de Escala de Máquina Virtual. O esquema e a configuração são comuns a ambos os tipos de modelo.
A configuração JSON para uma extensão do cofre de chaves está inserida dentro do modelo de VM ou Conjuntos de Escala de Máquina Virtual. Para uma extensão de recurso de VM, a configuração é aninhada dentro do objeto de máquina virtual "resources": []. Para uma extensão de instância do Conjuntos de Dimensionamento de Máquinas Virtuais, a configuração é aninhada sob o "virtualMachineProfile":"extensionProfile":{"extensions" :[] objeto.
Os trechos JSON a seguir fornecem configurações de exemplo para um modelo de implantação ARM da extensão de máquina virtual do Cofre de Chaves.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForWindows",
"apiVersion": "2025-04-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "4.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"secretsManagementSettings": {
"observedCertificates": <An array of KeyVault URIs that represent monitored certificates, including certificate store location and ACL permission to certificate private key. Example:
[
{
"url": <A Key Vault URI to the secret portion of the certificate. Example: "https://myvault.vault.azure.net/secrets/mycertificate1">,
"certificateStoreName": <The certificate store name. Example: "MY">,
"certificateStoreLocation": <The certificate store location, which currently works locally only. Example: "LocalMachine">,
"accounts": <Optional. An array of preferred accounts with read access to certificate private keys. Administrators and SYSTEM get Full Control by default. Example: ["Network Service", "Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate2">,
"certificateStoreName": <Example: "MY">,
"certificateStoreLocation": <Example: "CurrentUser">,
"accounts": <Example: ["Local Service"]>
},
{
"url": <Example: "https://myvault.vault.azure.net/secrets/mycertificate3">,
"certificateStoreName": <Example: "TrustedPeople">,
"certificateStoreLocation": <Example: "LocalMachine">
}
]>
},
"authenticationSettings": {
"msiEndpoint": <Required when the msiClientId property is used. Specifies the MSI endpoint. Example for most Azure VMs: "http://169.254.169.254/metadata/identity/oauth2/token">,
"msiClientId": <Required when the VM has any user assigned identities. Specifies the MSI identity. Example: "00001111-aaaa-2222-bbbb-3333cccc4444">
}
}
}
}
Atualização automática de extensão
A extensão Key Vault VM suporta a Atualização Automática de Extensões para máquinas virtuais e conjuntos de escalas no Azure. A extensão é mantida atualizada automaticamente quando as autoUpgradeMinorVersion propriedades e enableAutomaticUpgrade nos exemplos anteriores são definidas para true.
Ordenação de dependências de extensões
A extensão VM Key Vault suporta ordenação de dependências de extensão. A extensão reporta um arranque bem-sucedido após descarregar e instalar todos os certificados.
Se usares outras extensões que exijam a instalação de certificados antes de começarem, podes usar a ordem de dependência de extensões para declarar uma dependência na extensão VM do Key Vault.
No arranque, a extensão VM Key Vault tenta descarregar e instalar certificados até 25 vezes, com períodos de recuo crescentes, durante os quais permanece num estado Transição. Se as tentativas forem esgotadas, a extensão reporta um estado de Erro . Depois que todos os certificados forem instalados com êxito, a extensão de VM do Cofre da Chave relatará um início bem-sucedido.
Para obter mais informações sobre como configurar dependências entre extensões, consulte Provisionamento de extensão de sequência em conjuntos de escala de máquina virtual.
Importante
O recurso de ordenação de dependência de extensão não é compatível com um modelo ARM que cria uma identidade atribuída pelo sistema e atualiza uma política de acesso ao Key Vault com essa identidade. Se você tentar usar o recurso nesse cenário, ocorrerá um impasse porque a política de acesso do Cofre da Chave não pode ser atualizada até que todas as extensões sejam iniciadas. Em vez disso, use uma identidade MSI atribuída a um único utilizador e configure antecipadamente o ACL dos seus cofres de chaves com essa identidade antes de desdobrar.
Implantação do Azure PowerShell
A extensão de VM do Azure Key Vault pode ser implantada com o Azure PowerShell. Salve as configurações de extensão de VM do Key Vault em um arquivo JSON (settings.json).
Os trechos JSON a seguir fornecem configurações de exemplo para implantar a extensão da VM do Azure Key Vault com o PowerShell.
{
"secretsManagementSettings": {
"observedCertificates":
[
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate1",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service"
]
},
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate2",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service",
"Local Service"
]
}
]},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity/oauth2/token",
"msiClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
}
Implantar em uma VM
# Build settings
$settings = (get-content -raw ".\settings.json")
$extName = "KeyVaultForWindows"
$extPublisher = "Microsoft.Azure.KeyVault"
$extType = "KeyVaultForWindows"
# Start the deployment
Set-AzVmExtension -TypeHandlerVersion "4.0" -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settings
Implantar em uma instância de Conjuntos de Dimensionamento de Máquina Virtual
# Build settings
$settings = ".\settings.json"
$extName = "KeyVaultForWindows"
$extPublisher = "Microsoft.Azure.KeyVault"
$extType = "KeyVaultForWindows"
# Add extension to Virtual Machine Scale Sets
$vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName>
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "4.0" -Setting $settings
# Start the deployment
Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss
Implementação da CLI do Azure
A extensão de VM do Azure Key Vault pode ser implantada usando a CLI do Azure. Salve as configurações de extensão de VM do Key Vault em um arquivo JSON (settings.json).
Os trechos JSON a seguir fornecem configurações de exemplo para implantar a extensão de máquina virtual do Cofre de Chaves com a CLI do Azure.
{
"secretsManagementSettings": {
"observedCertificates": [
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate1",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service"
]
},
{
"url": "https://<examplekv>.vault.azure.net/secrets/certificate2",
"certificateStoreName": "MY",
"certificateStoreLocation": "LocalMachine",
"accounts": [
"Network Service",
"Local Service"
]
}
]
},
"authenticationSettings": {
"msiEndpoint": "http://169.254.169.254/metadata/identity/oauth2/token",
"msiClientId": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
}
Implantar em uma VM
# Start the deployment
az vm extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vm-name "<vmName>" `
--settings "@settings.json" `
--version "4.0"
Implantar em uma instância de Conjuntos de Dimensionamento de Máquina Virtual
# Start the deployment
az vmss extension set --name "KeyVaultForWindows" `
--publisher Microsoft.Azure.KeyVault `
--resource-group "<resourcegroup>" `
--vmss-name "<vmssName>" `
--settings "@settings.json" `
--version "4.0"
Sugestão
Se a implementação da extensão falhar, pode ser necessário eliminar a extensão existente antes de reinstalar com a versão correta. O Azure não permite downgrade de extensão, por isso pode ser necessário remover primeiro a extensão defeituosa:
az vm extension delete --name "KeyVaultForWindows" --resource-group "<resourcegroup>" --vm-name "<vmName>"
Solucionar problemas
Aqui estão algumas sugestões de como solucionar problemas de implantação.
Consulte as perguntas frequentes
Existe um limite para o número de certificados observados?
Não. A extensão Key Vault VM não limita o número de certificados observados (observedCertificates).
Qual é a permissão padrão quando nenhuma conta é especificada?
Por padrão, os Administradores e o SISTEMA recebem Controle Total.
Como determinar se uma chave de certificado é CAPI1 ou CNG?
A partir da extensão 4.0 da Key Vault VM, as chaves privadas de todos os certificados são guardadas via CNG.
A extensão suporta a revinculação automática do certificado?
Sim, a extensão de VM do Azure Key Vault dá suporte à revinculação automática de certificados. A extensão VM Key Vault suporta a ligação do canal S na renovação do certificado.
Para o IIS, você pode configurar a revinculação automática habilitando a revinculação automática de renovações de certificados no IIS. A extensão de VM do Azure Key Vault gera notificações de ciclo de vida do certificado quando um certificado com uma SAN correspondente é instalado. O IIS usa esse evento para revincular automaticamente o certificado. Para mais informações, consulte Reencadernação de Certificados no IIS.
Ver estado da extensão
Verifique o status da sua implantação de extensão no portal do Azure ou usando o PowerShell ou a CLI do Azure.
Para ver o estado de implantação das extensões de uma determinada VM, execute os seguintes comandos.
Azure PowerShell:
Get-AzVMExtension -ResourceGroupName <myResourceGroup> -VMName <myVM> -Name <myExtensionName>CLI do Azure:
az vm get-instance-view --resource-group <myResourceGroup> --name <myVM> --query "instanceView.extensions"
Revisar registros e configuração
Os registos de extensão da VM do Key Vault existem apenas localmente na VM. Reveja os detalhes do registo para ajudar na resolução de problemas.
| Arquivo de log | Descrição |
|---|---|
| C:\WindowsAzure\Logs\WaAppAgent.log' | Mostra quando ocorrem atualizações na extensão. |
| C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows< versão >\ | Mostra o status do download do certificado. O local de download é sempre a loja MY do computador Windows (certlm.msc). |
| C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows< versão >\RuntimeSettings\ | Os logs do serviço Key Vault VM Extension mostram o status do serviço akvvm_service. |
| C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<versão mais recente>\Status\ | A configuração e os binários para o serviço Key Vault VM Extension. |
Instalação de certificado no Windows
A extensão de VM do Cofre da Chave para Windows instala certificados no armazenamento de certificados do Windows. Quando um certificado é baixado do Cofre de Chaves, a extensão:
- Instala todos os certificados intermediários e finais, independentemente de quantos certificados intermediários estejam presentes. Os certificados raiz não são instalados, pois a extensão não está autorizada a executar a instalação raiz. É responsabilidade do proprietário do serviço garantir que o certificado raiz seja confiável no sistema.
- Os certificados folha são instalados no armazenamento de certificados especificado (
certificateStoreName) e no local (certificateStoreLocation) - Os certificados de CA intermediários são instalados no repositório de Autoridades de Certificação Intermediárias
- Os certificados folha são instalados no armazenamento de certificados especificado (
- Coloca os certificados no armazenamento de certificados especificado (
certificateStoreName) e no local (certificateStoreLocation) - Aplica permissões apropriadas à chave privada com base no
accountsespecificado na configuração - Define a
CERT_RENEWALpropriedade para garantir que as ligações de certificados em aplicações como o IIS sejam atualizadas automaticamente quando os certificados são renovados.
Armazenamentos de certificados padrão
Se não for especificado, os certificados são instalados nos seguintes locais por padrão:
- Nome da loja: MY (Pessoal)
- Localização da loja: LocalMachine
Controlo de Acesso a Certificados
Por padrão, Administradores e SYSTEM recebem permissões de Controle Total nos certificados instalados. Você pode personalizar o acesso usando a accounts matriz na configuração do certificado:
"accounts": ["Network Service", "Local Service"]
Isso concede acesso de leitura às contas especificadas, permitindo que aplicativos executados sob essas identidades usem os certificados.
Renovação do Certificado
Quando os certificados são renovados no Key Vault, a extensão automaticamente:
- Descarrega a nova versão do certificado.
- Instala-o na loja de certificados configurada.
- Mantém as fixações existentes pela propriedade
CERT_RENEWAL.
Gerir o ciclo de vida dos certificados
Para aplicações como o IIS que suportam Notificações do Ciclo de Vida dos Serviços de Certificados, a extensão VM Key Vault levanta Event 1001 no Registo de Eventos Windows quando um certificado com um Nome Alternativo de Sujeito (SAN) correspondente é instalado. O IIS subscreve este evento para reassociar automaticamente o certificado renovado sem interrupção do serviço. Outras aplicações e equipas também podem monitorizar o Evento 1001 para atuar nas renovações de certificados quando necessário. Para mais informações, consulte Notificações do Ciclo de Vida dos Serviços de Certificados.
Obter suporte
Aqui estão algumas outras opções para ajudá-lo a resolver problemas de implantação:
Para assistência, contacte os especialistas Azure em
Microsoft Q& A .Se você não encontrar uma resposta no site, poderá postar uma pergunta para entrada da Microsoft ou de outros membros da comunidade.
Também pode contactar o Suporte da Microsoft. Para informações sobre a utilização de suporte do Azure, veja Como criar um pedido de suporte do Azure.