Key Vault için sanal makine uzantısını genişletme
Sanal Key Vault uzantısı, Azure anahtar kasasında depolanan sertifikaların otomatik olarak yenilenmesine yardımcı olur. Özellikle uzantı, anahtar kasalarında depolanan gözlemlenen sertifikaların listesini izler. Bir değişikliği algılayan uzantı ilgili sertifikaları alabilir ve yükleyebilir. Sanal Key Vault uzantısı, Şu anda Linux VM'lerde olan Microsoft tarafından yayımlanır ve desteklemektedir. Bu belgede Linux için sanal makine uzantısı için desteklenen platformlar, yapılandırmalar ve Key Vault seçenekleri ayrıntılı olarak açıklanır.
İşletim sistemi
Sanal Key Vault uzantısı şu Linux dağıtımlarını destekler:
- Ubuntu-1804
- Suse-15
- CBL-Askerir
Not
Genişletilmiş güvenlik özelliklerini almak için Ubuntu-1604 ve Debian-9 sistemlerini yükseltmeye hazır olun. Bu sürümler belirlenen destek döneminin sonuna ulaştı.
Not
Sanal Key Vault Uzantısı, sertifikaları varsayılan konumdan veya VM Uzantısı ayarlarında "certStoreLocation" özelliği tarafından sağlanan konuma indirir. KeyValut VM Uzantısı, klasör iznini 700 (drwx------) olarak sınar ve yalnızca klasör sahibine okuma, yazma ve yürütme izni sağlar
Desteklenen sertifika içerik türleri
- PKCS #12
- PEM
Önkquisities
Key Vault olan bir örnek. Bkz. Key Vault
VM/VMSS'ye yönetilen kimlik atanmış olması gerekir
Key Vault Erişim İlkesi, gizli dizilerin sertifika kısmını almak için VM/VMSS yönetilen kimliği için gizli
getlistdiziler ve izinlerle ayarlanamaz. Bkz. Key Vault için kimlik doğrulaması yapma ve Key Vault ilkesi atama.VMSS aşağıdaki kimlik ayarına sahip olmalı:
"identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedIdentityResourceId')]": {} } }AKV uzantısı şu ayara sahip olmalı:
"authenticationSettings": { "msiEndpoint": "[parameters('userAssignedIdentityEndpoint')]", "msiClientId": "[reference(parameters('userAssignedIdentityResourceId'), variables('msiApiVersion')).clientId]" }
Key Vault VM uzantısı sürümü
Ubuntu-18.04 ve SUSE-15 kullanıcıları, tam sertifika zinciri indirme özelliğine sahip olmak için anahtar kasası vm uzantısı sürümünü
V2.0sürümüne yükseltmeyi tercih ediyor. Sertifikayı alan sertifikalar (ara ve kök) PEM dosyasındaki yaprak sertifikaya eklenir.sürümüne yükseltmeyi tercih
v2.0ederseniz önce silmeniz vev1.0ardından yüklemenizv2.0gerekir.
az vm extension delete --name KeyVaultForLinux --resource-group ${resourceGroup} --vm-name ${vmName}
az vm extension set -n "KeyVaultForLinux" --publisher Microsoft.Azure.KeyVault --resource-group "${resourceGroup}" --vm-name "${vmName}" –settings .\akvvm.json –version 2.0
--version 2.0 bayrağı isteğe bağlıdır çünkü en son sürüm varsayılan olarak yüklenir.
- VM'de v1.0 tarafından indirilen sertifikalar varsa, v1.0 AKVVM uzantısı silindikten sonra indirilen sertifikalar SİSIL OLMAZ. v2.0'ın yüklendikten sonra, mevcut sertifikalar DEĞIŞTIRILMEZ. VM'de tam zincire sahip PEM dosyasını almak için sertifika dosyalarını silmeniz veya sertifikayı geri sarmanız gerekir.
Uzantı şeması
Aşağıdaki JSON, sanal makine uzantısının Key Vault gösterir. Uzantı korumalı ayarlar gerektirmez; tüm ayarları güvenlik etkisi olmadan bilgi olarak kabul edilir. Uzantı, izlenen gizli dizilerin, yoklama sıklığının ve hedef sertifika deposun bir listesini gerektirir. Özellikle:
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KVVMExtensionForLinux",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <It is ignored on Linux>,
"linkOnRenewal": <Not available on Linux e.g.: false>,
"certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
"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", "https://myvault.vault.azure.net/secrets/mycertificate2"]>
},
"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 sertifika URL'leri şeklinde olması https://myVaultName.vault.azure.net/secrets/myCertName gerekir.
Bunun nedeni, /secrets yolun özel anahtar dahil olmak üzere tam sertifikayı döndüren yol /certificates değildir. Sertifikalar hakkında daha fazla bilgi için buraya Key Vault edinebilirsiniz
Önemli
Kullanıcı tarafından atanan kimliklere sahip VM'ler için 'authenticationSettings' özelliği gereklidir. msiClientId'i, kimlik doğrulaması için kimlik doğrulaması Key Vault.
Vm'leri Azure Arc için de gereklidir.
msiEndpoint'i olarak http://localhost:40342/metadata/identity ayarlayın.
Özellik değerleri
| Name | Değer / Örnek | Veri Türü |
|---|---|---|
| apiVersion | 2019-07-01 | date |
| yayımcı | Microsoft.Azure.KeyVault | string |
| tür | KeyVaultForLinux | string |
| typeHandlerVersion | 2.0 | int |
| pollingIntervalIns | 3600 | string |
| certificateStoreName | Linux üzerinde yoksayılır | string |
| linkOnRenewal | yanlış | boolean |
| certificateStoreLocation | /var/lib/waagent/Microsoft.Azure.KeyVault | string |
| requireInitialSync | true | boolean |
| observedCertificates | ["https://myvault.vault.azure.net/secrets/mycertificate", "https://myvault.vault.azure.net/secrets/mycertificate2"] | dize dizisi |
| msiEndpoint | http://169.254.169.254/metadata/identity | string |
| msiClientId | c7373ae5-91c2-4165-8ab6-7381d6e75619 | string |
Şablon dağıtımı
Azure VM uzantıları, sanal makine Azure Resource Manager dağıtılabilir. Şablonlar, sertifikaların dağıtım sonrası yenilenmesi gereken bir veya daha fazla sanal makineyi dağıtırken idealdir. Uzantı tek tek VM'lere veya sanal makine ölçek kümelere dağıtılabilir. Şema ve yapılandırma her iki şablon türü için de ortaktır.
Sanal makine uzantısı için JSON yapılandırması, şablonun sanal makine kaynak parçası içinde, özellikle de sanal makine şablonu için nesne ve nesne altında sanal makine ölçek kümesi olması durumunda iç içe "resources": [] geçmiş "virtualMachineProfile":"extensionProfile":{"extensions" :[] olması gerekir.
Not
VM uzantısı, Key Vault'ta kimlik doğrulaması yapmak için sistem veya kullanıcı tarafından yönetilen kimliğin atanmalarını gerektirir. Bkz. Key Vault için kimlik doğrulaması yapma ve Key Vault ilkesi atama.
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "KeyVaultForLinux",
"apiVersion": "2019-07-01",
"location": "<location>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', <vmName>)]"
],
"properties": {
"publisher": "Microsoft.Azure.KeyVault",
"type": "KeyVaultForLinux",
"typeHandlerVersion": "2.0",
"autoUpgradeMinorVersion": true,
"settings": {
"secretsManagementSettings": {
"pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
"certificateStoreName": <ingnored on linux>,
"certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
"observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
}
}
}
}
Uzantı Bağımlılığı Sıralama
Sanal Key Vault uzantısı yapılandırılmışsa uzantı sıralamayı destekler. Varsayılan olarak uzantı, yoklama başlatıldı hemen başarıyla başlat olduğunu raporlar. Ancak, başarılı bir başlangıç bildirmeden önce sertifikaların tam listesini başarıyla indirene kadar beklemek üzere yalıtabilirsiniz. Diğer uzantılar başlamadan önce tam sertifika kümesi yüklemesine bağımlı olursa, bu ayarın etkinleştirilmesi bu uzantıların sertifika uzantısına bağımlılık Key Vault sağlar. Bu, bağımlı olduğu tüm sertifikalar yüklenmiş olana kadar bu uzantıların başlamasını önler. Uzantı, ilk indirme işlemini süresiz olarak yeniden denenecek ve bir durumda Transitioning kalacaktır.
Bunu açmak için aşağıdakileri ayarlayın:
"secretsManagementSettings": {
"requireInitialSync": true,
...
}
Notun 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 \ " Settings. JSON öğesine ekler ve bu da akvvm_service hata vererek başarısız olur: [CertificateManagementConfiguration] Failed to parse the configuration settings with:not an object.
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 = "KeyVaultForLinux" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForLinux" # Start the deployment Set-AzVmExtension -TypeHandlerVersion "2.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 = "KeyVaultForLinux" $extPublisher = "Microsoft.Azure.KeyVault" $extType = "KeyVaultForLinux" # Add Extension to VMSS $vmss = Get-AzVmss -ResourceGroupName <ResourceGroupName> -VMScaleSetName <VmssName> Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $extPublisher -Type $extType -TypeHandlerVersion "2.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 sanal makineye dağıtmak için:
# Start the deployment az vm extension set -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vm-name "<vmName>" ` --version 2.0 ` --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 -n "KeyVaultForLinux" ` --publisher Microsoft.Azure.KeyVault ` -g "<resourcegroup>" ` --vmss-name "<vmssName>" ` --version 2.0 ` --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 var olmalıdır
- Key Vault erişim Ilkesi, yönetilen bir kimlik kullanılarak VM/VMSS kimliği için ayarlanmalıdır. Key Vault Için kimlik doğrulama ve Key Vault erişim ilkesi atamakonusuna bakın.
Sorun giderme ve destek
Uzantı dağıtımlarının durumuyla ilgili veriler, Azure portal alabilir ve Azure PowerShell kullanılarak elde edilebilir. Belirli bir VM için uzantıların dağıtım durumunu görmek için, Azure PowerShell kullanarak aşağıdaki komutu çalıştırın.
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
Key Vault VM Uzantısı günlükleri yalnızca sanal makinede yerel olarak bulunur ve sorun giderme için olduğunda bu bilgi bilgilendirme amaçlıdır.
| Konum | Açıklama |
|---|---|
| /var/log/waagent.log | Uzantıya yönelik bir güncelleştirmenin ne zaman oluştuğunu gösterir. |
| /var/log/azure/Microsoft.Azure.KeyVault.KeyVaultForLinux/* | Akvvm_service hizmetinin ve sertifika indirmenin durumunu öğrenmek için Key Vault VM Uzantısı hizmet günlüklerini inceleyin. PED dosyalarının karşıdan yükleme konumu, bu dosyalarda sertifika dosyası adı adlı bir girdiyle de bulunur. CertificateStoreLocation belirtilmemişse, varsayılan olarak/var/lib/waagent/Microsoft.Azure.KeyVault.Store/ |
| /var/lib/waagent/Microsoft.Azure.KeyVault.KeyVaultForLinux- <most recent version> /config/* | Key Vault VM Uzantısı hizmeti için yapılandırma ve ikili dosyalar. |
Symlink kullanma
Sembolik bağlantılar veya Symbağlantılar temelde gelişmiş kısayollardır. Klasörü izlemeyi önlemek ve en son sertifikayı otomatik olarak almak için bu oluşturmaksızın 'i kullanarak ([VaultName].[CertificateName]) Linux üzerinde sertifikanın en son sürümünü edinebilirsiniz.
Sık Sorulan Sorular
- Ayarlayabilmeniz için observedCertificates sayısında bir sınır var mı? Hayır, Key Vault VM uzantısının observedCertificates sayısı üzerinde sınırı yok.
Destek
Bu makalenin herhangi bir noktasında daha fazla yardıma ihtiyacınız varsa, MSDN Azure ve Stack Overflow forumlarındaAzure uzmanlarıyla iletişim kurun. Alternatif olarak, bir Azure destek olayı da oluşturabilirsiniz. Azure destek sitesine gidin ve Destek Al ' ı seçin. Azure desteğini kullanma hakkında daha fazla bilgi için, Microsoft Azure Support sssmakalesini okuyun.