Struttura di assegnazione di Criteri di Azure

Le assegnazioni dei criteri definiscono quali risorse debbano essere valutate da una definizione di criteri o un'iniziativa. Inoltre, l'assegnazione dei criteri può determinare i valori dei parametri per quel gruppo di risorse in fase di assegnazione, rendendo possibile riutilizzare le definizioni dei criteri che rispondono alle stesse proprietà delle risorse con esigenze di conformità diverse.

Si usa JavaScript Object Notation (JSON) per creare un'assegnazione dei criteri. L'assegnazione dei criteri contiene elementi per:

Ad esempio, il JSON seguente mostra una richiesta di assegnazione di criteri campione in modalità DoNotEnforce con i parametri:

{
  "properties": {
    "displayName": "Enforce resource naming rules",
    "description": "Force resource names to begin with DeptA and end with -LC",
    "definitionVersion": "1.*.*",
    "metadata": {
      "assignedBy": "Cloud Center of Excellence"
    },
    "enforcementMode": "DoNotEnforce",
    "notScopes": [],
    "policyDefinitionId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
    "nonComplianceMessages": [
      {
        "message": "Resource names must start with 'DeptA' and end with '-LC'."
      }
    ],
    "parameters": {
      "prefix": {
        "value": "DeptA"
      },
      "suffix": {
        "value": "-LC"
      }
    },
    "identity": {
      "type": "SystemAssigned"
    },
    "resourceSelectors": [],
    "overrides": []
  }
}

Ambito

L'ambito usato per l'ora di creazione della risorsa di assegnazione è il driver principale dell'applicabilità della risorsa. Per altre informazioni sull'ambito dell'assegnazione, vedere Informazioni sull'ambito in Criteri di Azure.

ID definizione criteri e versione (anteprima)

Questo campo deve essere il nome completo di una definizione di criteri o di una definizione di iniziativa. policyDefinitionId è una stringa e non una matrice. Il contenuto più recente della definizione o dell'iniziativa di criteri assegnata viene recuperato ogni volta che viene valutata l'assegnazione dei criteri. È consigliabile che se più criteri vengono spesso assegnati insieme, per usare un'iniziativa .

Per le definizioni e le iniziative predefinite, è possibile specificare definitionVersion di cui effettuare la valutazione. Per impostazione predefinita, la versione è impostata sulla versione principale più recente e verranno inserite automaticamente le modifiche minori e le patch.

  • Per inserire automaticamente le modifiche minori della definizione, il numero della versione deve essere #.*.*. Il carattere jolly rappresenta l'inserimento automatico degli aggiornamenti.
  • Per l'aggiunta a un percorso di versione minore, il formato della versione deve essere #.#.*.
  • Tutte le modifiche alle patch devono essere inserite automaticamente per motivi di sicurezza. Le modifiche alle patch si limitano a modifiche al testo e scenari di emergenza.

Nome visualizzato e descrizione

Si usa displayName e description per identificare l'assegnazione dei criteri e specificare il contesto per il relativo uso con il set specifico di risorse. displayName ha una lunghezza massima di 128 caratteri e description una lunghezza massima di 512 caratteri.

Metadati UFX

La proprietà facoltativa metadata archivia informazioni sull'assegnazione dei criteri. I clienti possono definire qualsiasi proprietà e valori utili per l'organizzazione in metadata. Esistono tuttavia alcune proprietà comuni usate da Criteri di Azure. Ogni proprietà metadata ha un limite di 1.024 caratteri.

Proprietà comuni dei metadati

  • assignedBy (stringa): nome descrittivo dell'entità di sicurezza che ha creato l'assegnazione.
  • createdBy (stringa): GUID dell'entità di sicurezza che ha creato l'assegnazione.
  • createdOn (stringa): formato DateTime ISO universale 8601 dell'ora di creazione dell'assegnazione.
  • updatedBy (stringa): nome descrittivo dell'entità di sicurezza che ha aggiornato l'assegnazione, se presente.
  • updatedOn (stringa): formato DateTime ISO universale 8601 dell'ora di aggiornamento dell'assegnazione, se presente.

Proprietà di metadati specifiche dello scenario

  • parameterScopes (oggetto): raccolta di coppie chiave-valore in cui la chiave corrisponde a un nome di parametro configurato strongType e il valore definisce l'ambito della risorsa usato nel portale per fornire l'elenco delle risorse disponibili associando strongType. Il portale imposta questo valore se l'ambito è diverso dall'ambito di assegnazione. Se impostata, una modifica dell'assegnazione dei criteri nel portale imposta automaticamente l'ambito per il parametro su questo valore. Tuttavia, l'ambito non è bloccato per il valore e può essere modificato in un altro ambito.

    L'esempio seguente di parameterScopes è relativo a un parametro strongType denominato backupPolicyId che imposta un ambito per la selezione delle risorse quando l'assegnazione viene modificata nel portale.

    "metadata": {
        "parameterScopes": {
          "backupPolicyId": "/subscriptions/{SubscriptionID}/resourcegroups/{ResourceGroupName}"
        }
    }
    
  • .evidenceStorages (oggetto): l'account di archiviazione predefinito consigliato che deve essere usato per contenere l'evidenza per le attestazioni alle assegnazioni di criteri con un effetto manual. La proprietà displayName è il nome dell'account di archiviazione. La proprietà evidenceStorageAccountID è l'ID risorsa dell'account di archiviazione. La proprietà evidenceBlobContainer è il nome del contenitore BLOB in cui si prevede di archiviare l'evidenza.

    {
      "properties": {
        "displayName": "A contingency plan should be in place to ensure operational continuity for each Azure subscription.",
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/{definitionId}",
        "metadata": {
          "evidenceStorages": [
            {
              "displayName": "Default evidence storage",
              "evidenceStorageAccountId": "/subscriptions/{subscriptionId}/resourceGroups/{rg-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}",
              "evidenceBlobContainer": "evidence-container"
            }
          ]
        }
      }
    }
    

Selettori di risorse

La proprietà facoltativa resourceSelectors facilita le procedure di distribuzione sicura (SDP) consentendo di implementare gradualmente le assegnazioni di criteri in base a fattori come la posizione delle risorse, il tipo di risorsa o se una risorsa ha una posizione. Quando si usano selettori di risorse, Criteri di Azure valuta solo le risorse applicabili alle specifiche effettuate nei selettori di risorse. I selettori di risorse possono anche essere usati per restringere l'ambito delle esenzioni nello stesso modo.

Nello scenario di esempio seguente, la nuova assegnazione di criteri viene valutata solo se la posizione della risorsa è Stati Uniti orientali oStati Uniti occidentali.

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
    "definitionVersion": "1.1.*",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "ResourceLimit"
}

Quando si è pronti per espandere l'ambito di valutazione per i criteri, è sufficiente aggiornare l'assegnazione. L'esempio seguente mostra l'assegnazione di criteri con altre due aree di Azure aggiunte al selettore SDPRegions. Si noti che, in questo esempio, SDP indica la procedura di distribuzione sicura:

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyDefinitions/ResourceLimit",
    "definitionVersion": "1.1.*",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus",
              "centralus",
              "southcentralus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "ResourceLimit"
}

I selettori di risorse hanno le proprietà seguenti:

  • name: nome del selettore di risorse.

  • selectors: (Facoltativo) Proprietà utilizzata per determinare quale subset di risorse applicabile all'assegnazione dei criteri deve essere valutata per la conformità.

    • kind: proprietà di un selettore che descrive la caratteristica che restringe il set di risorse valutate. Ogni tipo può essere usato una sola volta in un singolo selettore di risorse. I valori consentiti sono i seguenti:

      • resourceLocation: questa proprietà viene usata per selezionare le risorse in base al tipo. Non è possibile usare nello stesso selettore di risorse di resourceWithoutLocation.

      • resourceType: questa proprietà viene usata per selezionare le risorse in base al tipo.

      • resourceWithoutLocation: questa proprietà viene usata per selezionare le risorse a livello di sottoscrizione che non hanno una posizione. Attualmente supporta solo subscriptionLevelResources. Non è possibile usare nello stesso selettore di risorse di resourceLocation.

    • in: elenco di valori consentiti per l'oggetto specificato kind. Non può essere usato con notIn. Può contenere fino a 50 valori.

    • notIn: elenco di valori non consentiti per l'oggetto specificato kind. Non può essere usato con in. Può contenere fino a 50 valori.

Un selettore di risorse può contenere più selectors. Per essere applicabile a un selettore di risorse, una risorsa deve soddisfare i requisiti specificati da tutti i selettori. È inoltre possibile specificare fino a 10 resourceSelectors in una singola assegnazione. Le risorse nell'ambito vengono valutate quando soddisfano uno di questi selettori di risorse.

Overrides

La proprietà facoltativa overrides consente di modificare l'effetto di una definizione di criteri senza cambiare la definizione dei criteri sottostante o usare un effetto con parametri nella definizione dei criteri.

Un caso d'uso più comune per gli override sull'effetto è costituito da iniziative di criteri con un numero elevato di definizioni di criteri associate. In questa situazione, la gestione di più effetti dei criteri può utilizzare un impegno amministrativo significativo, soprattutto quando l'effetto deve essere aggiornato di tanto in tanto. Le sostituzioni possono essere usate per aggiornare contemporaneamente gli effetti di più definizioni di criteri all'interno di un'iniziativa.

Vediamo un esempio. Si supponga di avere un'iniziativa di criteri denominata CostManagement che include una definizione di criteri personalizzata conpolicyDefinitionReferenceId corpVMSizePolicye un singolo effetto diaudit. Si supponga di voler assegnare l'iniziativa CostManagement, ma non si vuole ancora visualizzare la conformità segnalata per questo criterio. L'effetto audit di questo criterio può essere sostituito da disabled tramite un override sull'assegnazione dell'iniziativa, come illustrato nell'esempio seguente:

{
  "properties": {
    "policyDefinitionId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policySetDefinitions/CostManagement",
    "overrides": [
      {
        "kind": "policyEffect",
        "value": "disabled",
        "selectors": [
          {
            "kind": "policyDefinitionReferenceId",
            "in": [
              "corpVMSizePolicy"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
  "type": "Microsoft.Authorization/policyAssignments",
  "name": "CostManagement"
}

Un altro uso comune di override è l'implementazione di una nuova versione di una definizione. Per i passaggi consigliati per aggiornare in modo sicuro una versione di assegnazione, vedere distribuzione sicura dei criteri.

Le sostituzioni hanno le proprietà seguenti:

  • kind: la proprietà di cui l'assegnazione esegue l'override. I tipi supportati sono policyEffect e policyVersion.

  • value: nuovo valore che esegue l'override del valore esistente. Per kind: policyEffect, i valori supportati sono effetti. Per kind: policyVersion, il numero di versione supportato deve essere maggiore o uguale al valore definitionVersion specificato nell'assegnazione.

  • selectors: (Facoltativo) Proprietà usata per determinare l'ambito dell'assegnazione dei criteri da eseguire sull'override.

    • kind: proprietà di un selettore che descrive la caratteristica che restringe l'ambito dell'override. Valori consentiti per kind: policyEffect:

      • policyDefinitionReferenceId: questa proprietà specifica quali definizioni di criteri all'interno di un'assegnazione di iniziativa devono assumere sull'override dell'effetto.

      • resourceLocation: questa proprietà viene usata per selezionare le risorse in base al tipo. Non è possibile usare nello stesso selettore di risorse di resourceWithoutLocation.

      Valore consentito per kind: policyVersion:

      • resourceLocation: questa proprietà viene usata per selezionare le risorse in base al tipo. Non è possibile usare nello stesso selettore di risorse di resourceWithoutLocation.
    • in: elenco di valori consentiti per l'oggetto specificato kind. Non può essere usato con notIn. Può contenere fino a 50 valori.

    • notIn: elenco di valori non consentiti per l'oggetto specificato kind. Non può essere usato con in. Può contenere fino a 50 valori.

È possibile usare un override per sostituire l'effetto di molti criteri specificando più valori nella matrice policyDefinitionReferenceId. Un singolo override può essere usato per un massimo di 50 policyDefinitionReferenceId e una singola assegnazione di criteri può contenere fino a 10 sostituzioni, valutate nell'ordine in cui sono specificate. Prima della creazione dell'assegnazione, l'effetto scelto nell'override viene convalidato rispetto alla regola dei criteri e all'elenco dei valori consentiti dei parametri (nei casi in cui l'effetto è parametrizzato).

Modalità di imposizione

La proprietà enforcementMode offre ai clienti la possibilità di testare il risultato di un criterio sulle risorse esistenti senza avviare l'effetto del criterio o attivare voci nel log attività di Azure.

Questo scenario è normalmente noto come what if ed è allineato a procedure di distribuzione sicure. enforcementMode è diverso dall'effetto Disabilitato, perché tale effetto impedisce completamente la valutazione delle risorse.

Questa proprietà presenta i valori seguenti:

Modalità Valore JSON Tipo Correggere manualmente Voce del log attività Descrizione
Attivato Predefinito string L'effetto del criterio viene applicato durante la creazione o l'aggiornamento della risorsa.
Disabled DoNotEnforce string No L'effetto del criterio non viene applicato durante la creazione o l'aggiornamento della risorsa.

Se enforcementMode non viene specificato in un criterio o in una definizione di iniziativa, viene usato il valore Predefinito. Le attività di correzione possono essere avviate per i criteri deployIfNotExists, anche quando enforcementMode è impostato su DoNotEnforce.

Ambiti esclusi

L'ambito dell'assegnazione include tutti i contenitori di risorse figlio e le risorse figlio. Se non deve essere applicata la definizione di un contenitore di risorse figlio o di una risorsa figlio, ognuna può essere esclusa dalla valutazione impostando notScopes. Questa proprietà è una matrice per abilitare l'esclusione di uno o più contenitori di risorse o risorse dalla valutazione. notScopes può essere aggiunto o aggiornato dopo la creazione dell'assegnazione iniziale.

Nota

Una risorsa esclusa è diversa da una risorsa esentata. Per altre informazioni, vedere Informazioni sull'ambito in Criteri di Azure.

Messaggi di non conformità

Per impostare un messaggio personalizzato che descrive il motivo per cui una risorsa non è conforme alla definizione di criteri o iniziative, impostare nonComplianceMessages nella definizione di assegnazione. Questo nodo è una matrice di message voci. Questo messaggio personalizzato è oltre al messaggio di errore predefinito per la mancata conformità ed è facoltativo.

Importante

I messaggi personalizzati per la non conformità sono supportati solo nelle definizioni o nelle iniziative con le definizioni delle modalità di Resource Manager.

"nonComplianceMessages": [
  {
    "message": "Default message"
  }
]

Se l'assegnazione è per un'iniziativa, è possibile configurare messaggi diversi per ogni definizione di criteri nell'iniziativa. I messaggi usano il valore policyDefinitionReferenceId configurato nella definizione dell'iniziativa. Per altre informazioni, vedere proprietà delle definizioni del criterio.

"nonComplianceMessages": [
  {
    "message": "Default message"
  },
  {
    "message": "Message for just this policy definition by reference ID",
    "policyDefinitionReferenceId": "10420126870854049575"
  }
]

Parametri

Questo segmento dell'assegnazione dei criteri fornisce i valori per i parametri definiti nella definizione di criteri o nella definizione dell'iniziativa. Questa progettazione consente di riutilizzare un criterio o una definizione di iniziativa con risorse diverse, ma verificare la presenza di valori o risultati aziendali diversi.

"parameters": {
  "prefix": {
    "value": "DeptA"
  },
  "suffix": {
    "value": "-LC"
  }
}

In questo esempio i parametri definiti in precedenza nella definizione dei criteri sono prefix e suffix. Questa specifica assegnazione di criteri imposta prefix su DeptA e suffix su -LC. La stessa definizione di criteri è riutilizzabile con un set diverso di parametri per un reparto diverso, riducendo la duplicazione e la complessità delle definizioni dei criteri offrendo al tempo stesso flessibilità.

Identità

Per le assegnazioni di criteri con effetto impostato su deployIfNotExists o modify, è necessario disporre di una proprietà Identity per eseguire la correzione sulle risorse non conformi. Quando un'assegnazione usa un'identità, l'utente deve anche specificare un percorso per l'assegnazione.

Nota

Una singola assegnazione di criteri può essere associata a una sola identità gestita assegnata dal sistema o dall'utente. Tuttavia, tale identità può essere assegnata a più di un ruolo, se necessario.

# System-assigned identity
 "identity": {
  "type": "SystemAssigned"
}
# User-assigned identity
  "identity": {
  "type": "UserAssigned",
  "userAssignedIdentities": {
    "/subscriptions/SubscriptionID/resourceGroups/{rgName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
  }
},

Passaggi successivi