Rychlý Start: vytvoření přiřazení zásady pro identifikaci prostředků, které nedodržují předpisy, pomocí JavaScriptu
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 JavaScriptu 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 JavaScriptu vytvořit přiřazení zásady.
Požadavky
Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Node.js: je vyžadována Node.js verze 12 nebo vyšší.
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řidat knihovny zásad
Chcete-li povolit jazyk JavaScript pro práci s Azure Policy, knihovny musí být přidány. Tyto knihovny fungují všude, kde je možné použít JavaScript, včetně bash na Windows 10.
Vytvořte nový Node.js projekt spuštěním následujícího příkazu.
npm init -yPřidejte odkaz na knihovnu yargs.
npm install yargsPřidejte odkaz na knihovny Azure Policy.
# arm-policy is for working with Azure Policy objects such as definitions and assignments npm install @azure/arm-policy # arm-policyinsights is for working with Azure Policy compliance data such as events and states npm install @azure/arm-policyinsightsPřidejte odkaz na knihovnu ověřování Azure.
npm install @azure/ms-rest-nodeauthPoznámka
Ověřte v package.js
@azure/arm-policyverze 3.1.0 nebo novější,@azure/arm-policyinsightsje verze 3.2.0 nebo vyšší a@azure/ms-rest-nodeauthverze 3.0.5 nebo vyšší.
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.
Vytvořte nový soubor s názvem policyAssignment.js a zadejte následující kód.
const argv = require("yargs").argv; const authenticator = require("@azure/ms-rest-nodeauth"); const policyObjects = require("@azure/arm-policy"); if (argv.subID && argv.name && argv.displayName && argv.policyDefID && argv.scope && argv.description) { const createAssignment = async () => { const credentials = await authenticator.interactiveLogin(); const client = new policyObjects.PolicyClient(credentials, argv.subID); const assignments = new policyObjects.PolicyAssignments(client); const result = await assignments.create( argv.scope, argv.name, { displayName: argv.displayName, policyDefinitionId: argv.policyDefID, description: argv.description } ); console.log(result); }; createAssignment(); }Do terminálu zadejte následující příkaz:
node policyAssignment.js ` --subID "{subscriptionId}" ` --name "audit-vm-manageddisks" ` --displayName "Audit VMs without managed disks Assignment" ` --policyDefID "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" ` --description "Shows all virtual machines not using managed disks" ` --scope "{scope}"
Předchozí příkazy používají následující informace:
- subid – ID předplatného pro kontext ověřování. Nezapomeňte
{subscriptionId}předplatné nahradit vaším předplatným. - název – jedinečný název objektu přiřazení zásady. Výše uvedený příklad používá audit-VM-manageddisks.
- DisplayName – 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ů.
- policyDefID – cesta k definici 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.
- Popis – podrobnější vysvětlení toho, co zásada dělá nebo proč je přiřazena tomuto oboru.
- 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:
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ů
Teď, když se vytvoří přiřazení zásady, můžete identifikovat prostředky, které nedodržují předpisy.
Vytvořte nový soubor s názvem policyState.js a zadejte následující kód.
const argv = require("yargs").argv; const authenticator = require("@azure/ms-rest-nodeauth"); const policyInsights = require("@azure/arm-policyinsights"); if (argv.subID && argv.name) { const getStates = async () => { const credentials = await authenticator.interactiveLogin(); const client = new policyInsights.PolicyInsightsClient(credentials); const policyStates = new policyInsights.PolicyStates(client); const result = await policyStates.listQueryResultsForSubscription( "latest", argv.subID, { queryOptions: { filter: "IsCompliant eq false and PolicyAssignmentId eq '" + argv.name + "'", apply: "groupby((ResourceId))" } } ); console.log(result); }; getStates(); }Do terminálu zadejte následující příkaz:
node policyState.js --subID "{subscriptionId}" --name "audit-vm-manageddisks"
Nahraďte {subscriptionId} předplatným, které chcete zobrazit výsledky dodržování předpisů pro přiřazení zásady s názvem audit-VM-manageddisks, který jsme vytvořili v předchozích krocích. Seznam dalších oborů a způsobů sumarizace dat naleznete v tématu PolicyStates * Methods.
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ů
Odstraňte přiřazení zásad audit virtuálních počítačů bez spravovaných disků prostřednictvím portálu. Definice zásad je integrovaná, takže není k dispozici žádná definice k odebrání.
Pokud chcete odebrat nainstalované knihovny z aplikace, spusťte následující příkaz.
npm uninstall @azure/arm-policy @azure/arm-policyinsights @azure/ms-rest-nodeauth yargs
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:


