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říklad Vyzkoušet služby Azure 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. Spuštění služby Cloud Shell v novém okně
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Tlačítko Cloud Shell na webu Azure Portal

Pokud chcete spustit kód uvedený v tomto článku ve službě Azure Cloud Shell, postupujte takto:

  1. Spusťte Cloud Shell.

  2. Vyberte tlačítko Kopírovat na bloku kódu a kód zkopírujte.

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

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

  1. Vytvořte nový Node.js projekt spuštěním následujícího příkazu.

    npm init -y
    
  2. Přidejte odkaz na knihovnu yargs.

    npm install yargs
    
  3. Př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-policyinsights
    
  4. Přidejte odkaz na knihovnu ověřování Azure.

    npm install @azure/ms-rest-nodeauth
    

    Poznámka

    Ověřte v package.js @azure/arm-policy verze 3.1.0 nebo novější, @azure/arm-policyinsights je verze 3.2.0 nebo vyšší a @azure/ms-rest-nodeauth verze 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.

  1. 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();
    }
    
  2. 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}/]

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.

  1. 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();
    }
    
  2. 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: