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.

Képernyőkép az Üzembe helyezés az Azure-ban gombról, amellyel szabályzatot rendelhet hozzá egy Azure Resource Manager-sablonhoz.

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.PolicyInsightsRegisztrá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.

  1. Nyissa meg a Visual Studio Code-ot, és válassza az Új szövegfájl fájlja>lehetőséget.
  2. Másolja és illessze be az ARM-sablont a Visual Studio Code-ba.
  3. 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.