Rövid útmutató: Szabályzat-hozzárendelés létrehozása a nem megfelelő erőforrások ARM-sablonnal történő azonosításához
Ebben a rövid útmutatóban egy Azure Resource Manager-sablont (ARM-sablont) használ egy szabályzat-hozzárendelés létrehozásához, amely ellenőrzi, hogy az erőforrás megfelel-e egy Azure-szabályzatnak. A szabályzat egy erőforráscsoporthoz van rendelve, és naplóz egy felügyelt lemezt nem használó virtuális gépeket. A szabályzat-hozzárendelés létrehozása után azonosítja a nem megfelelő virtuális gépeket.
Az Azure Resource Manager-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. Az üzembe helyezés létrehozásához szükséges programozási parancsok sorozatának megírása nélkül írhatja le a tervezett üzembe helyezést.
Ha a környezet megfelel az előfeltételeknek, és már ismeri az ARM-sablonokat, kattintson az Üzembe helyezés az Azure-ban gombra. A sablon megnyílik az Azure Portalon.
Beépített szabályzat- vagy kezdeményezésdefiníciók hozzárendelésekor nem kötelező egy verzióra hivatkozni. A beépített definíciók házirend-hozzárendelései alapértelmezés szerint a legújabb verzióhoz lesznek hozzárendelve, és ha másként nincs megadva, automatikusan öröklik az alverzió módosításait.
Előfeltételek
- Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
- Azure PowerShell vagy Azure CLI.
- A Visual Studio Code és az Azure Resource Manager (ARM) eszközei.
Microsoft.PolicyInsights
Regisztrálni kell az Azure-előfizetésében. Erőforrás-szolgáltató regisztrálásához engedéllyel kell rendelkeznie az erőforrás-szolgáltatók regisztrálásához. Ez az engedély szerepel a közreműködői és tulajdonosi szerepkörökben.- Legalább egy olyan virtuális géppel rendelkező erőforráscsoport, amely nem használ felügyelt lemezeket.
A sablon áttekintése
Az ARM-sablon létrehoz egy szabályzat-hozzárendelést egy erőforráscsoport-hatókörhöz, és hozzárendeli a felügyelt lemezeket nem használó beépített szabályzatdefiníciós naplózási virtuális gépeket.
Hozza létre a következő ARM-sablont policy-assignment.json.
- Nyissa meg a Visual Studio Code-ot, és válassza az Új szövegfájl fájlja>lehetőséget.
- Másolja és illessze be az ARM-sablont a Visual Studio Code-ba.
- Válassza a Fájl>mentése lehetőséget, és használja a policy-assignment.json fájlnevet.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyAssignmentName": {
"type": "string",
"defaultValue": "audit-vm-managed-disks",
"metadata": {
"description": "Policy assignment name used in assignment's resource ID"
}
},
"policyDefinitionID": {
"type": "string",
"defaultValue": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
"metadata": {
"description": "Policy definition ID"
}
},
"policyDisplayName": {
"type": "string",
"defaultValue": "Audit VM managed disks",
"metadata": {
"description": "Display name for Azure portal"
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2023-04-01",
"name": "[parameters('policyAssignmentName')]",
"properties": {
"policyDefinitionId": "[parameters('policyDefinitionID')]",
"description": "Policy assignment to resource group scope created with ARM template",
"displayName": "[parameters('policyDisplayName')]",
"nonComplianceMessages": [
{
"message": "Virtual machines should use managed disks"
}
]
}
}
],
"outputs": {
"assignmentId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/policyAssignments', parameters('policyAssignmentName'))]"
}
}
}
Az ARM-sablonban definiált erőforrástípus a Microsoft.Authorization/policyAssignments.
A sablon három paramétert használ a szabályzat-hozzárendelés üzembe helyezéséhez:
policyAssignmentName
létrehozza az audit-vm-managed-disks nevű szabályzat-hozzárendelést.policyDefinitionID
A beépített szabályzatdefiníció azonosítóját használja. Hivatkozásként az azonosító lekérésére szolgáló parancsok a sablon üzembe helyezésének szakaszában találhatók.policyDisplayName
az Azure Portalon látható megjelenítendő nevet hoz létre.
További információ az ARM-sablonfájlokról:
- További ARM-sablonmintákat a Kódminták tallózása című témakörben talál.
- Ha többet szeretne megtudni az üzembe helyezési sablonreferenciákról, tekintse meg az Azure-sablonreferenciát.
- Az ARM-sablonok fejlesztésének megismeréséhez tekintse meg az ARM-sablon dokumentációját.
- Az előfizetési szintű üzembe helyezésekkel kapcsolatos információkért nyissa meg az Előfizetések üzembe helyezését ARM-sablonokkal.
Az ARM-sablon üzembe helyezése
Az ARM-sablont az Azure PowerShell vagy az Azure CLI használatával helyezheti üzembe.
Egy Visual Studio Code-terminál munkamenetből csatlakozzon az Azure-hoz. Ha több előfizetéssel rendelkezik, futtassa a parancsokat az előfizetés környezetének beállításához. Cserélje le a <subscriptionID>
értékét a saját Azure-előfizetése azonosítójára.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Ellenőrizheti, hogy regisztrálva van-e Microsoft.PolicyInsights
. Ha nem, futtathat egy parancsot az erőforrás-szolgáltató regisztrálásához.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
További információ: Get-AzResourceProvider és Register-AzResourceProvider.
A következő parancsok a policyDefinitionID
paraméter értékét jelenítik meg:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Az alábbi parancsok üzembe helyezik a szabályzatdefiníciót az erőforráscsoportban. Cserélje le <resourceGroupName>
az erőforráscsoport nevére:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.json'
}
New-AzResourceGroupDeployment @deployparms
A $rg
változó az erőforráscsoport tulajdonságait tárolja. A $deployparms
változó splatting használatával hozza létre a paraméterértékeket, és javítja az olvashatóságot. A New-AzResourceGroupDeployment
parancs a változóban definiált $deployparms
paraméterértékeket használja.
Name
a kimenetben és az Azure-ban az erőforráscsoport üzemelő példányaihoz megjelenített üzembehelyezési név.ResourceGroupName
A tulajdonság használatával$rg.ResourceGroupName
lekérheti annak az erőforráscsoportnak a nevét, amelyhez a szabályzat hozzá van rendelve.TemplateFile
megadja az ARM-sablon nevét és helyét a helyi számítógépen.
A szabályzat-hozzárendelés üzembe helyezését a következő paranccsal ellenőrizheti:
A parancs a $rg.ResourceId
tulajdonság használatával kéri le az erőforráscsoport azonosítóját.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Name : audit-vm-managed-disks
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName : audit-vm-managed-disks
ResourceGroupName : {resourceGroupName}
ResourceType : Microsoft.Authorization/policyAssignments
SubscriptionId : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties
További információ: Get-AzPolicyAssignment.
A nem megfelelő erőforrások azonosítása
A szabályzat-hozzárendelés üzembe helyezése után az erőforráscsoportban üzembe helyezett virtuális gépeket a rendszer a felügyelt lemezházirendnek való megfelelés érdekében naplózja.
Az új szabályzat-hozzárendelés megfelelőségi állapota néhány percet vesz igénybe, amíg aktívvá válik, és eredményeket ad a szabályzat állapotáról.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
A $complianceparms
változó a parancsban Get-AzPolicyState
használt paraméterértékeket hozza létre.
ResourceGroupName
lekéri az erőforráscsoport nevét a$rg.ResourceGroupName
tulajdonságból.PolicyAssignmentName
A szabályzat-hozzárendelés létrehozásakor használt nevet adja meg.Filter
kifejezéssel megkeresi azokat az erőforrásokat, amelyek nem felelnek meg a szabályzat-hozzárendelésnek.
Az eredmények az alábbi példához hasonlítanak, és ComplianceState
a következőket jelenítik meg NonCompliant
:
Timestamp : 2/26/2024 19:02:56
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant : False
SubscriptionId : {subscriptionId}
ResourceType : Microsoft.Compute/virtualMachines
ResourceLocation : {location}
ResourceGroup : {resourceGroupName}
ResourceTags : tbd
PolicyAssignmentName : audit-vm-managed-disks
PolicyAssignmentOwner : tbd
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}
PolicyDefinitionName : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds : {managementGroupId}
ComplianceState : NonCompliant
AdditionalProperties : {[complianceReasonCode, ]}
További információ: Get-AzPolicyState.
Az erőforrások eltávolítása
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Kijelentkezés az Azure PowerShell-munkamenetből:
Disconnect-AzAccount
Következő lépések
Ebben a rövid útmutatóban hozzárendelt egy szabályzatdefiníciót az Azure-környezetben megtalálható, nem megfelelő erőforrások azonosítása céljából.
Ha többet szeretne megtudni az erőforrás-megfelelőséget érvényesítő szabályzatok hozzárendeléséről, folytassa az oktatóanyagban.