Avvio rapido: Creare un'assegnazione di criteri per identificare le risorse non conformi con JavaScript
Il primo passaggio per comprendere la conformità in Azure consiste nell'identificare lo stato delle risorse. In questo avvio rapido si creerà un'assegnazione di criteri per identificare le macchine virtuali che non usano dischi gestiti. Al termine, si identificheranno le macchine virtuali non conformi.
La libreria di JavaScript viene usata per creare e gestire le risorse di Azure dalla riga di comando o negli script. Questa guida illustra come usare la libreria di JavaScript per creare un'assegnazione di criteri.
Prerequisiti
Sottoscrizione di Azure: Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Node.js: è richiesto Node.js versione 12 o successiva.
Azure Cloud Shell
Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi Cloud Shell preinstallati per eseguire il codice in questo articolo, senza dover installare alcun elemento nell'ambiente locale.
Per avviare Azure Cloud Shell:
Opzione | Esempio/Collegamento |
---|---|
Selezionare Prova nell'angolo superiore destro di un codice o di un blocco di comandi. Selezionando Prova non viene copiato automaticamente il codice o il comando in Cloud Shell. | ![]() |
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. | ![]() |
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. | ![]() |
Per usare Azure Cloud Shell:
Avviare Cloud Shell.
Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) per copiare il codice o il comando.
Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux oppure selezionando CMD+MAIUSC+V in macOS.
Selezionare Invio per eseguire il codice o il comando.
Aggiungere le librerie di criteri
Per abilitare l'uso di JavaScript con Criteri di Azure, è necessario aggiungere le librerie. Queste librerie funzionano ovunque sia possibile usare JavaScript, incluso Bash in Windows 10.
Configurare un nuovo progetto Node.js usando il comando seguente.
npm init -y
Aggiungere un riferimento alla libreria yargs.
npm install yargs
Aggiungere un riferimento alle librerie di Criteri di Azure.
# 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
Aggiungere un riferimento alla libreria di autenticazione di Azure.
npm install @azure/identity
Nota
Verificare che in package.json
@azure/arm-policy
sia la versione 5.0.1 o successiva,@azure/arm-policyinsights
sia la versione 5.0.0 o successiva e@azure/identity
la versione 2.0.4 o successiva.
Creare un'assegnazione di criteri
In questo avvio rapido i crea un'assegnazione di criteri e si assegna la definizione Controlla macchine virtuali che non usano dischi gestiti (06a78e20-9358-41c9-923c-fb736d382a4d
). Questa definizione di criteri identifica le risorse che non rispettano le condizioni in essa impostate.
Creare un nuovo file denominato policyAssignment.js e immettere il codice seguente.
const argv = require("yargs").argv; const { DefaultAzureCredential } = require("@azure/identity"); const { PolicyClient } = require("@azure/arm-policy"); if (argv.subID && argv.name && argv.displayName && argv.policyDefID && argv.scope && argv.description) { const createAssignment = async () => { const credentials = new DefaultAzureCredential(); const client = new PolicyClient(credentials, argv.subID); const result = await client.policyAssignments.create( argv.scope, argv.name, { displayName: argv.displayName, policyDefinitionId: argv.policyDefID, description: argv.description } ); console.log(result); }; createAssignment(); }
Immettere il comando seguente nel terminale:
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}"
I comandi precedenti usano le informazioni seguenti:
- subID: ID sottoscrizione per il contesto di autenticazione. Assicurarsi di sostituire
{subscriptionId}
con la sottoscrizione in uso. - name: nome univoco per l'oggetto assegnazione di criteri. L'esempio precedente usa audit-vm-manageddisks.
- displayName: nome visualizzato per l'assegnazione di criteri. In questo caso viene usato controllare le macchine virtuali senza assegnazione di dischi gestiti.
- policyDefID : percorso della definizione dei criteri, in base al quale si sta usando per creare l'assegnazione. In questo caso si tratta dell'ID della definizione di criteri Controllare le macchine virtuali che non usano i dischi gestiti.
- description - Spiegazione più dettagliata delle operazioni eseguite dal criterio o dei motivi per cui è assegnato a questo ambito.
- scope - Ambito che determina le risorse o il raggruppamento di risorse a cui viene applicata l'assegnazione di criteri. Può spaziare da un gruppo di gestione a una singola risorsa. Assicurarsi di sostituire
{scope}
con uno dei criteri seguenti:- Gruppo di gestione:
/providers/Microsoft.Management/managementGroups/{managementGroup}
- Sottoscrizione:
/subscriptions/{subscriptionId}
- Gruppo di risorse:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
- Risorsa:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Gruppo di gestione:
A questo punto si è pronti per identificare le risorse non conformi e comprendere così lo stato di conformità dell'ambiente.
Identificare risorse non conformi
Dopo aver creato l'assegnazione di criteri, è possibile identificare le risorse non conformi.
Creare un nuovo file denominato policyState.js e immettere il codice seguente.
const argv = require("yargs").argv; const { DefaultAzureCredential } = require("@azure/identity"); const { PolicyInsightsClient } = require("@azure/arm-policyinsights"); if (argv.subID && argv.name) { const getStates = async () => { const credentials = new DefaultAzureCredential(); const client = new PolicyInsightsClient(credentials); const result = client.policyStates.listQueryResultsForSubscription( "latest", argv.subID, { queryOptions: { filter: "IsCompliant eq false and PolicyAssignmentId eq '" + argv.name + "'", apply: "groupby((ResourceId))" } } ); console.log(result); }; getStates(); }
Immettere il comando seguente nel terminale:
node policyState.js --subID "{subscriptionId}" --name "audit-vm-manageddisks"
Sostituire {subscriptionId}
con la sottoscrizione per cui si vogliono visualizzare i risultati di conformità per l'assegnazione dei criteri denominata 'audit-vm-manageddisks' creata nei passaggi precedenti. Per un elenco di altri ambiti e modi per riepilogare i dati, vedere i metodi PolicyStates*.
I risultati saranno simili all'esempio seguente:
{
'additional_properties': {
'@odata.nextLink': None
},
'odatacontext': 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest',
'odatacount': 12,
'value': [{data}]
}
I risultati corrispondono a quanto visualizzato nella scheda Conformità risorsa di un'assegnazione di criteri nella vista del portale di Azure.
Pulire le risorse
Eliminare l'assegnazione di criteri Controlla le macchine virtuali senza assegnazione di dischi gestiti tramite il portale. La definizione di criteri è predefinita, quindi non esiste alcuna definizione da rimuovere.
Per rimuovere le librerie installate dall'applicazione, eseguire il comando seguente.
npm uninstall @azure/arm-policy @azure/arm-policyinsights @azure/identity yargs
Passaggi successivi
In questa Guida introduttiva è stata assegnata una definizione dei criteri per identificare le risorse non conformi nell'ambiente Azure.
Per altre informazioni sull'assegnazione di definizioni di criteri per convalidare la conformità delle nuove risorse, continuare con l'esercitazione seguente: