Quickstart: Een beleidstoewijzing maken om niet-compatibele resources met JavaScript 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 JavaScript-bibliotheek wordt gebruikt voor het beheren van Azure-resources vanaf de opdrachtregel of in scripts. In deze handleiding wordt uitgelegd hoe u de JavaScript-bibliotheek gebruikt om een beleidstoewijzing te maken.

Vereisten

  • Azure-abonnement: Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

  • Node.js: Node.js-versie 12 of hoger is vereist.

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. Voorbeeld van Uitproberen voor Azure Cloud Shell
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Cloud Shell starten in een nieuw venster
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Knop Cloud Shell in de Azure Portal

Om de code in dit artikel in Azure Cloud Shell uit te voeren:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.

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

  4. Selecteer Invoeren om de code uit te voeren.

De Policy-bibliotheken toevoegen

Om JavaScript te laten werken met Azure Policy, moeten de bibliotheken worden toegevoegd. Deze bibliotheken werken overal waar JavaScript kan worden gebruikt, inclusief met bash in Windows 10.

  1. Stel een nieuw Node.js-project in door de volgende opdracht uit te voeren.

    npm init -y
    
  2. Voeg een verwijzing toe naar de yargs-bibliotheek.

    npm install yargs
    
  3. Voeg een verwijzing toe naar de Azure Policy-bibliotheken.

    # 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. Voeg een verwijzing toe naar de Azure-verificatiebibliotheek.

    npm install @azure/ms-rest-nodeauth
    

    Notitie

    Controleer in package.json of @azure/arm-policy versie 3.1.0 of hoger is, en of @azure/arm-policyinsights versie 3.2.0 of hoger is, en of @azure/ms-rest-nodeauth versie 3.0.5 of hoger is.

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.

  1. Maak een nieuw bestand met de naam policyAssignment.js en voer de volgende code in.

    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. Voer de volgende opdracht in de terminal in:

    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}"
    

In de voorgaande opdrachten wordt de volgende informatie gebruikt:

  • subID: de abonnements-id voor verificatiecontext. Vervang {subscriptionId} door uw abonnement.
  • name: de unieke naam voor het object voor beleidstoewijzing. In het bovenstaande voorbeeld wordt audit-vm-manageddisks gebruikt.
  • displayName: de weergavenaam voor de beleidstoewijzing. In dit geval gebruikt u de toewijzing Virtuele machines zonder beheerde schijven controleren.
  • policyDefID: 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.
  • description: een grondigere uitleg van wat het beleid doet of waarom het aan dit bereik is toegewezen.
  • 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}/]

U kunt nu niet-compatibele resources identificeren om inzicht te krijgen in de nalevingsstatus van uw omgeving.

Niet-compatibele resources identificeren

Nu uw beleidstoewijzing is gemaakt, kunt u resources identificeren die niet compatibel zijn.

  1. Maak een nieuw bestand met de naam policyState.js en voer de volgende code in.

    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. Voer de volgende opdracht in de terminal in:

    node policyState.js --subID "{subscriptionId}" --name "audit-vm-manageddisks"
    

Vervang {subscriptionId} door het abonnement dat u wilt zien in de nalevingsresultaten voor de beleidstoewijzing met de naam audit-vm-manageddisks, die u in de vorige stap hebt gemaakt. Zie PolicyStates* 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

  • Verwijder de beleidstoewijzing VM's zonder beheerde schijven controleren via de portal. De beleidsdefinitie is ingebouwd, dus is er geen definitie om te verwijderen.

  • Als u de geïnstalleerde bibliotheken uit uw toepassing wilt verwijderen, kunt u dit doen met de volgende opdracht.

    npm uninstall @azure/arm-policy @azure/arm-policyinsights @azure/ms-rest-nodeauth yargs
    

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: