Quickstart: Een beleidstoewijzing maken om niet-compatibele resources met Python te identificeren
De eerste stap in het begrijpen van naleving in Azure is het identificeren van de status van uw resources. In deze snelstart maakt u een beleidstoewijzing om te identificeren welke virtuele machines geen beheerde schijven gebruiken. Zodra de toewijzing is voltooid, kunt u de virtuele machines identificeren die niet-compatibel zijn.
De Python-bibliotheek wordt gebruikt voor het beheren van Azure-resources vanaf de opdrachtregel of in scripts. In deze handleiding wordt uitgelegd hoe u de Python-bibliotheek gebruikt om een beleidstoewijzing te maken.
Vereisten
Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Azure Cloud Shell gebruiken
Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde opdrachten van Cloud Shell gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.
Om Azure Cloud Shell op te starten:
| Optie | Voorbeeld/koppeling |
|---|---|
| Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. | ![]() |
| Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. | ![]() |
| Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. | ![]() |
Om de code in dit artikel in Azure Cloud Shell uit te voeren:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.
Plak de code in de Cloud Shell-sessie door CTRL+Shift+V te selecteren in Windows en Linux of door Cmd+Shift+V op macOS te selecteren.
Selecteer Invoeren om de code uit te voeren.
De Policy-bibliotheek toevoegen
Om Python te laten werken met Azure Policy, moet de bibliotheek worden toegevoegd. Deze bibliotheek werkt waar Python kan worden gebruikt, inclusief bash in Windows 10 of lokaal geïnstalleerd.
Controleer of de meest recente versie van Python is geïnstalleerd (minimaal 3.8). Als deze nog niet is geïnstalleerd, downloadt u deze op Python.org.
Controleer of de meest recente Azure CLI is geïnstalleerd (minimaal 2.5.1). Als deze nog niet is geïnstalleerd, raadpleegt u De Azure CLI installeren.
Notitie
Azure CLI is vereist om Python in te schakelen voor gebruik van de op CLI gebaseerde verificatie in de volgende voorbeelden. Zie Authenticate using the Azure management libraries for Python (Verificatie met de Azure-beheerbibliotheken voor Python) voor meer informatie over andere opties.
Verifieer via Azure CLI.
az loginInstalleer in de Python-omgeving naar keuze de vereiste bibliotheken voor Azure Policy:
# Add the Python library for Python pip install azure-mgmt-policyinsights # Add the Resources library for Python pip install azure-mgmt-resource # Add the CLI Core library for Python for authentication (development only!) pip install azure-cli-core # Add the Azure identity library for Python pip install azure.identityNotitie
Als Python is geïnstalleerd voor alle gebruikers, moet deze opdracht worden uitgevoerd vanaf een console met verhoogde bevoegdheden.
Controleer of de bibliotheken zijn geïnstalleerd.
azure-mgmt-policyinsightsmoet 0.5.0 of hoger zijn,azure-mgmt-resourcemoet 9.0.0 of hoger zijn enazure-cli-coremoet 2.5.0 of hoger zijn.# Check each installed library pip show azure-mgmt-policyinsights azure-mgmt-resource azure-cli-core azure.identity
Een beleidstoewijzing maken
In deze quickstart maakt u een beleidstoewijzing en wijst u de definitie Controleer virtuele machines die niet gebruikmaken van beheerde schijven (06a78e20-9358-41c9-923c-fb736d382a4d) toe. Deze beleidsdefinitie identificeert resources die niet voldoen aan de voorwaarden die zijn vastgelegd in de beleidsdefinitie.
Voer de volgende code uit om een nieuwe beleidstoewijzing te maken:
# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.mgmt.resource.policy.models import PolicyAssignment, Identity, UserAssignedIdentitiesValue, PolicyAssignmentUpdate
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
assignmentLocation = "westus2"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)
# Create details for the assignment
policyAssignmentIdentity = Identity(type="SystemAssigned")
policyAssignmentDetails = PolicyAssignment(display_name="Audit VMs without managed disks Assignment", policy_definition_id="/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d", description="Shows all virtual machines not using managed disks", identity=policyAssignmentIdentity, location=assignmentLocation)
# Create new policy assignment
policyAssignment = policyClient.policy_assignments.create("{scope}", "audit-vm-manageddisks", policyAssignmentDetails)
# Show results
print(policyAssignment)
In de voorgaande opdrachten wordt de volgende informatie gebruikt:
Toewijzingsdetails:
- subId: uw abonnement. Nodig voor verificatie. Vervang
{subId}door uw abonnement. - display_name: de weergavenaam voor de beleidstoewijzing. In dit geval gebruikt u de toewijzing Virtuele machines zonder beheerde schijven controleren.
- policy_definition_id: het pad naar de beleidsdefinitie, op basis waarvan u de toewijzing maakt. In dit geval is het de id van de beleidsdefinitie Virtuele machines zonder beheerde schijven controleren. In dit voorbeeld is de beleidsdefinitie een ingebouwde module en bevat het pad geen gegevens over de beheergroep of het abonnement.
- scope: een bereik bepaalt voor welke resources of groep resources de beleidstoewijzing wordt afgedwongen. Het kan variëren van een beheergroep tot een afzonderlijke resource. Zorg dat u
{scope}vervangt door 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}/]
- Beheergroep:
- description: een grondigere uitleg van wat het beleid doet of waarom het aan dit bereik is toegewezen.
Toewijzing maken:
- Bereik: dit bereik bepaalt waar de beleidstoewijzing wordt opgeslagen. Het bereik dat in de toewijzingsdetails is ingesteld, moet binnen dit bereik bestaan.
- Naam: de werkelijke naam van de toewijzing. Voor dit voorbeeld is audit-vm-manageddisks gebruikt.
- Beleidstoewijzing: het Python-object PolicyAssignment dat in de vorige stap is gemaakt.
U kunt nu niet-compatibele resources identificeren om inzicht te krijgen in de nalevingsstatus van uw omgeving.
Niet-compatibele resources identificeren
Gebruik de volgende informatie om te identificeren welke resources niet compatibel zijn met de beleidstoewijzing die u hebt gemaakt. Voer de volgende code uit:
# Import specific methods and models from other libraries
from azure.mgmt.policyinsights._policy_insights_client import PolicyInsightsClient
from azure.mgmt.policyinsights.models import QueryOptions
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyInsightsClient(credential, subId, base_url=none)
# Set the query options
queryOptions = QueryOptions(filter="IsCompliant eq false and PolicyAssignmentId eq 'audit-vm-manageddisks'",apply="groupby((ResourceId))")
# Fetch 'latest' results for the subscription
results = policyInsightsClient.policy_states.list_query_results_for_subscription(policy_states_resource="latest", subscription_id=subId, query_options=queryOptions)
# Show results
print(results)
Vervang {subId} door het abonnement waarvoor u de complianceresultaten voor deze beleidstoewijzing wilt zien. Zie Beleidsstatusmethoden voor een lijst met andere bereiken en manieren om de gegevens samen te vatten.
De resultaten zien er ongeveer als volgt uit:
{
'additional_properties': {
'@odata.nextLink': None
},
'odatacontext': 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest',
'odatacount': 12,
'value': [{data}]
}
De resultaten komen overeen met wat u ziet op het tabblad Resourcenaleving van een beleidstoewijzing in de Azure Portal-weergave.
Resources opschonen
Voer de volgende opdracht uit om de beleidstoewijzing te verwijderen:
# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)
# Delete the policy assignment
policyAssignment = policyClient.policy_assignments.delete("{scope}", "audit-vm-manageddisks")
# Show results
print(policyAssignment)
Vervang {subId} door uw abonnement en door hetzelfde bereik dat u hebt gebruikt om de {scope} beleidstoewijzing te maken.
Volgende stappen
In deze Quick Start hebt u een beleidsdefinitie toegewezen om niet-compatibele resources in uw Azure-omgeving te identificeren.
Voor meer informatie over het toewijzen van beleidsdefinities om te controleren of nieuwe resources compatibel zijn gaat u verder met de zelfstudie voor:


