Struttura di assegnazione di Criteri di Azure

Le assegnazioni di criteri vengono usate da Criteri di Azure per definire le risorse assegnate a quali criteri o iniziative. 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.

Nota

Per altre informazioni sull'ambito di Criteri di Azure, vedere Informazioni sull'ambito in Criteri di Azure.

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

Ad esempio, il codice JSON seguente mostra un'assegnazione di criteri in modalità DoNotEnforce con parametri dinamici:

{
    "properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "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": []
    }
}

Tutti gli esempi di Criteri di Azure sono disponibili in Esempi di Criteri di Azure.

Nome visualizzato e descrizione

Si usa displayName e la descrizione 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 metadata proprietà 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.

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

  • 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 manual effetto. La displayName proprietà è il nome dell'account di archiviazione. La evidenceStorageAccountID proprietà è l'ID risorsa dell'account di archiviazione. La evidenceBlobContainer proprietà è 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 valuterà 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 o Stati 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 modificare l'assegnazione. L'esempio seguente mostra l'assegnazione di criteri con altre due aree di Azure aggiunte al selettore SDPRegions . In questo esempio, SDP significa Cassaforte Procedura di distribuzione:

{
    "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 subscriptionLevelResourcessolo . 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ù selettori. 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 selettori di risorse 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 modificare la definizione dei criteri sottostante o usare un effetto con parametri nella definizione dei criteri.

Il caso d'uso più comune per gli override è 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 corpVMSizePolicy e un singolo effetto di audit. 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 "disabilitato" 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"
}

Le sostituzioni hanno le proprietà seguenti:

  • kind: la proprietà di cui l'assegnazione eseguirà l'override. Il tipo supportato è policyEffect.

  • value: nuovo valore che esegue l'override del valore esistente. I valori supportati sono effetti.

  • 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. Il valore consentito per kind: policyEffect è:

      • policyDefinitionReferenceId: specifica quali definizioni di criteri all'interno di un'assegnazione di iniziativa devono assumere sull'override dell'effetto.
    • 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.

Si noti che è 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 policyDefinitionReferenceIds 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 consente ai clienti di testare il risultato di un criterio sulle risorse esistenti senza avviare l'effetto dei criteri 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, in quanto questo effetto impedisce che la valutazione delle risorse venga eseguita affatto.

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 è specificato in una definizione di criteri o iniziative, 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.

ID definizione criteri

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.

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 policyDefinitionReferenceId valore configurato nella definizione dell'iniziativa. Per informazioni dettagliate, vedere Proprietà delle definizioni dei criteri.

"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 deployIfNotExist o modifica, è necessario disporre di una proprietà Identity per eseguire la correzione sulle risorse non conformi. Quando si usa l'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/testResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/test-identity": {}
    }
  },

Passaggi successivi