Rövid útmutató: Szabályzat-hozzárendelés létrehozása a rest API-val nem megfelelő erőforrások azonosításához

Az Azure-ral való megfelelőség megértéséhez szükséges első lépés a saját erőforrásai állapotának megállapítása. Ebben a rövid útmutatóban egy szabályzat-hozzárendelést hoz létre, amely a REST API használatával azonosítja a nem megfelelő erőforrásokat. 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.

Ez az útmutató REST API használatával hoz létre szabályzat-hozzárendelést, és azonosítja a nem megfelelő erőforrásokat az Azure-környezetben. A cikkben szereplő példák a PowerShellt és az Azure CLI-parancsokat az rest használják. A parancsokat egy Bash-rendszerhéjból, például a az rest Git Bashből is futtathatja.

Előfeltételek

  • Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
  • A PowerShell legújabb verziója vagy egy Bash-rendszerhéj, például a Git Bash.
  • Az Azure CLI legújabb verziója.
  • Visual Studio Code.
  • Legalább egy olyan virtuális géppel rendelkező erőforráscsoport, amely nem használ felügyelt lemezeket.

A REST API szintaxisának áttekintése

A REST API-parancsok futtatásának két eleme van: a REST API URI és a kérelem törzse. További információ: Szabályzat-hozzárendelések – Létrehozás.

Az alábbi példa a REST API URI szintaxisát mutatja be egy szabályzatdefiníció létrehozásához.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: A hatókör határozza meg, hogy a szabályzat-hozzárendelés mely erőforrásokra vagy erőforráscsoportokra lesz kényszerítve. A felügyeleti csoporttól az egyes erőforrásokig terjedhet. Cserélje le {scope} az alábbi minták egyikére:
    • Felügyeleti csoport: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Előfizetés: /subscriptions/{subscriptionId}
    • Erőforráscsoport: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Forrás: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Létrehozza a hozzárendelés házirend-hozzárendelésének nevét. A név szerepel a szabályzat-hozzárendelés tulajdonságában policyAssignmentId .

Az alábbi példa a kérelem törzsfájljának létrehozásához szükséges JSON.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: A szabályzat-hozzárendelés megjelenítendő neve.
  • description: A szabályzat-hozzárendelés környezetének hozzáadására használható.
  • policyDefinitionId: A hozzárendelés létrehozásához tartozó szabályzatdefiníció azonosítója.
  • nonComplianceMessages: Állítsa be azt az üzenetet, amelyet akkor használjon, ha egy erőforrás nem megfelelőként van kiértékelve. További információ: hozzárendelési nemmegfelelési üzenetek.

Csatlakozás az Azure szolgáltatáshoz

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.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Akkor is használhatja az login , ha PowerShellt használ, mert a példák az Azure CLI az rest parancsokat használják.

Szabályzat-hozzárendelés létrehozása

Ebben a példában létrehoz egy szabályzat-hozzárendelést, és hozzárendeli a felügyelt lemezdefiníciót nem használó naplózási virtuális gépeket.

A hozzárendelés létrehozásához kérelemtörzsre van szükség. Mentse a következő JSON-t egy request-body.json nevű fájlba.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

Ha egy meglévő erőforráscsoport-hatókörben szeretné létrehozni a szabályzat-hozzárendelést, használja a következő REST API URI-t a kérelem törzsének fájljával. Cserélje le és {resourceGroupName} cserélje le {subscriptionId} az értékeket. A parancs JSON-kimenetet jelenít meg a rendszerhéjban.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

A PowerShellben a háttérrendszerre (`) van szükség a at sign (@) fájlnév megadásához. Egy Olyan Bash-rendszerhéjban, mint a Git Bash, hagyja ki a háttérrendszert.

További információ: Szabályzat-hozzárendelések – Létrehozás.

A nem megfelelő erőforrások azonosítása

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. A REST API-val megjelenítheti a szabályzat-hozzárendelés nem megfelelő erőforrásait, a kimenet pedig JSON-ban van.

A nem megfelelő erőforrások azonosításához futtassa a következő parancsot. Cserélje le {subscriptionId} és {resourceGroupName} használja a szabályzat-hozzárendelés létrehozásakor használt értékeket.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

A filter szabályzat-hozzárendeléssel létrehozott audit-vm-managed-disks nevű szabályzatdefiníciónak nem megfelelőként értékelt erőforrások lekérdezései . Ismét figyelje meg, hogy a backtick a szűrőben lévő dollárjel ($) kimenekítésére szolgál. Bash-ügyfél esetén a fordított perjel (\) egy gyakori feloldó karakter.

Az eredmények a következő példához hasonlók:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

További információ: Szabályzatállapotok – Az erőforráscsoport lekérdezési eredményeinek listázása.

Az erőforrások eltávolítása

A szabályzat-hozzárendelés eltávolításához használja az alábbi parancsot. Cserélje le {subscriptionId} és {resourceGroupName} használja a szabályzat-hozzárendelés létrehozásakor használt értékeket. A parancs JSON-kimenetet jelenít meg a rendszerhéjban.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

Az alábbi paranccsal ellenőrizheti, hogy a szabályzat-hozzárendelés törölve lett-e. Megjelenik egy üzenet a rendszerhéjban.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

További információ: Szabályzat-hozzárendelések – Törlés és szabályzat-hozzárendelések – Lekérés.

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.