Sdílet prostřednictvím


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, Auditjestli se má zásada auditovat nebo nasadit konfiguraci. Výchozí hodnota je Audit.
  • 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-GuestConfigurationPackagezadejte 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živatelem New-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