Jak vytvořit vlastní definice zásad konfigurace počítače
Než začnete, je vhodné si přečíst stránku s přehledem konfigurace počítače a podrobnosti o možnostech nápravy konfigurace počítače.
Důležité
Rozšíření konfigurace počítače se vyžaduje pro virtuální počítače Azure. Pokud chcete rozšíření nasadit ve velkém měřítku na všech počítačích, přiřaďte následující iniciativu zásad: Deploy prerequisites to enable machine configuration policies on virtual machines
Pokud chcete používat balíčky konfigurace počítače, které používají konfigurace, vyžaduje se rozšíření konfigurace hosta virtuálního počítače Azure verze 1.26.24 nebo novější nebo agent Arc 1.10.0 nebo novější.
Definice vlastních zásad konfigurace počítačů používající buď AuditIfNotExists
nebo DeployIfNotExists
jsou ve stavu podpory obecně dostupné (GA).
Pomocí následujících kroků vytvořte vlastní zásady, které auditují dodržování předpisů nebo spravují stav počítačů s podporou Azure nebo Arc.
Instalace PowerShellu 7 a požadovaných modulů PowerShellu
Nejprve nastavte prostředí pro vytváření konfigurace počítače pro instalaci požadované verze PowerShellu pro váš operační systém a modul GuestConfiguration.
Vytvoření a publikování artefaktu balíčku konfigurace počítače
Pokud jste to ještě neudělali, vytvořte a publikujte vlastní konfigurační balíček počítače pomocí kroků v části Vytvoření artefaktů balíčku vlastní konfigurace počítače. Potom balíček ve vývojovém prostředí ověřte podle kroků v části Testování artefaktů konfiguračního balíčku počítače.
Poznámka:
Ukázkový kód v tomto článku odkazuje na proměnnou $contentUri
. Pokud ke vytváření a testování artefaktů balíčku používáte stejnou relaci PowerShellu jako v předchozích kurzech, může tato proměnná už mít identifikátor URI pro váš balíček.
Pokud nemáte proměnnou nastavenou $contentUri
na identifikátor URI balíčku v relaci PowerShellu, musíte ji nastavit. Tento příklad používá připojovací řetězec účtu úložiště a rutinu New-AzStorageContext
k vytvoření kontextu úložiště. Pak získá objekt blob úložiště pro publikovaný balíček a použije vlastnosti tohoto objektu k získání identifikátoru URI obsahu.
$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
Požadavky na zásady pro konfiguraci počítače
Část metadat definice zásad musí obsahovat dvě vlastnosti pro službu konfigurace počítače, aby se automatizovala zřizování a vytváření sestav přiřazení konfigurace hosta.
Vlastnost kategorie musí být nastavena na Guest Configuration
a oddíl s názvem guestConfiguration musí obsahovat informace o přiřazení konfigurace počítače. Rutina New-GuestConfigurationPolicy
vytvoří tento text automaticky.
Následující příklad ukazuje oddíl metadat, který je automaticky vytvořen 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": {}
}
}
Pokud je efekt definice nastaven na DeployIfNotExists
, oddíl musí obsahovat podrobnosti o nasazení přiřazení konfigurace počítače. Rutina New-GuestConfigurationPolicy
vytvoří tento text automaticky.
Vytvoření definice služby Azure Policy
Po vytvoření a nahrání balíčku vlastních zásad konfigurace počítače vytvořte definici zásad konfigurace počítače. Rutina New-GuestConfigurationPolicy
vezme vlastní balíček zásad a vytvoří definici zásady.
Parametr New-GuestConfigurationPolicy
PolicyId vyžaduje jedinečný řetězec. Vyžaduje se globálně jedinečný identifikátor (GUID). Pro nové definice vygenerujte nový identifikátor GUID pomocí rutiny New-GUID
. Při provádění aktualizací definice použijte stejný jedinečný řetězec pro PolicyId k zajištění aktualizace správné definice.
Parametry rutiny New-GuestConfigurationPolicy
:
- PolicyId: IDENTIFIKÁTOR GUID.
- ContentUri: Identifikátor URI veřejného http(ů) balíčku konfiguračního obsahu počítače.
- DisplayName: Zobrazovaný název zásady.
- Popis: Popis zásady.
- Parametr: Parametry zásad zadané v tabulce hash
- PolicyVersion: Verze zásad.
- Cesta: Cílová cesta, kde se vytvářejí definice zásad. Nezadávejte tento parametr jako cestu k místní kopii balíčku.
- Platforma: Cílová platforma (Windows/Linux) pro zásady konfigurace počítače a balíček obsahu.
- Režim: (rozlišují se malá a velká písmena:
ApplyAndMonitor
,ApplyAndAutoCorrect
) zvolte,Audit
jestli se má zásada auditovat nebo nasadit konfiguraci. Výchozí hodnota jeAudit
. - Značka: Přidá do definice zásady jeden nebo více filtrů značek.
- Kategorie: Nastaví pole metadat kategorií v definici zásady.
- LocalContentPath: Cesta k místní kopii
.zip
souboru balíčku Konfigurace počítače. Tento parametr se vyžaduje, pokud k poskytnutí přístupu k objektu blob Azure Storge používáte spravovanou identitu přiřazenou uživatelem. - ManagedIdentityResourceId: Spravovaná
resourceId
identita přiřazená uživatelem, která má přístup pro čtení k objektu blob služby Azure Storage obsahujícímu.zip
soubor balíčku konfigurace počítače. Tento parametr se vyžaduje, pokud k poskytnutí přístupu k objektu blob Azure Storge používáte spravovanou identitu přiřazenou uživatelem. - ExcludeArcMachines: Určuje, že definice zásady by měla vyloučit počítače Arc. Tento parametr se vyžaduje, pokud k poskytnutí přístupu k objektu blob Azure Storge používáte spravovanou identitu přiřazenou uživatelem.
Důležité
Na rozdíl od virtuálních počítačů Azure aktuálně počítače připojené k Arc nepodporují spravované identity přiřazené uživatelem. V důsledku toho -ExcludeArcMachines
je příznak nutný k zajištění vyloučení těchto počítačů z definice zásady. Aby virtuální počítač Azure stáhl přiřazený balíček a použil zásadu, musí mít agent konfigurace hosta verzi 1.29.82.0
nebo vyšší pro Windows a verzi 1.26.76.0
nebo vyšší pro Linux.
Další informace o parametru Mode naleznete na stránce Jak nakonfigurovat možnosti nápravy pro konfiguraci počítače.
Vytvořte definici zásad, která provede audit pomocí vlastního konfiguračního balíčku v zadané cestě:
$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
Vytvořte definici zásady, která vynucuje vlastní konfigurační balíček v zadané cestě:
$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
Vytvořte definici zásady, která vynucuje vlastní konfigurační balíček pomocí spravované identity přiřazené uživatelem:
$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
Poznámka:
ResorceId spravované identity můžete načíst pomocí rutiny PowerShellu Get-AzUserAssignedIdentity
.
Výstup rutiny vrátí objekt obsahující zobrazovaný název definice a cestu k souborům zásad. Definiční soubory JSON, které vytvářejí definice zásad auditu, mají název auditIfNotExists.json
a soubory, které vytvářejí definice zásad pro použití konfigurací.deployIfNotExists.json
Filtrování zásad konfigurace počítačů pomocí značek
Definice zásad vytvořené rutinami v modulu GuestConfiguration můžou volitelně obsahovat filtr pro značky. Parametr New-GuestConfigurationPolicy
Tag podporuje pole hash tabulek obsahujících jednotlivé položky značek. Značky se přidají do části definice zásady, kterou nelze upravit přiřazením zásady.
Příklad fragmentu definice zásady, která filtruje značky, následuje.
"if": {
"allOf" : [
{
"allOf": [
{
"field": "tags.Owner",
"equals": "BusinessUnit"
},
{
"field": "tags.Role",
"equals": "Web"
}
]
},
{
// Original machine configuration content
}
]
}
Použití parametrů v definicích zásad konfigurace vlastních počítačů
Konfigurace počítače podporuje přepsání vlastností konfigurace DSC za běhu. Tato funkce znamená, že hodnoty v souboru MOF v balíčku nemusí být považovány za statické. Hodnoty přepsání jsou poskytovány prostřednictvím služby Azure Policy a nemění způsob vytváření nebo kompilace konfigurací DSC.
Konfigurace počítače podporuje pro parametry následující typy hodnot:
- String
- Logická hodnota
- Hodnota s dvojitou přesností
- Float
Rutiny New-GuestConfigurationPolicy
a Get-GuestConfigurationPackageComplianceStatus
zahrnují parametr s názvem Parameter. Tento parametr přebírá definici hashovací tabulky včetně všech podrobností o jednotlivých parametrech a vytvoří požadované části každého souboru použitého pro definici služby Azure Policy.
Následující příklad vytvoří definici zásady pro audit služby, kde uživatel vybere ze seznamu v době přiřazení zásad.
# 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
Publikování definice služby Azure Policy
Nakonec můžete pomocí rutiny New-AzPolicyDefinition
publikovat definice zásad. Následující příkazy publikují zásady konfigurace počítače do centra zásad.
Ke spuštění New-AzPolicyDefinition
příkazu potřebujete přístup k vytváření definic zásad v Azure.
Konkrétní požadavky na autorizaci jsou popsané na stránce Přehled služby Azure Policy. Doporučená předdefinovaná role je Resource Policy Contributor
.
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'
Nebo pokud je zásada nasazením, pokud neexistuje zásada (DINE), použijte tento příkaz:
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'
S definicí zásad vytvořenou v Azure je posledním krokem přiřazení definice. Zjistěte, jak přiřadit definici pomocí portálu, Azure CLI a Azure PowerShellu.
Životní cyklus zásad
Pokud chcete vydat aktualizaci definice zásady, proveďte změnu balíčku konfigurace hosta i podrobností o definici služby Azure Policy.
Poznámka:
version
Vlastnost přiřazení konfigurace počítače má vliv pouze na balíčky hostované Microsoftem. Osvědčeným postupem pro správu verzí vlastního obsahu je zahrnout verzi do názvu souboru.
Nejprve při spuštění New-GuestConfigurationPackage
zadejte název balíčku, který je jedinečný z dřívějších verzí. Do názvu můžete zahrnout číslo verze, například PackageName_1.0.0
. Číslo v tomto příkladu slouží pouze k vytvoření jedinečného balíčku, nikoli k určení, že by měl být balíček považován za novější nebo starší než jiné balíčky.
Za druhé aktualizujte parametry použité s rutinou New-GuestConfigurationPolicy
za každým z následujících vysvětlení.
- Verze: Při spuštění rutiny
New-GuestConfigurationPolicy
musíte zadat číslo verze větší než aktuálně publikované. - contentUri: Při spuštění rutiny
New-GuestConfigurationPolicy
musíte zadat identifikátor URI pro umístění balíčku. Zahrnutí verze balíčku do názvu souboru zajišťuje, že hodnota této vlastnosti se v každé vydané verzi změní. - contentHash: Rutina
New-GuestConfigurationPolicy
aktualizuje tuto vlastnost automaticky. Jedná se o hodnotu hash balíčku vytvořeného uživatelemNew-GuestConfigurationPackage
. Vlastnost musí být správná pro soubor, který.zip
publikujete. Pokud je aktualizována pouze vlastnost contentUri , rozšíření odmítne balíček obsahu.
Nejjednodušší způsob, jak uvolnit aktualizovaný balíček, je zopakovat proces popsaný v tomto článku a zadat aktualizované číslo verze. Tento proces zaručuje, že všechny vlastnosti byly správně aktualizovány.
Další kroky
- 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.