Makine yapılandırma paketlerini imzalama
Makine yapılandırması özel ilkeleri, ilke paketinin değişmediğini doğrulamak için sha256 karması kullanır. İsteğe bağlı olarak, müşteriler paketleri imzalamak ve makine yapılandırma uzantısını yalnızca imzalı içeriğe izin vermek üzere zorlamak için bir sertifika kullanabilir.
Bu senaryoya olanak tanımak için tamamlamanız gereken iki adım vardır:
- İçerik paketini imzalamak için cmdlet'ini çalıştırın.
- Makinelere kodun imzalanması gereken bir etiket ekleyin.
Kod imzalama sertifikası kullanarak imza doğrulama
İmza Doğrulama özelliğini kullanmak için cmdlet'ini Protect-GuestConfigurationPackage
çalıştırarak paketi yayımlanmadan önce imzalayın. Bu cmdlet bir 'Kod İmzalama' sertifikası gerektirir. 'Kod İmzalama' sertifikanız yoksa, örnekle birlikte test amacıyla otomatik olarak imzalanan bir sertifika oluşturmak için aşağıdaki betiği kullanın.
Windows imza doğrulaması
# How to create a self sign cert and use it to sign Machine Configuration
# custom policy package
# Create Code signing cert
$codeSigningParams = @{
Type = 'CodeSigningCert'
DnsName = 'GCEncryptionCertificate'
HashAlgorithm = 'SHA256'
}
$certificate = New-SelfSignedCertificate @codeSigningParams
# Export the certificates
$privateKey = @{
Cert = $certificate
Password = Read-Host "Enter password for private key" -AsSecureString
FilePath = '<full-path-to-export-private-key-pfx-file>'
}
$publicKey = @{
Cert = $certificate
FilePath = '<full-path-to-export-public-key-cer-file>'
Force = $true
}
Export-PfxCertificate @privateKey
Export-Certificate @publicKey
# Import the certificate
$importParams = @{
FilePath = $privateKey.FilePath
Password = $privateKey.Password
CertStoreLocation = 'Cert:\LocalMachine\My'
}
Import-PfxCertificate @importParams
# Sign the policy package
$certToSignThePackage = Get-ChildItem -Path Cert:\LocalMachine\My |
Where-Object { $_.Subject -eq "CN=GCEncryptionCertificate" }
$protectParams = @{
Path = '<path-to-package-to-sign>'
Certificate = $certToSignThePackage
Verbose = $true
}
Protect-GuestConfigurationPackage @protectParams
Linux imza doğrulaması
# generate gpg key
gpg --gen-key
$emailAddress = '<email-id-used-to-generate-gpg-key>'
$publicGpgKeyPath = '<full-path-to-export-public-key-gpg-file>'
$privateGpgKeyPath = '<full-path-to-export-private-key-gpg-file>'
# export public key
gpg --output $publicGpgKeyPath --export $emailAddress
# export private key
gpg --output $privateGpgKeyPath --export-secret-key $emailAddress
# Sign linux policy package
Import-Module GuestConfiguration
$protectParams = @{
Path = '<path-to-package-to-sign>'
PrivateGpgKeyPath = $privateGpgKeyPath
PublicGpgKeyPath = $publicGpgKeyPath
Verbose = $true
}
Protect-GuestConfigurationPackage
Cmdlet'in Protect-GuestConfigurationPackage
parametreleri:
- Yol: Makine yapılandırma paketinin tam yolu.
- Sertifika: Paketi imzalamak için kod imzalama sertifikası. Bu parametre yalnızca Windows için içerik imzalarken desteklenir.
- PrivateGpgKeyPath: Özel anahtar
.gpg
dosyasının tam yolu. Bu parametre yalnızca Linux için içerik imzalarken desteklenir. - PublicGpgKeyPath: Ortak anahtar
.gpg
dosyasının tam yolu. Bu parametre yalnızca Linux için içerik imzalarken desteklenir.
Sertifika gereksinimleri
Makine yapılandırma aracısı, sertifika ortak anahtarının Windows makinelerinde "Güvenilen Yayımcılar"da ve Linux makinelerindeki yolda /usr/local/share/ca-certificates/gc
bulunmasını bekler. Düğümün imzalı içeriği doğrulaması için özel ilkeyi uygulamadan önce makineye sertifika ortak anahtarını yükleyin.
Sertifika ortak anahtarını VM içindeki normal araçları kullanarak veya Azure İlkesi kullanarak yükleyebilirsiniz. Azure İlkesi kullanan örnek şablon, bir makineyi sertifikayla nasıl dağıtabileceğinizi gösterir. Key Vault erişim ilkesi, İşlem kaynak sağlayıcısının dağıtımlar sırasında sertifikalara erişmesine izin vermelidir. Ayrıntılı adımlar için bkz . Azure Resource Manager'da sanal makineler için Key Vault'un ayarlanması.
Aşağıda, ortak anahtarı bir imzalama sertifikasından dışarı aktarmak ve makineye aktarmak için bir örnek verilmiştir.
$Cert = Get-ChildItem -Path Cert:\LocalMachine\My |
Where-Object { $_.Subject-eq 'CN=<CN-of-your-signing-certificate>' } |
Select-Object -First 1
$Cert | Export-Certificate -FilePath '<path-to-export-public-key-cer-file>' -Force
Etiket gereksinimleri
İçeriğiniz yayımlandıktan sonra, kod imzalamanın gerekli olduğu tüm sanal makinelere ad GuestConfigPolicyCertificateValidation
ve değer enabled
içeren bir etiket ekleyin. Etiketlerin Azure İlkesi kullanılarak uygun ölçekte nasıl teslim edilebileceğine ilişkin Etiket örneklerine bakın. Bu etiket oluşturulduktan sonra, cmdlet'i kullanılarak New-GuestConfigurationPolicy
oluşturulan ilke tanımı, makine yapılandırma uzantısı aracılığıyla gereksinimi etkinleştirir.
İlgili içerik
- Ortamınızın büyük ölçekte yönetimi için
GuestConfiguration
modülünü kullanarak bir Azure İlkesi tanımı oluşturun. - Azure portalı kullanarak özel ilke tanımınızı atayın.
- Makine yapılandırma ilkesi atamaları için uyumluluk ayrıntılarını görüntülemeyi öğrenin.