Egyéni gép konfigurációs szabályzatdefinícióinak létrehozása

Mielőtt hozzákezdene, érdemes elolvasni a gépkonfiguráció áttekintési oldalát és a gépkonfiguráció szervizelési beállításainak részleteit.

Fontos

A gép konfigurációs bővítménye szükséges az Azure-beli virtuális gépekhez. Ha a bővítményt minden gépen nagy léptékben szeretné üzembe helyezni, rendelje hozzá a következő szabályzatkezdeményezést: Deploy prerequisites to enable machine configuration policies on virtual machines

A konfigurációkat alkalmazó gépkonfigurációs csomagok használatához az Azure-beli virtuális gép vendégkonfigurációs bővítményének 1.26.24-es vagy újabb verziójára vagy az Arc-ügynök 1.10.0-s vagy újabb verziójára van szükség.

Egyéni gépkonfigurációs szabályzatdefiníciók AuditIfNotExistsDeployIfNotExists általánosan elérhető vagy általánosan elérhető támogatási állapotban vannak.

Az alábbi lépésekkel létrehozhat saját szabályzatokat, amelyek az Azure- vagy Arc-kompatibilis gépek állapotát naplózzák vagy felügyelik.

A PowerShell 7 és a szükséges PowerShell-modulok telepítése

Először állítson be egy gépkonfiguráció-készítő környezetet a PowerShell szükséges verziójának telepítéséhez az operációs rendszerhez és a GuestConfiguration modulhoz.

Gépkonfigurációs csomag összetevőjének létrehozása és közzététele

Ha még nem tette meg, hozzon létre és tegyen közzé egy egyéni gépkonfigurációs csomagot az Egyéni gép konfigurációs csomag összetevőinek létrehozása című témakör lépéseit követve. Ezután ellenőrizze a csomagot a fejlesztői környezetben a Gépkonfigurációs csomag összetevőinek tesztelése című témakörben leírt lépések végrehajtásával.

Feljegyzés

A cikkben szereplő példakód a változóra $contentUri hivatkozik. Ha ugyanazt a PowerShell-munkamenetet használja, mint a csomagösszetevők létrehozására és tesztelésére vonatkozó korábbi oktatóanyagok, akkor előfordulhat, hogy a változó már rendelkezik a csomag URI-val.

Ha a PowerShell-munkamenetben nem állítja be a $contentUri csomag URI-jának változóját, be kell állítania. Ez a példa egy tárfiók kapcsolati sztring és a New-AzStorageContext parancsmag használatával hoz létre egy tárolási környezetet. Ezután lekéri a közzétett csomaghoz tartozó tárolóblobot, és az objektum tulajdonságaival szerzi be a tartalom URI-ját.

$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

A gépkonfiguráció házirendkövetelményei

A szabályzatdefiníció metaadat-szakaszának tartalmaznia kell a gépkonfigurációs szolgáltatás két tulajdonságát a vendégkonfigurációs hozzárendelések kiépítésének és jelentésének automatizálásához. A kategóriatulajdonságot be kell állítani, Guest Configuration és a guestConfiguration nevű szakasznak tartalmaznia kell a gépkonfiguráció-hozzárendeléssel kapcsolatos információkat. A New-GuestConfigurationPolicy parancsmag automatikusan létrehozza ezt a szöveget.

Az alábbi példa a metaadat-szakaszt mutatja be, amelyet New-GuestConfigurationPolicya rendszer automatikusan létrehoz.

"metadata": {
    "category": "Guest Configuration",
    "guestConfiguration": {
        "name": "test",
        "version": "1.0.0",
        "contentType": "Custom",
        "contentUri": "CUSTOM-URI-HERE",
        "contentHash": "CUSTOM-HASH-VALUE-HERE",
        "configurationParameter": {}
    }
}

Ha a definíciós effektus értéke be DeployIfNotExistsvan állítva, akkor a szakasznak tartalmaznia kell egy gépkonfiguráció-hozzárendelés üzembe helyezési adatait. A New-GuestConfigurationPolicy parancsmag automatikusan létrehozza ezt a szöveget.

Azure Policy-definíció létrehozása

Miután létrehozott és feltöltött egy egyéni gépkonfigurációs egyéni házirendcsomagot, hozza létre a gép konfigurációs szabályzatdefinícióját. A New-GuestConfigurationPolicy parancsmag egy egyéni szabályzatcsomagot vesz igénybe, és létrehoz egy szabályzatdefiníciót.

A PolicyId paraméterhez New-GuestConfigurationPolicy egyedi sztring szükséges. Globálisan egyedi azonosítóra (GUID) van szükség. Új definíciók esetén hozzon létre egy új GUID-t a New-GUID parancsmag használatával. A definíció frissítésekor használja ugyanazt az egyedi sztringet a PolicyId-hez a megfelelő definíció frissítéséhez.

A parancsmag paraméterei New-GuestConfigurationPolicy :

  • PolicyId: GUID.
  • ContentUri: A gépkonfigurációs tartalomcsomag nyilvános HTTP-URI-ja.
  • DisplayName: Szabályzat megjelenítendő neve.
  • Leírás: Szabályzat leírása.
  • Paraméter: Kivonattáblában megadott szabályzatparaméterek.
  • PolicyVersion: Szabályzat verziója.
  • Elérési út: Cél elérési útja, ahol a szabályzatdefiníciók létrejönnek.
  • Platform: Célplatform (Windows/Linux) gépkonfigurációs szabályzathoz és tartalomcsomaghoz.
  • Mód: (kis- és nagybetűk megkülönböztetése: ApplyAndMonitor, ApplyAndAutoCorrect) Auditválassza ki, hogy a szabályzatnak naplóznia vagy telepítenie kell-e a konfigurációt. Az alapértelmezett érték Audit.
  • A címke egy vagy több címkeszűrőt ad hozzá a szabályzatdefinícióhoz
  • A Kategória a kategória metaadat mezőjét állítja be a szabályzatdefinícióban

A Mód paraméterről további információt a Gépkonfiguráció szervizelési beállításainak konfigurálása című lapon talál.

Hozzon létre egy szabályzatdefiníciót, amely egy egyéni konfigurációs csomag használatával naplóz egy megadott elérési úton:

$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

Hozzon létre egy szabályzatdefiníciót, amely egyéni konfigurációs csomag használatával helyezi üzembe a konfigurációt egy megadott elérési úton:

$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

A parancsmag kimenete egy objektumot ad vissza, amely tartalmazza a szabályzatfájlok definíciójának megjelenítendő nevét és elérési útját. Az auditszabályzat-definíciókat létrehozó definíciós JSON-fájlok neve auditIfNotExists.json és a konfigurációk alkalmazásához szabályzatdefiníciókat létrehozó fájlok neve deployIfNotExists.json.

Gépkonfigurációs szabályzatok szűrése címkékkel

A Vendégkonfiguráció modul parancsmagjai által létrehozott szabályzatdefiníciók opcionálisan tartalmazhatnak címkék szűrőt. A Címke paraméter New-GuestConfigurationPolicy támogatja az egyes címkebejegyzéseket tartalmazó kivonattáblák tömbjét. A címkék hozzá lesznek adva a szabályzatdefiníció if szakaszához, és szabályzat-hozzárendeléssel nem módosíthatók.

Példarészlet egy olyan szabályzatdefinícióról, amely a címkékre szűr.

"if": {
  "allOf" : [
    {
      "allOf": [
        {
          "field": "tags.Owner",
          "equals": "BusinessUnit"
        },
        {
          "field": "tags.Role",
          "equals": "Web"
        }
      ]
    },
    {
      // Original machine configuration content
    }
  ]
}

Paraméterek használata egyéni gép konfigurációs szabályzatdefinícióiban

A gépkonfiguráció támogatja a DSC-konfigurációk felülbírálását futásidőben. Ez a funkció azt jelenti, hogy a csomag MOF-fájljának értékeit nem kell statikusnak tekinteni. A felülbírálási értékeket az Azure Policy biztosítja, és nem módosítja a DSC-konfigurációk létrehozásának vagy fordításának módját.

A gépkonfiguráció a következő értéktípusokat támogatja paraméterek esetén:

  • Sztring
  • Logikai
  • Dupla
  • Lebegőpontos értékek

A parancsmagok New-GuestConfigurationPolicy egy Get-GuestConfigurationPackageComplianceStatus Paraméter nevű paramétert tartalmaznak. Ez a paraméter egy kivonattábla-definíciót használ, amely tartalmazza az egyes paraméterek összes részletét, és létrehozza az Azure Policy-definícióhoz használt fájlok szükséges szakaszait.

Az alábbi példa létrehoz egy szabályzatdefiníciót egy szolgáltatás naplózásához, ahol a felhasználó kiválaszt egy listát a szabályzat-hozzárendeléskor.

# 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

Az Azure Policy definíciójának közzététele

Végül közzéteheti a szabályzatdefiníciókat a New-AzPolicyDefinition parancsmaggal. Az alábbi parancsok közzéteszik a gépkonfigurációs szabályzatot a házirendközpontban.

A New-AzPolicyDefinition parancs futtatásához hozzáférésre van szüksége a szabályzatdefiníciók azure-beli létrehozásához. A konkrét engedélyezési követelményeket az Azure Policy áttekintési oldalán dokumentáljuk. A javasolt beépített szerepkör a következő Resource Policy Contributor: .

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'

Vagy ha a szabályzat üzembe helyezés, ha nem létezik szabályzat (DINE) használja ezt a parancsot:

New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'

Az Azure-ban létrehozott szabályzatdefinícióval az utolsó lépés a definíció hozzárendelése. Megtudhatja, hogyan rendelheti hozzá a definíciót a Portalhoz, az Azure CLI-hez és az Azure PowerShellhez.

Szabályzat életciklusa

Ha frissíteni szeretné a szabályzatdefiníciót, módosítsa mind a vendégkonfigurációs csomag, mind az Azure Policy definíciójának részleteit.

Feljegyzés

A version gépkonfiguráció-hozzárendelés tulajdonsága csak a Microsoft által üzemeltetett effektuscsomagokat befolyásolja. Az egyéni tartalom verziószámozásának ajánlott eljárása, ha a verziót belefoglalja a fájlnévbe.

Először is a futtatáskor New-GuestConfigurationPackageadja meg a csomag nevét, amely egyedivé teszi a korábbi verziókból. A névben szerepelhet egy verziószám, például PackageName_1.0.0: . A példában szereplő szám csak a csomag egyedivé alakítására szolgál, nem pedig annak megadására, hogy a csomagot újabbnak vagy régebbinek kell-e tekinteni, mint a többi csomag.

Másodszor frissítse a parancsmaggal New-GuestConfigurationPolicy együtt használt paramétereket az alábbi magyarázatok mindegyikét követve.

  • Verzió: A New-GuestConfigurationPolicy parancsmag futtatásakor a jelenleg közzétettnél nagyobb verziószámot kell megadnia.
  • contentUri: A parancsmag futtatásakor New-GuestConfigurationPolicy meg kell adnia egy URI-t a csomag helyére. Ha egy csomagverziót beleszámít a fájlnévbe, a tulajdonság értéke minden kiadásban megváltozik.
  • contentHash: A New-GuestConfigurationPolicy parancsmag automatikusan frissíti ezt a tulajdonságot. Ez a létrehozott csomag New-GuestConfigurationPackagekivonatértéke. A tulajdonságnak helyesnek kell lennie a .zip közzétett fájlhoz. Ha csak a contentUri tulajdonság frissül, a bővítmény elutasítja a tartalomcsomagot.

A frissített csomagok kiadásának legegyszerűbb módja a cikkben leírt folyamat megismétlése és a frissített verziószám megadása. Ez a folyamat garantálja, hogy az összes tulajdonság megfelelően frissült.

Következő lépések