Share via


Quickstart: Een beleidstoewijzing maken om niet-compatibele resources te identificeren met REST API

De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze quickstart maakt u een beleidstoewijzing om niet-compatibele resources te identificeren met behulp van REST API. Het beleid wordt toegewezen aan een resourcegroep en controleert virtuele machines die geen beheerde schijven gebruiken. Nadat u de beleidstoewijzing hebt gemaakt, identificeert u niet-compatibele virtuele machines.

In deze gids wordt REST API gebruikt om een beleidstoewijzing te maken om niet-compatibele resources te identificeren in uw Azure-omgeving. In de voorbeelden in dit artikel worden PowerShell en de Azure CLI-opdrachten az rest gebruikt. U kunt de az rest opdrachten ook uitvoeren vanuit een Bash-shell, zoals Git Bash.

Vereisten

  • Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
  • Nieuwste versie van PowerShell of een Bash-shell zoals Git Bash.
  • Nieuwste versie van Azure CLI.
  • Visual Studio Code.
  • Een resourcegroep met ten minste één virtuele machine die geen beheerde schijven gebruikt.

De syntaxis van de REST API controleren

Er zijn twee elementen voor het uitvoeren van REST API-opdrachten: de REST API-URI en de aanvraagbody. Ga naar Beleidstoewijzingen - Maken voor meer informatie.

In het volgende voorbeeld ziet u de syntaxis van de REST API-URI om een beleidsdefinitie te maken.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Een bereik bepaalt op welke resources of groep resources de beleidstoewijzing wordt afgedwongen. Het kan variëren van een beheergroep tot een afzonderlijke resource. Vervang door {scope} een van de volgende patronen:
    • Beheergroep: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Abonnement: /subscriptions/{subscriptionId}
    • Resourcegroep: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Resource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: Hiermee maakt u de naam van de beleidstoewijzing voor uw toewijzing. De naam is opgenomen in de eigenschap van policyAssignmentId de beleidstoewijzing.

Het volgende voorbeeld is de JSON om een aanvraagbodybestand te maken.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Weergavenaam voor de beleidstoewijzing.
  • description: kan worden gebruikt om context over de beleidstoewijzing toe te voegen.
  • policyDefinitionId: de beleidsdefinitie-id waarmee de toewijzing moet worden gemaakt.
  • nonComplianceMessages: Stel het bericht in dat moet worden gebruikt wanneer een resource wordt geëvalueerd als niet-compatibel. Zie niet-nalevingsberichten voor toewijzingen voor meer informatie.

Verbinding maken met Azure

Maak vanuit een Visual Studio Code-terminalsessie verbinding met Azure. Als u meer dan één abonnement hebt, voert u de opdrachten uit om context in te stellen op uw abonnement. Vervang <subscriptionID> door de id van uw Azure-abonnement.

az login

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

Gebruik az login zelfs als u PowerShell gebruikt, omdat in de voorbeelden Azure CLI az rest-opdrachten worden gebruikt.

Een beleidstoewijzing maken

In dit voorbeeld maakt u een beleidstoewijzing en wijst u de controle-VM's toe die geen definitie van beheerde schijven gebruiken.

Er is een aanvraagbody nodig om de toewijzing te maken. Sla de volgende JSON op in een bestand met de naam request-body.json.

{
  "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"
      }
    ]
  }
}

Als u uw beleidstoewijzing wilt maken in een bestaand resourcegroepsbereik, gebruikt u de volgende REST API-URI met een bestand voor de aanvraagbody. Vervang {subscriptionId} en {resourceGroupName} door uw eigen waarden. Met de opdracht wordt JSON-uitvoer weergegeven in uw shell.

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

In PowerShell is de backtick (`) nodig om de at sign (@) te escapen om een bestandsnaam op te geven. Laat in een Bash-shell, zoals Git Bash, de backtick weg.

Ga naar Beleidstoewijzingen - Maken voor meer informatie.

Niet-compatibele resources identificeren

Het duurt enkele minuten voordat de nalevingsstatus voor een nieuwe beleidstoewijzing actief wordt en resultaten geeft over de status van het beleid. U gebruikt REST API om de niet-compatibele resources voor deze beleidstoewijzing weer te geven en de uitvoer bevindt zich in JSON.

Voer de volgende opdracht uit om niet-compatibele resources te identificeren. Vervang {subscriptionId} en {resourceGroupName} vervang de waarden die u hebt gebruikt bij het maken van de beleidstoewijzing.

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'"

De filter query's voor resources die worden geëvalueerd als niet-compatibel met de beleidsdefinitie met de naam audit-vm-managed-disks die u hebt gemaakt met de beleidstoewijzing. Let nogmaals op dat de backtick wordt gebruikt om het dollarteken ($) in het filter te ontsnappen. Voor een Bash-client is een backslash (\) een veelvoorkomend escape-teken.

De resultaten zien er ongeveer als volgt uit:

{
  "@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"
    }
  ]
}

Ga naar Beleidsstatussen - Queryresultaten voor resourcegroep weergeven voor meer informatie.

Resources opschonen

Gebruik de volgende opdracht om de beleidstoewijzing te verwijderen. Vervang {subscriptionId} en {resourceGroupName} vervang de waarden die u hebt gebruikt bij het maken van de beleidstoewijzing. Met de opdracht wordt JSON-uitvoer weergegeven in uw shell.

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

U kunt controleren of de beleidstoewijzing is verwijderd met de volgende opdracht. Er wordt een bericht weergegeven in uw shell.

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.

Ga voor meer informatie naar Beleidstoewijzingen - Verwijderen en Beleidstoewijzingen - Ophalen.

Volgende stappen

In deze Quick Start hebt u een beleidsdefinitie toegewezen om niet-compatibele resources in uw Azure-omgeving te identificeren.

Ga verder met de zelfstudie voor meer informatie over het toewijzen van beleidsregels voor het valideren van resourcenaleving.