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 AuditIfNotExists
DeployIfNotExists
á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-GuestConfigurationPolicy
a 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 DeployIfNotExists
van á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
)Audit
válassza ki, hogy a szabályzatnak naplóznia vagy telepítenie kell-e a konfigurációt. Az alapértelmezett értékAudit
. - 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-GuestConfigurationPackage
adja 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 csomagNew-GuestConfigurationPackage
kivonaté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
- Egyéni szabályzatdefiníció hozzárendelése az Azure Portal használatával.
- Megtudhatja, hogyan tekintheti meg a gépkonfigurációs házirend-hozzárendelések megfelelőségi részleteit.