Windows için Key Vault sanal makine uzantısı
Key Vault VM uzantısı, Azure Anahtar Kasası 'nda depolanan sertifikaların otomatik olarak yenilenmesini sağlar. Özellikle uzantı, anahtar kasalarında depolanan gözlemlenen sertifikaların listesini izler ve bir değişikliği tespit etmek için ilgili sertifikaları alır ve kurar. Bu belgede Windows için Key Vault VM uzantısı için desteklenen platformlar, konfigürasyonlar ve dağıtım seçenekleri ayrıntılı olarak bulunmaktadır.
İşletim sistemi
Key Vault VM uzantısı Windows sürümlerini destekler:
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012
Key Vault VM uzantısı, yüklenen ve Azure 'da Windows Server 2019 core yüklemesi kullanılarak kullanılmak üzere özelleştirilmiş bir görüntüye dönüştürülen özel yerel VM 'de de desteklenir.
Desteklenen sertifika içerik türleri
- PKCS #12
- PEM
Önkoşullar
- Sertifikayı içeren Key Vault örneği. Bkz. Key Vault oluşturma
- VM 'nin yönetilen kimliği atanmış olması gerekir
- Key Vault erişim Ilkesi, parolaların
getlistsertifikanın bir bölümünü almak için VM/VMSS yönetilen kimlik ile gizli dizi ve izinle ayarlanmalıdır. Key Vault Için kimlik doğrulama ve Key Vault erişim ilkesi atamakonusuna bakın. - Sanal Makine Ölçek Kümeleri aşağıdaki kimlik ayarlarına sahip olmalıdır:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[parameters('userAssignedIdentityResourceId')]": {}
}
}
- AKV uzantısında Bu ayar olmalıdır:
"authenticationSettings": {
"msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]",
"msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]"
}
Uzantı şeması
Aşağıdaki JSON Key Vault VM uzantısının şemasını gösterir. Uzantı, korumalı ayarlar gerektirmez. tüm ayarları ortak bilgiler olarak kabul edilir. Uzantı, izlenen sertifikaların, yoklama sıklığının ve hedef sertifika deposunun bir listesini gerektirir. Özellikle:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForWindows",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <string specifying polling interval in seconds, e.g: "3600">,
"certificateStoreName": <certificate store name, e.g.: "MY">,
"linkOnRenewal": <Only Windows. This feature ensures s-channel binding when certificate renews, without necessitating a re-deployment. e.g.: false>,
"certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
"requireInitialSync": <initial synchronization of certificates e..g: true>,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
},
"authenticationSettings": {
"msiEndpoint": <Optional MSI endpoint e.g.: "http://169.254.169.254/metadata/identity">,
"msiClientId": <Optional MSI identity e.g.: "c7373ae5-91c2-4165-8ab6-7381d6e75619">
}
}
}
}
Not
Gözlemlenen sertifikalarınızın URL 'Leri form olmalıdır https://myVaultName.vault.azure.net/secrets/myCertName .
Bunun nedeni, /secrets yol değil, özel anahtar dahil olmak üzere tam sertifikayı döndürmektedir /certificates . Sertifikalar hakkında daha fazla bilgi için şurada bulunabilir: Key Vault sertifikaları
Önemli
' AuthenticationSettings ' özelliği yalnızca Kullanıcı tarafından atanan kimlikleri olan VM 'ler için gereklidir . Key Vault kimlik doğrulaması için kullanılacak kimliği belirtir.
Önemli
' MsiClientId ' belirtirseniz, ' msiEndpoint ' özelliği gereklidir. Genellikle değer olarak ayarlanmalıdır http://169.254.169.254/metadata/identity/oauth2/token .
Özellik değerleri
| Name | Değer/örnek | Veri Türü |
|---|---|---|
| apiVersion | 2019-07-01 | date |
| yayımcı | Microsoft.Azure.KeyVault | string |
| tür | KeyVaultForWindows | string |
| typeHandlerVersion | 1.0 | int |
| Pollingınterinterval bileşenleri | 3600 | string |
| certificateStoreName | MY | string |
| Linkonyenilemeye | yanlış | boolean |
| certificateStoreLocation | LocalMachine veya CurrentUser (büyük/küçük harfe duyarlı) | string |
| Requireınitialsync | true | boolean |
| observedCertificates | ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] | dize dizisi |
| Msıendpoint | http://169.254.169.254/metadata/identity | string |
| msiClientId | c7373ae5-91c2-4165-8ab6-7381d6e75619 | string |
Şablon dağıtımı
Azure VM uzantıları, Azure Resource Manager şablonlarıyla dağıtılabilir. Sertifikaların dağıtım sonrası yenilenmesini gerektiren bir veya daha fazla sanal makine dağıtıldığında şablonlar idealdir. Uzantı ayrı VM 'lere veya sanal makine ölçek kümelerine dağıtılabilir. Şema ve yapılandırma her iki şablon türü için ortaktır.
Bir sanal makine uzantısının JSON yapılandırması, şablonun sanal makine kaynak parçasının içinde, özellikle de "resources": [] sanal makine şablonu için nesne ve nesne altında sanal makine ölçek kümesi olması halinde iç içe olmalıdır "virtualMachineProfile":"extensionProfile":{"extensions" :[] .
Not
VM uzantısı, Anahtar Kasası kimlik doğrulaması için sistem veya Kullanıcı tarafından yönetilen kimliğin atanmasını gerektirir. Key Vault için kimlik doğrulama ve Key Vault erişim ilkesi atama konusuna bakın.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForWindows",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForWindows",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <string specifying polling interval in seconds, e.g: "3600">,
"certificateStoreName": <certificate store name, e.g.: "MY">,
"certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"]>
}
}
}
}
Uzantı bağımlılığı sıralaması
Key Vault VM Uzantısı yapılandırıldıysa uzantı sıralamasını destekler. Varsayılan olarak, uzantı yoklamaya başladığı anda başarıyla başlatıldığını bildirir. Ancak, başarılı bir başlangıç raporlanmadan önce sertifikaların tüm listesini başarıyla indirene kadar bekleyecek şekilde yapılandırılabilir. Diğer uzantılar, başlamadan önce tam sertifika kümesine sahip olmaya bağımlıysa, bu ayarın etkinleştirilmesi, bu uzantının Key Vault uzantısında bir bağımlılık tanımlamasına olanak tanır. Bu, bağımlı oldukları tüm sertifikaların yüklenene kadar bu uzantıların başlamasını engeller. Uzantı ilk indirmeyi süresiz olarak yeniden dener ve bir Transitioning durumda kalır.
Bunu açmak için aşağıdakileri ayarlayın:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
Not
Bu özelliğin kullanılması, sistem tarafından atanan bir kimlik oluşturan ve bu kimlikle Key Vault erişim ilkesini güncelleştiren bir ARM şablonuyla uyumlu değildir. Bunun yapılması, tüm uzantılar başlatılana kadar kasa erişimi ilkesi güncelleştirilene kadar kilitlenmeyle sonuçlanır. Bunun yerine, dağıtımını yapmadan önce tek bir kullanıcı tarafından atanmış BIR MSI kimliği ve bu kimlikle kasalar IÇIN bir ACL ön eki kullanmanız gerekir.
Azure PowerShell dağıtımı
Uyarı
PowerShell istemcileri, genellikle \ " [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object. \ " , Ayarlar altındaki uzantılar bölümünde ek ve karakterler portalda görünür hale gelmesine akvvm_service neden olan settings. json ' a eklenir. Bunu önlemek için $settings PowerShell olarak başlatın HashTable :
$settings = @{
"secretsManagementSettings" = @{
"pollingIntervalInS" = "<pollingInterval>";
"certificateStoreName" = "<certStoreName>";
"certificateStoreLocation" = "<certStoreLoc>";
"observedCertificates" = @("<observedCert1>", "<observedCert2>") } }
Azure PowerShell, Key Vault VM uzantısını var olan bir sanal makineye veya sanal makine ölçek kümesine dağıtmak için kullanılabilir.
Uzantıyı bir sanal makineye dağıtmak için:
# Build settings $settings = '{"secretsManagementSettings": { "pollingIntervalInS": "' + <pollingInterval> + '", "certificateStoreName": "' + <certStoreName> + '", "certificateStoreLocation": "' + <certStoreLoc> + '", "observedCertificates": ["' + <observedCert1> + '","' + <observedCert2> + '"] } }' $extName = "KeyVaultForWindows" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForWindows" # Start the deployment Set-AzVmExtension -TypeHandlerVersion "1.0" -ResourceGroupName <ResourceGroupName> -Location <Location> -VMName <VMName> -Name $extName -Publisher $extPublisher -Type $extType -SettingString $settingsUzantıyı bir sanal makine ölçek kümesine dağıtmak için:
# Build settings $settings = '{"secretsManagementSettings": { "pollingIntervalInS": "' + <pollingInterval> + '", "certificateStoreName": "' + <certStoreName> + '", "certificateStoreLocation": "' + <certStoreLoc> + '", "observedCertificates": ["' + <observedCert1> + '","' + <observedCert2> + '"] } }' $extName = "KeyVaultForWindows" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForWindows" # Add Extension to VMSS $vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "1.0" -Setting $settings # Start the deployment Update-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> -VirtualMachineScaleSet $vmss
Azure CLı dağıtımı
Azure CLı, Key Vault VM uzantısını var olan bir sanal makineye veya sanal makine ölçek kümesine dağıtmak için kullanılabilir.
Uzantıyı bir VM'ye dağıtmak için:
# Start the deployment az vm extension set --name "KeyVaultForWindows" ` --publisher Microsoft.Azure.KeyVault ` --resource-group "<resourcegroup>" ` --vm-name "<vmName>" ` --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'Uzantıyı bir sanal makine ölçek kümesine dağıtmak için:
# Start the deployment az vmss extension set --name "KeyVaultForWindows" ` --publisher Microsoft.Azure.KeyVault ` --resource-group "<resourcegroup>" ` --vmss-name "<vmName>" ` --settings '{\"secretsManagementSettings\": { \"pollingIntervalInS\": \"<pollingInterval>\", \"certificateStoreName\": \"<certStoreName>\", \"certificateStoreLocation\": \"<certStoreLoc>\", \"observedCertificates\": [\" <observedCert1> \", \" <observedCert2> \"] }}'
Lütfen aşağıdaki kısıtlamalara/gereksinimlere dikkat edin:
- Key Vault kısıtlamaları:
- Dağıtım sırasında mevcut olması gerekir
- Key Vault Erişim İlkesi, Yönetilen Kimlik kullanılarak VM/VMSS Kimliği için ayarlanır. Bkz. Key Vault için kimlik doğrulaması yapma ve Key Vault ilkesi atama.
Sorun giderme ve destek
Sık Sorulan Sorular
- Ayarlandırabilirsiniz gözlemlenenSerificates sayısına bir sınır var mı? Hayır Key Vault VM Uzantısı'nın gözlemlenenCertificates sayısıyla ilgili bir sınırı yoktur.
Sorun giderme
Uzantı dağıtımlarının durumuyla ilgili veriler, Azure portal ve Azure PowerShell. Verilen bir VM için uzantıların dağıtım durumunu görmek için aşağıdaki komutu çalıştırarak aşağıdaki komutu Azure PowerShell.
Azure PowerShell
Get-AzVMExtension -VMName <vmName> -ResourceGroupname <resource group name>
Azure CLI
az vm get-instance-view --resource-group <resource group name> --name <vmName> --query "instanceView.extensions"
Günlükler ve yapılandırma
Vm Key Vault günlüklerinin yalnızca vm'de yerel olarak mevcut olması ve sorun giderme söz konusu olduğunda en bilgilendirici olmasıdır
| Konum | Açıklama |
|---|---|
| C:\WindowsAzure\Logs\WaAppAgent.log | Uzantıda bir güncelleştirmenin ne zaman meydana geldiği gösterir. |
| C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows<most recent version>\ | Sertifika indirme durumunu gösterir. İndirme konumu her zaman bilgisayarın my Windows (certlm.msc) olur. |
| C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \RuntimeSettings\ | Sanal Key Vault uzantısı hizmet günlükleri, sanal makine akvvm_service gösterir. |
| C:\Packages\Plugins\Microsoft.Azure.KeyVault.KeyVaultForWindows <most recent version> \Status\ | VM Uzantısı hizmeti için yapılandırma Key Vault ikili dosyaları. |
Destek
Bu makalenin herhangi bir noktasında daha fazla yardıma ihtiyacınız olursa MSDN Azure'daki Azure uzmanlarıyla iletişim kurabilirsiniz ve Stack Overflow bulabilirsiniz. Alternatif olarak, bir olay Azure desteği. Azure desteği'a gidin ve Destek al'ı seçin. Bu bilgileri kullanma hakkında daha Azure Desteği için destek SSS Microsoft Azure bölümünü okuyun.