Jak podepsat balíčky konfigurace počítače
Vlastní zásady konfigurace počítače používají hodnotu hash SHA256 k ověření, že se balíček zásad nezměnil. Volitelně můžou zákazníci také použít certifikát k podepisování balíčků a vynutit rozšíření konfigurace počítače tak, aby umožňovalo jenom podepsaný obsah.
Pokud chcete tento scénář povolit, musíte provést dva kroky:
- Spuštěním rutiny podepište balíček obsahu.
- Připojte značku k počítačům, které by měly vyžadovat podepsání kódu.
Ověření podpisu pomocí podpisového certifikátu kódu
Pokud chcete použít funkci Ověření podpisu, spusťte rutinu Protect-GuestConfigurationPackage
a podepište balíček před jeho publikováním. Tato rutina vyžaduje certifikát Podepisování kódu. Pokud nemáte certifikát "Podepisování kódu", pomocí následujícího skriptu vytvořte certifikát podepsaný svým držitelem pro účely testování, abyste mohli postupovat podle příkladu.
Ověření podpisu systému Windows
# 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
Ověřování podpisu v Linuxu
# 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
Parametry rutiny Protect-GuestConfigurationPackage
:
- Cesta: Úplná cesta k balíčku konfigurace počítače.
- Certifikát: Podpisový certifikát kódu pro podepsání balíčku. Tento parametr se podporuje pouze při podepisování obsahu pro Windows.
- PrivateGpgKeyPath: Úplná cesta k souboru privátního klíče
.gpg
. Tento parametr se podporuje jenom při podepisování obsahu pro Linux. - PublicGpgKeyPath: Úplná cesta k souboru veřejného klíče
.gpg
. Tento parametr se podporuje jenom při podepisování obsahu pro Linux.
Požadavky na certifikáty
Agent konfigurace počítače očekává, že veřejný klíč certifikátu bude na počítačích s Windows a v cestě /usr/local/share/ca-certificates/gc
na počítačích s Linuxem k dispozici veřejný klíč certifikátu. Aby uzel ověřil podepsaný obsah, nainstalujte na počítač veřejný klíč certifikátu před použitím vlastní zásady.
Veřejný klíč certifikátu můžete nainstalovat pomocí normálních nástrojů uvnitř virtuálního počítače nebo pomocí Služby Azure Policy. Ukázková šablona pomocí Azure Policy ukazuje, jak můžete nasadit počítač s certifikátem. Zásady přístupu ke službě Key Vault musí poskytovateli výpočetních prostředků povolit přístup k certifikátům během nasazení. Podrobný postup najdete v tématu Nastavení služby Key Vault pro virtuální počítače v Azure Resource Manageru.
Následuje příklad exportu veřejného klíče z podpisového certifikátu pro import do počítače.
$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
Požadavky na značky
Po publikování obsahu připojte značku s názvem GuestConfigPolicyCertificateValidation
a hodnotou enabled
ke všem virtuálním počítačům, kde by se mělo vyžadovat podepisování kódu. Ukázky značek vám pomůžou dodat značky ve velkém měřítku pomocí Azure Policy. Jakmile je tato značka na místě, definice zásady vygenerovaná pomocí New-GuestConfigurationPolicy
rutiny umožňuje požadavek prostřednictvím rozšíření konfigurace počítače.
Související obsah
- Použití modulu
GuestConfiguration
k vytvoření definice Azure Policy a zajištění správy prostředí ve velkém měřítku - Přiřazení vlastní definice zásad pomocí webu Azure Portal
- Zjistěte, jak zobrazit podrobnosti o dodržování předpisů pro přiřazení zásad konfigurace počítače.