Como assinar pacotes de configuração de computador
As políticas personalizadas da configuração de computador usam o hash SHA256 para validar que o pacote de políticas não foi alterado. Como opção, os clientes também podem usar um certificado para assinar pacotes e forçar a extensão de configuração de computador a permitir somente o conteúdo assinado.
Para habilitar esse cenário, duas etapas precisam ser concluídas. Execute o cmdlet para assinar o pacote de conteúdo e acrescente uma tag para os computadores que devem exigir que o código seja assinado.
Validação de assinatura usando um certificado de autenticação de código
Para usar o recurso de Validação de Assinatura, execute o cmdlet Protect-GuestConfigurationPackage
para assinar o pacote antes que ele seja publicado. Esse cmdlet requer um certificado de “Assinatura de Código”. Se não tiver um certificado de "Assinatura de Código", use o script a seguir para criar um certificado autoassinado para fins de teste e acompanhar o exemplo.
Validação de assinatura do 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'
}
$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
Validação de assinatura do Linux
# 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
Parâmetros do cmdlet Protect-GuestConfigurationPackage
:
- Caminho: caminho completo do pacote de configuração de computador.
- Certificado: certificado de autenticação de código para assinar o pacote. Esse parâmetro só tem suporte ao assinar um conteúdo para o Windows.
Requisitos de certificado
O agente de configuração de máquina espera que a chave pública do certificado esteja presente no "Editor Confiável" nos computadores Windows e no caminho /usr/local/share/ca-certificates/gc
nos computadores Linux. Para que o nó verifique o conteúdo assinado, instale a chave pública do certificado no computador antes de aplicar a política personalizada. Esse processo pode ser feito usando qualquer técnica dentro da VM ou usando o Azure Policy. Um modelo de exemplo está disponível para implantar um computador com um certificado. A política de acesso de Key Vault deve permitir o acesso do provedor de recursos de computação a certificados durante as implantações. Para obter etapas detalhadas, confira Configurar o Key Vault para máquinas virtuais no Azure Resource Manager.
A seguir, é apresentado um exemplo para exportar a chave pública de um certificado de assinatura e importar para o computador.
$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
Requisitos de tag
Depois que o conteúdo for publicado, acrescente uma tag com o nome GuestConfigPolicyCertificateValidation
e o valor enabled
a todas as máquinas virtuais em que a assinatura de código deve ser necessária. Consulte as Amostras de tag sobre como tags podem ser entregues em escala usando o Azure Policy. Depois que essa tag estiver sendo usada, a definição de política gerada usando o cmdlet New-GuestConfigurationPolicy
habilita o requisito por meio da extensão da configuração de computador.
Conteúdo relacionado
- Use o módulo
GuestConfiguration
para criar uma definição do Azure Policy para o gerenciamento em escala do seu ambiente. - Atribua sua definição de política personalizada usando o portal do Azure.
- Saiba como ver os detalhes de conformidade para atribuições da política de configuração de computador.