Så här signerar du konfigurationspaket för datorer
Anpassade principer för datorkonfiguration använder SHA256-hash för att verifiera att princippaketet inte har ändrats. Alternativt kan kunder också använda ett certifikat för att signera paket och tvinga datorkonfigurationstillägget att endast tillåta signerat innehåll.
För att aktivera det här scenariot finns det två steg som du måste slutföra. Kör cmdleten för att signera innehållspaketet och lägg till en tagg på datorerna som ska kräva att koden signeras.
Signaturverifiering med hjälp av ett kodsigneringscertifikat
Om du vill använda funktionen Signaturverifiering kör du cmdleten Protect-GuestConfigurationPackage
för att signera paketet innan det publiceras. Den här cmdleten kräver ett "kodsigneringscertifikat". Om du inte har ett "kodsigneringscertifikat" använder du följande skript för att skapa ett självsignerat certifikat i testsyfte för att följa med i exemplet.
Validering av Windows-signatur
# 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'
}
$mycert = New-SelfSignedCertificate @codeSigningParams
# Export the certificates
$mypwd = ConvertTo-SecureString -String "Password1234" -Force -AsPlainText
$mycert | Export-PfxCertificate -FilePath C:\demo\GCPrivateKey.pfx -Password $mypwd
$mycert | Export-Certificate -FilePath "C:\demo\GCPublicKey.cer" -Force
# Import the certificate
$importParams = @{
FilePath = 'C:\demo\GCPrivateKey.pfx'
Password = $mypwd
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 = 'C:\demo\AuditWindowsService.zip'
Certificate = $certToSignThePackage
Verbose = $true
}
Protect-GuestConfigurationPackage @protectParams
Validering av Linux-signatur
# generate gpg key
gpg --gen-key
# export public key
gpg --output public.gpg --export <email-id-used-to-generate-gpg-key>
# export private key
gpg --output private.gpg --export-secret-key <email-id-used-to-generate-gpg-key>
# Sign linux policy package
Import-Module GuestConfiguration
$protectParams = @{
Path = './not_installed_application_linux.zip'
PrivateGpgKeyPath = './private.gpg'
PublicGpgKeyPath = './public.gpg'
Verbose = $true
}
Protect-GuestConfigurationPackage
Cmdletens Protect-GuestConfigurationPackage
parametrar:
- Sökväg: Fullständig sökväg för datorkonfigurationspaketet.
- Certifikat: Kodsigneringscertifikat för att signera paketet. Den här parametern stöds endast vid signering av innehåll för Windows.
Certifikatkrav
Datorkonfigurationsagenten förväntar sig att certifikatets offentliga nyckel finns i "Betrodda utgivare" på Windows-datorer och i sökvägen /usr/local/share/ca-certificates/gc
på Linux-datorer. För att noden ska verifiera signerat innehåll installerar du den offentliga certifikatnyckeln på datorn innan du tillämpar den anpassade principen. Den här processen kan göras med valfri teknik på den virtuella datorn eller med hjälp av Azure Policy. Det finns en exempelmall för att distribuera en dator med ett certifikat. Åtkomstprincipen för Key Vault måste tillåta beräkningsresursprovidern att komma åt certifikat under distributioner. Detaljerade steg finns i Konfigurera Key Vault för virtuella datorer i Azure Resource Manager.
Följande är ett exempel för att exportera den offentliga nyckeln från ett signeringscertifikat för att importera till datorn.
$Cert = Get-ChildItem -Path cert:\LocalMachine\My |
Where-Object { $_.Subject-eq "CN=mycert3" } |
Select-Object -First 1
$Cert | Export-Certificate -FilePath "$env:temp\DscPublicKey.cer" -Force
Taggkrav
När innehållet har publicerats lägger du till en tagg med namn GuestConfigPolicyCertificateValidation
och värde enabled
på alla virtuella datorer där kodsignering ska krävas. Se Taggexempel för hur taggar kan levereras i stor skala med hjälp av Azure Policy. När den här taggen är på plats aktiverar principdefinitionen New-GuestConfigurationPolicy
som genereras med hjälp av cmdleten kravet via datorkonfigurationstillägget.
Relaterat innehåll
- Använd modulen
GuestConfiguration
för att skapa en Azure Policy-definition för hantering av din miljö i stor skala. - Tilldela din anpassade principdefinition med hjälp av Azure-portalen.
- Lär dig hur du visar efterlevnadsinformation för tilldelningar av datorkonfigurationsprinciper .
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för