Rychlý Start: vytvoření přiřazení zásady pro identifikaci prostředků, které nedodržují předpisy, pomocí Pythonu
Prvním krokem k porozumění dodržování předpisů v Azure je zjištění stavu vašich prostředků. V tomto rychlém startu vytvoříte přiřazení zásady pro identifikaci virtuálních počítačů, které nepoužívají spravované disky. Po dokončení budete identifikovat virtuální počítače, které nedodržují předpisy.
Knihovna Pythonu se používá ke správě prostředků Azure z příkazového řádku nebo ve skriptech. V této příručce se dozvíte, jak pomocí knihovny Pythonu vytvořit přiřazení zásady.
Požadavky
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Použití služby Azure Cloud Shell
Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Můžete použít předinstalované příkazy služby Cloud Shell ke spuštění kódu uvedeného v tomto článku, aniž byste museli instalovat cokoli do svého místního prostředí.
Spuštění služby Azure Cloud Shell:
| Možnost | Příklad nebo odkaz |
|---|---|
| Zvolte Vyzkoušet v pravém horním rohu bloku kódu. Výběr Vyzkoušet automaticky nekopíruje kód do služby Cloud Shell. | ![]() |
| Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. | ![]() |
| Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. | ![]() |
Pokud chcete spustit kód uvedený v tomto článku ve službě Azure Cloud Shell, postupujte takto:
Spusťte Cloud Shell.
Vyberte tlačítko Kopírovat na bloku kódu a kód zkopírujte.
Vložte kód do relace Cloud Shell pomocí kláves Ctrl+Shift+V ve Windows a Linuxu nebo pomocí kláves Cmd+Shift+V v systému macOS.
Spusťte kód stisknutím klávesy Enter.
Přidání knihovny zásad
Chcete-li povolit Pythonu pro práci s Azure Policy, musí být knihovna přidána. tato knihovna funguje všude, kde je možné použít Python, včetně bash v Windows 10 nebo lokálně nainstalovaných.
Ověřte, že je nainstalovaný nejnovější Python (minimálně 3,8). Pokud ještě není nainstalovaný, Stáhněte si ho na adrese Python.org.
Ověřte, že je nainstalované nejnovější rozhraní příkazového řádku Azure (aspoň 2.5.1). Pokud ještě není nainstalovaná, přečtěte si téma instalace Azure CLI.
Poznámka
Rozhraní příkazového řádku Azure vyžaduje, aby Python mohl používat ověřování založené na rozhraní CLI v následujících příkladech. Informace o dalších možnostech najdete v tématu ověřování pomocí knihoven pro správu Azure pro Python.
Ověření prostřednictvím rozhraní příkazového řádku Azure
az loginV prostředí Python dle výběru nainstalujte požadované knihovny pro 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.identityPoznámka
Pokud je Python nainstalovaný pro všechny uživatele, musí být tyto příkazy spuštěné z konzoly se zvýšenými oprávněními.
Ověřte, zda byly knihovny nainstalovány.
azure-mgmt-policyinsightsby měla být 0.5.0 nebo vyšší,azure-mgmt-resourceměla by být 9.0.0 nebo vyšší aazure-cli-coreměla by být 2.5.0 nebo vyšší.# Check each installed library pip show azure-mgmt-policyinsights azure-mgmt-resource azure-cli-core azure.identity
Vytvoření přiřazení zásad
V tomto rychlém startu vytvoříte přiřazení zásady a přiřadíte virtuální počítače auditu, které nepoužívají definici Managed disks ( 06a78e20-9358-41c9-923c-fb736d382a4d ). Tato definice zásady identifikuje prostředky, které nesplňují podmínky nastavené v definici zásady.
Spuštěním následujícího kódu vytvořte nové přiřazení zásady:
# 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)
Předchozí příkazy používají následující informace:
Podrobnosti přiřazení:
- subId – vaše předplatné. Vyžadováno pro ověřování. Nahraďte
{subId}svým předplatným. - DISPLAY_NAME – zobrazovaný název přiřazení zásady. V takovém případě použijete přiřazení audit virtuálních počítačů bez spravovaných disků.
- policy_definition_id – cesta definice zásad na základě toho, kterou používáte k vytvoření přiřazení. V tomto případě se jedná o ID virtuálních počítačů auditu definice zásad, které nepoužívají spravované disky. V tomto příkladu je definice zásad integrovaná a cesta neobsahuje informace o skupině pro správu nebo předplatném.
- Scope – obor určuje, pro které prostředky nebo skupiny prostředků se toto přiřazení zásady bude uplatňovat. Může být v rozsahu od skupiny pro správu k individuálnímu prostředku. Nezapomeňte nahradit
{scope}jedním z následujících způsobů:- Skupina pro správu:
/providers/Microsoft.Management/managementGroups/{managementGroup} - Předplatné:
/subscriptions/{subscriptionId} - Skupina prostředků:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Partner
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Skupina pro správu:
- Popis – podrobnější vysvětlení toho, co zásada dělá nebo proč je přiřazena tomuto oboru.
Vytváření přiřazení:
- Rozsah – tento obor určuje, kde se přiřazení zásady uloží. Rozsah nastavený v podrobnostech přiřazení musí existovat v rámci tohoto oboru.
- Name – skutečný název přiřazení. V tomto příkladu je použitý název audit-vm-manageddisks.
- Přiřazení zásad – objekt Python PolicyAssignment vytvořený v předchozím kroku.
Nyní můžete identifikovat nekompatibilní prostředky, abyste pochopili stav dodržování předpisů vašeho prostředí.
Zjištění nevyhovujících prostředků
Pomocí následujících informací identifikujte prostředky, které nedodržují předpisy přiřazení zásady, kterou jste vytvořili. Spusťte následující kód:
# 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)
Nahraďte {subId} předplatným, pro které chcete zobrazit výsledky dodržování předpisů pro toto přiřazení zásady. Seznam dalších oborů a způsobů sumarizace dat najdete v tématu metody stavu zásad.
Vaše výsledky budou vypadat přibližně jako v následujícím příkladu:
{
'additional_properties': {
'@odata.nextLink': None
},
'odatacontext': 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest',
'odatacount': 12,
'value': [{data}]
}
Výsledky se shodují s tím, co vidíte na kartě Kompatibilita prostředků v přiřazení zásady v zobrazení Azure Portal.
Vyčištění prostředků
Chcete-li odebrat vytvořené přiřazení, použijte následující příkaz:
# 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)
Nahraďte {subId} vaším předplatným a {scope} stejným oborem, který jste použili k vytvoření přiřazení zásady.
Další kroky
V tomto rychlém startu jste přiřadili definici zásady pro identifikaci prostředků, které nedodržují předpisy, ve vašem prostředí Azure.
Další informace o přiřazení definic zásad pro ověření, že jsou nové prostředky kompatibilní, najdete v tomto kurzu:


