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}
- Beheergroep:
policyAssignmentName
: Hiermee maakt u de naam van de beleidstoewijzing voor uw toewijzing. De naam is opgenomen in de eigenschap vanpolicyAssignmentId
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.