Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Innan du börjar är det en bra idé att läsa översiktssidan för datorkonfiguration och information om maskinkonfigurationens reparationsalternativ.
Important
Datorkonfigurationstillägget krävs för virtuella Azure-datorer. Om du vill distribuera tillägget i stor skala på alla datorer tilldelar du följande principinitiativ: Deploy prerequisites to enable machine configuration policies on virtual machines
Om du vill använda datorkonfigurationspaket som tillämpar konfigurationer krävs gästkonfigurationstillägget för virtuella Azure-datorer version 1.26.24 eller senare, eller Arc-agenten 1.10.0 eller senare.
Konfigurationsprincipdefinitioner för anpassade datorer med antingen AuditIfNotExists eller DeployIfNotExists har stödstatus för allmänt tillgängliga (GA).
Använd följande steg för att skapa egna principer som granskar efterlevnad eller hanterar tillståndet för Azure- eller Arc-aktiverade datorer.
Installera PowerShell 7 och nödvändiga PowerShell-moduler
Konfigurera först en datorkonfigurationsredigeringsmiljö för att installera den version av PowerShell som krävs för ditt operativsystem och modulen GuestConfiguration.
Skapa och publicera en artefakt för datorkonfigurationspaket
Om du inte redan har gjort det skapar och publicerar du ett anpassat datorkonfigurationspaket genom att följa stegen i Skapa artefakter för anpassade datorkonfigurationspaket. Verifiera sedan paketet i utvecklingsmiljön genom att följa stegen i Testa maskinkonfigurationspaketartefakter.
Note
Exempelkoden i den här artikeln refererar till variabeln $contentUri . Om du använder samma PowerShell-session som de tidigare självstudierna för att skapa och testa paketartefakter kan variabeln redan ha URI:n till paketet.
Om du inte har variabeln $contentUri inställd på URI:n för ditt paket i PowerShell-sessionen måste du ange den. I det här exemplet används ett lagringskontos anslutningssträng. Sedan hämtar den lagringsbloben för det publicerade paketet och använder objektets egenskaper för att hämta innehålls-URI:n.
$connectionString = '<storage-account-connection-string>'
$context = New-AzStorageContext -ConnectionString $connectionString
$getParams = @{
Context = $context
Container = '<container-name>'
Blob = '<published-package-file-name>'
}
$blob = Get-AzStorageBlob @getParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri
Principkrav för datorkonfiguration
Avsnittet metadata för principdefinition måste innehålla två egenskaper för datorkonfigurationstjänsten för att automatisera etablering och rapportering av gästkonfigurationstilldelningar.
Kategoriegenskapen måste anges till Guest Configuration och ett avsnitt med namnet guestConfiguration måste innehålla information om datorkonfigurationstilldelningen. Cmdleten New-GuestConfigurationPolicy skapar den här texten automatiskt.
I följande exempel visas metadataavsnittet som skapas automatiskt av New-GuestConfigurationPolicy.
"metadata": {
"category": "Guest Configuration",
"guestConfiguration": {
"name": "test",
"version": "1.0.0",
"contentType": "Custom",
"contentUri": "CUSTOM-URI-HERE",
"contentHash": "CUSTOM-HASH-VALUE-HERE",
"configurationParameter": {}
}
}
Om definitionseffekten är inställd på DeployIfNotExistsmåste avsnittet innehålla distributionsinformation om en datorkonfigurationstilldelning. Cmdleten New-GuestConfigurationPolicy skapar den här texten automatiskt.
Skapa en Azure Policy-definition
När ett anpassat princippaket för datorkonfiguration har skapats och laddats upp skapar du definitionen av datorns konfigurationsprincip. Cmdleten New-GuestConfigurationPolicy tar ett anpassat princippaket och skapar en principdefinition.
Parametern för kräver en unik sträng. En globalt unik identifierare (GUID) krävs. För nya definitioner genererar du ett nytt GUID med hjälp av cmdleten New-GUID . När du gör uppdateringar av definitionen använder du samma unika sträng för PolicyId för att säkerställa att rätt definition uppdateras.
Cmdletens New-GuestConfigurationPolicy parametrar:
PolicyId: Ett GUID.
ContentUri: Offentliga HTTP-URI:er för innehållspaketet för datorkonfiguration.
DisplayName: Principvisningsnamn.
Beskrivning: Principbeskrivning.
Parameter: Principparametrar som anges i en hash-tabell.
PolicyVersion: Principversion.
Sökväg: Målsökväg där principdefinitioner skapas. Ange inte den här parametern som sökväg till en lokal kopia av paketet.
Plattform: Målplattform (Windows/Linux) för datorkonfigurationsprincip och innehållspaket.
Läge: (skiftlägeskänslig:
ApplyAndMonitor,ApplyAndAutoCorrect,Audit) väljer om principen ska granska eller distribuera konfigurationen. Standardvärdet ärAudit.Tagg: Lägger till ett eller flera taggfilter i principdefinitionen.
Kategori: Anger fältet kategorimetadata i principdefinitionen.
LocalContentPath: Sökvägen till den lokala kopian
.zipav paketfilen Machine Configuration. Den här parametern krävs om du använder en användartilldelad hanterad identitet för att ge åtkomst till en Azure Storage-blob.ManagedIdentityResourceId: Den
resourceIdanvändartilldelade hanterade identiteten som har läsbehörighet till Azure Storage-bloben som innehåller.zippaketfilen Machine Configuration. Den här parametern krävs om du använder en användartilldelad hanterad identitet för att ge åtkomst till en Azure Storage-blob.ExcludeArcMachines: Anger att principdefinitionen ska undanta Arc-datorer. Den här parametern krävs om du använder en användartilldelad hanterad identitet för att ge åtkomst till en Azure Storage-blob.
UseSystemAssignedIdentity: Det här är alternativet att använda den systemtilldelade identiteten för att ladda ned paketet från lagringskontocontainern i stället för att använda SaS-URL.
Du kan inte använda det här alternativet med ManagedIdentityResourceId. Alternativen är ömsesidigt uteslutande.
Du kan använda den här parametern utan alternativet ExcludeArcMachines eftersom den systemtilldelade identiteten är tillgänglig för Arc-datorer.
Important
Till skillnad från virtuella Azure-datorer stöder Arc-anslutna datorer för närvarande inte användartilldelade hanterade identiteter. Därför -ExcludeArcMachines krävs flaggan för att säkerställa att dessa datorer undantas från principdefinitionen. För att den virtuella Azure-datorn ska kunna ladda ned det tilldelade paketet och tillämpa principen måste gästkonfigurationsagenten vara version 1.29.82.0 eller högre för Windows och version 1.26.76.0 eller högre för Linux.
För Arc-anslutna maskiner kan du även använda systemtilldelade hanterade identiteter för att ladda ner paket.
Mer information om parametern Läge finns på sidan Så här konfigurerar du reparationsalternativ för datorkonfiguration.
Skapa en principdefinition som granskar med hjälp av ett anpassat konfigurationspaket i en angiven sökväg:
$PolicyConfig = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My audit policy'
Description = 'My audit policy'
Path = './policies/auditIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyConfig
Skapa en principdefinition som framtvingar ett anpassat konfigurationspaket i en angiven sökväg:
$PolicyConfig2 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
}
New-GuestConfigurationPolicy @PolicyConfig2
Skapa en principdefinition som tillämpar ett anpassat konfigurationspaket med hjälp av en användartilldelad hanterad identitet:
$PolicyConfig3 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
ManagedIdentityResourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig3 -ExcludeArcMachines
I det här scenariot måste du inaktivera inställningen Tillåt anonym blobåtkomst och tilldela rollen Storage Blob Data Reader för lagringskontot till identiteten.
Skapa en principdefinition som tillämpa ett anpassat konfigurationspaket med hjälp av en systemtilldelad hanterad identitet.
$PolicyConfig4 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig4 -UseSystemAssignedIdentity
I det här scenariot måste du inaktivera inställningen Tillåt anonym blobåtkomst och tilldela rollen Storage Blob Data Reader på lagringskontot till systemidentiteten.
Note
Du kan hämta resourceId för en hanterad identitet med hjälp av PowerShell-cmdleten Get-AzUserAssignedIdentity .
Cmdlet-utdata returnerar ett objekt som innehåller definitionsvisningsnamnet och sökvägen för principfilerna. Definitions-JSON-filer som skapar granskningsprincipdefinitioner har namnet auditIfNotExists.json och filerna som skapar principdefinitioner för att tillämpa konfigurationer har namnet deployIfNotExists.json.
Filtrera datorkonfigurationsprinciper med hjälp av taggar
Principdefinitionerna som skapas av cmdletar i modulen GuestConfiguration kan också innehålla ett filter för taggar. Taggparametern för New-GuestConfigurationPolicy stöder en matris med hash-tabeller som innehåller enskilda taggposter. Taggarna läggs till i if-avsnittet i principdefinitionen och kan inte ändras av en principtilldelning.
Ett exempelfragment av en principdefinition som filtrerar efter taggar följer.
"if": {
"allOf" : [
{
"allOf": [
{
"field": "tags.Owner",
"equals": "BusinessUnit"
},
{
"field": "tags.Role",
"equals": "Web"
}
]
},
{
// Original machine configuration content
}
]
}
Använda parametrar i definitioner för konfigurationsprinciper för anpassade datorer
Datorkonfiguration stöder åsidosättande egenskaper för en DSC-konfiguration vid körning. Den här funktionen innebär att värdena i MOF-filen i paketet inte behöver betraktas som statiska. Åsidosättningsvärdena tillhandahålls via Azure Policy och ändrar inte hur DSC-konfigurationerna skapas eller kompileras.
Datorkonfiguration stöder följande värdetyper för parametrar:
- String
- Boolean
- Double
- Float
Cmdletarna New-GuestConfigurationPolicy och Get-GuestConfigurationPackageComplianceStatus innehåller en parameter med namnet Parameter. Den här parametern tar en hashtabelldefinition med all information om varje parameter och skapar de nödvändiga avsnitten i varje fil som används för Azure Policy-definitionen.
I följande exempel skapas en principdefinition för granskning av en tjänst, där användaren väljer från en lista vid tidpunkten för principtilldelningen.
# This DSC resource definition...
Service 'UserSelectedNameExample' {
Name = 'ParameterValue'
Ensure = 'Present'
State = 'Running'
}
# ...can be converted to a hash table:
$PolicyParameterInfo = @(
@{
# Policy parameter name (mandatory)
Name = 'ServiceName'
# Policy parameter display name (mandatory)
DisplayName = 'windows service name.'
# Policy parameter description (optional)
Description = 'Name of the windows service to be audited.'
# DSC configuration resource type (mandatory)
ResourceType = 'Service'
# DSC configuration resource id (mandatory)
ResourceId = 'UserSelectedNameExample'
# DSC configuration resource property name (mandatory)
ResourcePropertyName = 'Name'
# Policy parameter default value (optional)
DefaultValue = 'winrm'
# Policy parameter allowed values (optional)
AllowedValues = @('BDESVC','TermService','wuauserv','winrm')
})
# ...and then passed into the `New-GuestConfigurationPolicy` cmdlet
$PolicyParam = @{
PolicyId = 'My GUID'
ContentUri = $contentUri
DisplayName = 'Audit Windows Service.'
Description = "Audit if a Windows Service isn't enabled on Windows machine."
Path = '.\policies\auditIfNotExists.json'
Parameter = $PolicyParameterInfo
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyParam
Publicera Azure Policy-definitionen
Slutligen kan du publicera principdefinitionerna med hjälp av cmdleten New-AzPolicyDefinition . Kommandona nedan publicerar din datorkonfigurationsprincip i principcentret.
Om du vill köra New-AzPolicyDefinition kommandot behöver du åtkomst för att skapa principdefinitioner i Azure.
De specifika auktoriseringskraven dokumenteras på sidan Översikt över Azure Policy. Den rekommenderade inbyggda rollen är Resource Policy Contributor.
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'
Om principen är en distribuerad om inte befintlig princip (DINE) använder du det här kommandot:
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'
När principdefinitionen har skapats i Azure är det sista steget att tilldela definitionen. Se hur du tilldelar definitionen med Portal, Azure CLI och Azure PowerShell.
Policy lifecycle
Om du vill släppa en uppdatering av principdefinitionen gör du ändringen för både gästkonfigurationspaketet och definitionsinformationen för Azure Policy.
Note
Egenskapen version för datorkonfigurationstilldelningen påverkar endast paket som hanteras av Microsoft. Det bästa sättet att versionshantera anpassat innehåll är att inkludera versionen i filnamnet.
När du kör New-GuestConfigurationPackageanger du först ett namn för paketet som gör det unikt från tidigare versioner. Du kan inkludera ett versionsnummer i namnet, till exempel PackageName_1.0.0. Talet i det här exemplet används bara för att göra paketet unikt, inte för att ange att paketet ska betraktas som nyare eller äldre än andra paket.
För det andra uppdaterar du de parametrar som används med cmdleten New-GuestConfigurationPolicy enligt var och en av följande förklaringar.
-
Version: När du kör cmdleten
New-GuestConfigurationPolicymåste du ange ett versionsnummer som är större än det som publiceras för närvarande. -
contentUri: När du kör cmdleten
New-GuestConfigurationPolicymåste du ange en URI till paketets plats. Om du inkluderar en paketversion i filnamnet ser du till att värdet för den här egenskapen ändras i varje version. -
contentHash: Cmdleten
New-GuestConfigurationPolicyuppdaterar den här egenskapen automatiskt. Det är ett hash-värde för paketet som skapats avNew-GuestConfigurationPackage. Egenskapen måste vara korrekt för den.zipfil som du publicerar. Om endast egenskapen contentUri uppdateras avvisar tillägget innehållspaketet.
Det enklaste sättet att släppa ett uppdaterat paket är att upprepa processen som beskrivs i den här artikeln och ange ett uppdaterat versionsnummer. Den processen garanterar att alla egenskaper har uppdaterats korrekt.
Next steps
- Tilldela din anpassade principdefinition med hjälp av Azure-portalen.
- Lär dig hur du visar efterlevnadsinformation för tilldelningar av datorkonfigurationsprinciper .