Delen 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.

Wanneer u een ingebouwde beleids- of initiatiefdefinitie toewijst, is het optioneel om te verwijzen naar een versie. Beleidstoewijzingen van ingebouwde definities zijn standaard ingesteld op de meest recente versie en nemen automatisch kleine versiewijzigingen over, tenzij anders opgegeven.

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.