Esercitazione: Creare una definizione di criteri personalizzataTutorial: Create a custom policy definition

La definizione di criteri personalizzata consente ai clienti di definire le proprie regole per l'uso di Azure.A custom policy definition allows customers to define their own rules for using Azure. Queste regole consentono in genere di imporre:These rules often enforce:

  • Procedure di sicurezzaSecurity practices
  • Gestione dei costiCost management
  • Regole specifiche dell'organizzazione (come denominazioni o posizioni)Organization-specific rules (like naming or locations)

Indipendentemente dal driver di business, la procedura per definire nuovi criteri personalizzati è sempre la stessa.Whatever the business driver for creating a custom policy, the steps are the same for defining the new custom policy.

Prima di creare un criterio personalizzato, consultare gli esempi di criteri per verificare se ne esiste già uno che soddisfa le proprie esigenze.Before creating a custom policy, check the policy samples to see if a policy that matches your needs already exists.

L'approccio per creare criteri personalizzati segue questi passaggi:The approach to creating a custom policy follows these steps:

  • Identificare i requisiti aziendaliIdentify your business requirements
  • Mappare ogni requisito a una proprietà delle risorse di AzureMap each requirement to an Azure resource property
  • Mappare la proprietà a un aliasMap the property to an alias
  • Determinare quale effetto usareDetermine which effect to use
  • Comporre la definizione del criterioCompose the policy definition

PrerequisitesPrerequisites

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Identificare i requisitiIdentify requirements

Prima di creare la definizione del criterio, è importante identificarne la finalità.Before creating the policy definition, it's important to understand the intent of the policy. Per questa esercitazione, come obiettivo verrà usato un comune requisito di sicurezza aziendale per illustrare i passaggi necessari:For this tutorial, we'll use a common enterprise security requirement as the goal to illustrate the steps involved:

  • Ogni account di archiviazione deve essere abilitato per HTTPSEach storage account must be enabled for HTTPS
  • Ogni account di archiviazione deve essere disabilitato per HTTPEach storage account must be disabled for HTTP

I requisiti devono identificare chiaramente gli stati delle risorse "essere" e "non essere".Your requirements should clearly identify both the "to be" and the "not to be" resource states.

A questo punto è stato definito lo stato previsto della risorsa, ma non l'operazione che dovrà essere eseguita con le risorse non conformi.While we've defined the expected state of the resource, we've not yet defined what we want done with non-compliant resources. Il servizio Criteri di Azure supporta diversi effetti.Azure Policy supports a number of effects. Per questa esercitazione, verrà definito il requisito aziendale di impedire la creazione di risorse non conformi alle regole di business.For this tutorial, we'll define the business requirement as preventing the creation of resources if they aren't compliant with the business rules. Per soddisfare questo obiettivo, verrà usato l'effetto Nega.To meet this goal, we'll use the Deny effect. Verrà inoltre aggiunta l'opzione per sospendere il criterio per specifiche assegnazioni.We also want the option to suspend the policy for specific assignments. A questo scopo, verrà usato l'effetto Disabilitato, che verrà impostato come parametro nella definizione del criterio.As such, we'll use the Disabled effect and make the effect a parameter in the policy definition.

Determinare le proprietà della risorsaDetermine resource properties

In base ai requisiti aziendali, la risorsa di Azure da controllare con Criteri di Azure è un account di archiviazione.Based on the business requirement, the Azure resource to audit with Azure Policy is a storage account. Tuttavia, le proprietà da usare nella definizione del criterio non sono note.However, we don't know the properties to use in the policy definition. Criteri di Azure esegue una valutazione rispetto alla rappresentazione JSON della risorsa, quindi è necessario individuare le proprietà disponibili per tale risorsa.Azure Policy evaluates against the JSON representation of the resource, so we'll need to understand the properties available on that resource.

Per determinare le proprietà delle risorse di Azure, sono disponibili varie opzioni,There are many ways to determine the properties for an Azure resource. che verranno descritte in questa esercitazione:We'll look at each for this tutorial:

  • Estensione Criteri di Azure per VS CodeAzure Policy extension for VS Code
  • Modelli di Gestione risorseResource Manager templates
    • Esportazione di una risorsa esistenteExport existing resource
    • Esperienza di creazioneCreation experience
    • Modelli di avvio rapido (GitHub)Quickstart templates (GitHub)
    • Documentazione di riferimento sui modelliTemplate reference docs
  • Azure Resource ExplorerAzure Resource Explorer

Visualizzare le risorse nell'estensione per VS CodeView resources in VS Code extension

L'estensione per VS Code può essere usata per visualizzare le risorse nell'ambiente e le proprietà di Resource Manager di ognuna.The VS Code extension can be used to browse resources in your environment and see the Resource Manager properties on each resource.

Modelli di Gestione risorseResource Manager templates

È possibile esaminare in vari modi un modello di Resource Manager che include la proprietà da gestire.There are several ways to look at a Resource Manager template that includes the property you're looking to manage.

Risorsa esistente nel portaleExisting resource in the portal

Il modo più semplice per trovare proprietà consiste nell'esaminare una risorsa esistente dello stesso tipo.The simplest way to find properties is to look at an existing resource of the same type. Le risorse già configurate con l'impostazione da applicare forniscono anche il valore da confrontare.Resources already configured with the setting you want to enforce also provide the value to compare against. Esaminare la pagina Esporta modello in Impostazioni nel portale di Azure per questa specifica risorsa.Look at the Export template page (under Settings) in the Azure portal for that specific resource.

Esportare la pagina del modello sulla risorsa esistente

Per un account di archiviazione questa pagina visualizza un modello simile a questo esempio:Doing so for a storage account reveals a template similar to this example:

...
"resources": [{
    "comments": "Generalized from resource: '/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount'.",
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
    },
    "kind": "Storage",
    "name": "[parameters('storageAccounts_mystorageaccount_name')]",
    "apiVersion": "2018-07-01",
    "location": "westus",
    "tags": {
        "ms-resource-usage": "azure-cloud-shell"
    },
    "scale": null,
    "properties": {
        "networkAcls": {
            "bypass": "AzureServices",
            "virtualNetworkRules": [],
            "ipRules": [],
            "defaultAction": "Allow"
        },
        "supportsHttpsTrafficOnly": false,
        "encryption": {
            "services": {
                "file": {
                    "enabled": true
                },
                "blob": {
                    "enabled": true
                }
            },
            "keySource": "Microsoft.Storage"
        }
    },
    "dependsOn": []
}]
...

Sotto properties è presente un valore denominato supportsHttpsTrafficOnly impostato su false.Under properties is a value named supportsHttpsTrafficOnly set to false. Questa proprietà sembra essere quella che si sta cercando.This property looks like it may be the property we're looking for. Inoltre il valore type della risorsa è Microsoft.Storage/storageAccounts.Also, the type of the resource is Microsoft.Storage/storageAccounts. Questo valore consente di limitare il criterio applicandolo solo alle risorse di questo tipo.The type lets us limit the policy to only resources of this type.

Creare una risorsa nel portaleCreate a resource in the portal

Un'altra opzione del portale è l'esperienza di creazione di risorse.Another way through the portal is the resource creation experience. Durante la creazione di un account di archiviazione tramite il portale, una delle opzioni della scheda Avanzate è Trasferimento sicuro obbligatorio.While creating a storage account through the portal, an option under the Advanced tab is Security transfer required. Questa proprietà prevede le opzioni Disabilitato e Abilitato.This property has Disabled and Enabled options. L'icona di informazioni include testo aggiuntivo che conferma che questa opzione corrisponde alla proprietà giusta.The info icon has additional text that confirms this option is likely the property we want. Tuttavia, il nome della proprietà non è indicato in questa schermata del portale.However, the portal doesn't tell us the property name on this screen.

Nella parte inferiore della scheda Rivedi e crea è disponibile un collegamento all'opzione Scaricare un modello per l'automazione.On the Review + create tab, a link is at the bottom of the page to Download a template for automation. Selezionando questo collegamento si aprirà il modello che consente di creare la risorsa configurata.Selecting the link opens the template that creates the resource we configured. In questo caso, vengono visualizzate due informazioni:In this case, we see two key pieces of information:

...
"supportsHttpsTrafficOnly": {
    "type": "bool"
}
...
"properties": {
    "accessTier": "[parameters('accessTier')]",
    "supportsHttpsTrafficOnly": "[parameters('supportsHttpsTrafficOnly')]"
}
...

Queste informazioni indicano il tipo di proprietà e confermano inoltre che supportsHttpsTrafficOnly è la proprietà corretta.This information tells us the property type and also confirms supportsHttpsTrafficOnly is the property we're looking for.

Modelli di avvio rapido in GitHubQuickstart templates on GitHub

I modelli di avvio rapido di Azure in GitHub includono centinaia di modelli di Resource Manager creati per diverse risorse.The Azure quickstart templates on GitHub has hundreds of Resource Manager templates built for different resources. Questi modelli possono risultare utili per trovare la proprietà della risorsa corretta.These templates can be a great way to find the resource property you're looking for. Alcune proprietà potrebbero sembrare quelle giuste, ma è opportuno fare altri controlli.Some properties may appear to be what you're looking for, but control something else.

Documenti di riferimento per le risorseResource reference docs

Per verificare se supportsHttpsTrafficOnly è la proprietà corretta, controllare le informazioni di riferimento del modello di Resource Manager relativo alla risorsa account di archiviazione nel provider di archiviazione.To validate supportsHttpsTrafficOnly is correct property, check the Resource Manager template reference for the storage account resource on the storage provider. L'oggetto proprietà include un elenco di parametri validi.The properties object has a list of valid parameters. Selezionando il collegamento StorageAccountPropertiesCreateParameters-object viene visualizzata una tabella di proprietà accettabili.Selecting the StorageAccountPropertiesCreateParameters-object link shows a table of acceptable properties. La proprietà supportsHttpsTrafficOnly è presente e la descrizione corrisponde alla risorsa necessaria per soddisfare i requisiti aziendali.supportsHttpsTrafficOnly is present and the description matches what we are looking for to meet the business requirements.

Azure Resource ExplorerAzure Resource Explorer

È possibile esplorare le risorse di Azure anche in un altro modo, ossia tramite Azure Resource Explorer (anteprima).Another way to explore your Azure resources is through the Azure Resource Explorer (Preview). Questo strumento usa il contesto della sottoscrizione, quindi è necessario eseguire l'autenticazione per il sito Web con le credenziali di Azure.This tool uses the context of your subscription, so you need to authenticate to the website with your Azure credentials. Dopo aver completato l'autenticazione, è possibile esplorare le risorse in base a provider, sottoscrizioni, gruppi di risorse e singole risorse.Once authenticated, you can browse by providers, subscriptions, resource groups, and resources.

Individuare una risorsa account di archiviazione ed esaminare le proprietà.Locate a storage account resource and look at the properties. Anche qui è presente la proprietà supportsHttpsTrafficOnly.We see the supportsHttpsTrafficOnly property here as well. Selezionando la scheda Documentazione si può verificare che la descrizione della proprietà corrisponde a quella trovata nei documenti di riferimento in precedenza.Selecting the Documentation tab, we see that the property description matches what we found in the reference docs earlier.

Trovare l'alias della proprietàFind the property alias

Dopo aver identificato la proprietà della risorsa, è necessario mapparla a un alias.We've identified the resource property, but we need to map that property to an alias.

Per determinare gli alias per una risorsa di Azure, sono disponibili varie opzioni,There are a few ways to determine the aliases for an Azure resource. che verranno descritte in questa esercitazione:We'll look at each for this tutorial:

  • Estensione Criteri di Azure per VS CodeAzure Policy extension for VS Code
  • Interfaccia della riga di comando di AzureAzure CLI
  • Azure PowerShellAzure PowerShell
  • Diagramma delle risorse di AzureAzure Resource Graph

Ottenere alias nell'estensione VS CodeGet aliases in VS Code extension

L'estensione Criteri di Azure per VS Code semplifica la visualizzazione delle risorse e l'individuazione di alias.The Azure Policy extension for VS Code extension makes it easy to browse your resources and discover aliases.

Interfaccia della riga di comando di AzureAzure CLI

Nell'interfaccia della riga di comando di Azure il gruppo di comandi az provider consente di cercare gli alias delle risorse.In Azure CLI, the az provider command group is used to search for resource aliases. Verrà applicato un filtro per trovare lo spazio dei nomi Microsoft.Storage in base ai dettagli recuperati in precedenza sulla risorsa di Azure.We'll filter for the Microsoft.Storage namespace based on the details we got about the Azure resource earlier.

# Login first with az login if not using Cloud Shell

# Get Azure Policy aliases for type Microsoft.Storage
az provider show --namespace Microsoft.Storage --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"

I risultati includono un alias supportato dagli account di archiviazione denominati supportsHttpsTrafficOnly.In the results, we see an alias supported by the storage accounts named supportsHttpsTrafficOnly. L'esistenza di questo alias significa che è possibile scrivere il criterio per applicare i requisiti aziendali.This existence of this alias means we can write the policy to enforce our business requirements!

Azure PowerShellAzure PowerShell

In Azure PowerShell il cmdlet Get-AzPolicyAlias consente di cercare gli alias delle risorse.In Azure PowerShell, the Get-AzPolicyAlias cmdlet is used to search for resource aliases. Verrà applicato un filtro per trovare lo spazio dei nomi Microsoft.Storage in base ai dettagli recuperati in precedenza sulla risorsa di Azure.We'll filter for the Microsoft.Storage namespace based on the details we got about the Azure resource earlier.

# Login first with Connect-AzAccount if not using Cloud Shell

# Use Get-AzPolicyAlias to list aliases for Microsoft.Storage
(Get-AzPolicyAlias -NamespaceMatch 'Microsoft.Storage').Aliases

Anche in questo caso, come con l'interfaccia della riga di comando di Azure, i risultati includono un alias supportato dagli account di archiviazione denominati supportsHttpsTrafficOnly.Like Azure CLI, the results show an alias supported by the storage accounts named supportsHttpsTrafficOnly.

Diagramma delle risorse di AzureAzure Resource Graph

Azure Resource Graph è un servizio che fornisce un altro metodo per trovare le proprietà delle risorse di Azure.Azure Resource Graph is a service that provides another method to find properties of Azure resources. Ecco una query di esempio per esaminare un singolo account di archiviazione con Resource Graph:Here is a sample query for looking at a single storage account with Resource Graph:

Resources
| where type=~'microsoft.storage/storageaccounts'
| limit 1
az graph query -q "Resources | where type=~'microsoft.storage/storageaccounts' | limit 1"
Search-AzGraph -Query "Resources | where type=~'microsoft.storage/storageaccounts' | limit 1"

I risultati sono simili a quelli visti nei modelli di Resource Manager e tramite Azure Resource Explorer.The results look similar to what we see in the Resource Manager templates and through the Azure Resource Explorer. Tuttavia, i risultati di Azure Resource Graph possono includere anche i dettagli sugli alias tramite la proiezione della matrice aliases:However, Azure Resource Graph results can also include alias details by projecting the aliases array:

Resources
| where type=~'microsoft.storage/storageaccounts'
| limit 1
| project aliases
az graph query -q "Resources | where type=~'microsoft.storage/storageaccounts' | limit 1 | project aliases"
Search-AzGraph -Query "Resources | where type=~'microsoft.storage/storageaccounts' | limit 1 | project aliases"

Ecco un esempio di output di un account di archiviazione per gli alias:Here is example output from a storage account for aliases:

"aliases": {
    "Microsoft.Storage/storageAccounts/accessTier": null,
    "Microsoft.Storage/storageAccounts/accountType": "Standard_LRS",
    "Microsoft.Storage/storageAccounts/enableBlobEncryption": true,
    "Microsoft.Storage/storageAccounts/enableFileEncryption": true,
    "Microsoft.Storage/storageAccounts/encryption": {
        "keySource": "Microsoft.Storage",
        "services": {
            "blob": {
                "enabled": true,
                "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
            },
            "file": {
                "enabled": true,
                "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
            }
        }
    },
    "Microsoft.Storage/storageAccounts/encryption.keySource": "Microsoft.Storage",
    "Microsoft.Storage/storageAccounts/encryption.keyvaultproperties.keyname": null,
    "Microsoft.Storage/storageAccounts/encryption.keyvaultproperties.keyvaulturi": null,
    "Microsoft.Storage/storageAccounts/encryption.keyvaultproperties.keyversion": null,
    "Microsoft.Storage/storageAccounts/encryption.services": {
        "blob": {
            "enabled": true,
            "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
        },
        "file": {
            "enabled": true,
            "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
        }
    },
    "Microsoft.Storage/storageAccounts/encryption.services.blob": {
        "enabled": true,
        "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
    },
    "Microsoft.Storage/storageAccounts/encryption.services.blob.enabled": true,
    "Microsoft.Storage/storageAccounts/encryption.services.file": {
        "enabled": true,
        "lastEnabledTime": "2018-06-04T17:59:14.4970000Z"
    },
    "Microsoft.Storage/storageAccounts/encryption.services.file.enabled": true,
    "Microsoft.Storage/storageAccounts/networkAcls": {
        "bypass": "AzureServices",
        "defaultAction": "Allow",
        "ipRules": [],
        "virtualNetworkRules": []
    },
    "Microsoft.Storage/storageAccounts/networkAcls.bypass": "AzureServices",
    "Microsoft.Storage/storageAccounts/networkAcls.defaultAction": "Allow",
    "Microsoft.Storage/storageAccounts/networkAcls.ipRules": [],
    "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]": [],
    "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*].action": [],
    "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*].value": [],
    "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules": [],
    "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules[*]": [],
    "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules[*].action": [],
    "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules[*].id": [],
    "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules[*].state": [],
    "Microsoft.Storage/storageAccounts/primaryEndpoints": {
        "blob": "https://mystorageaccount.blob.core.windows.net/",
        "file": "https://mystorageaccount.file.core.windows.net/",
        "queue": "https://mystorageaccount.queue.core.windows.net/",
        "table": "https://mystorageaccount.table.core.windows.net/"
    },
    "Microsoft.Storage/storageAccounts/primaryEndpoints.blob": "https://mystorageaccount.blob.core.windows.net/",
    "Microsoft.Storage/storageAccounts/primaryEndpoints.file": "https://mystorageaccount.file.core.windows.net/",
    "Microsoft.Storage/storageAccounts/primaryEndpoints.queue": "https://mystorageaccount.queue.core.windows.net/",
    "Microsoft.Storage/storageAccounts/primaryEndpoints.table": "https://mystorageaccount.table.core.windows.net/",
    "Microsoft.Storage/storageAccounts/primaryEndpoints.web": null,
    "Microsoft.Storage/storageAccounts/primaryLocation": "eastus2",
    "Microsoft.Storage/storageAccounts/provisioningState": "Succeeded",
    "Microsoft.Storage/storageAccounts/sku.name": "Standard_LRS",
    "Microsoft.Storage/storageAccounts/sku.tier": "Standard",
    "Microsoft.Storage/storageAccounts/statusOfPrimary": "available",
    "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly": false
}

Il servizio Azure Resource Graph può essere usato tramite Cloud Shell e offre un metodo semplice e rapido per esplorare le proprietà delle risorse.Azure Resource Graph can be used through Cloud Shell, making it a fast and easy way to explore the properties of your resources.

Determinare quale effetto usareDetermine the effect to use

La decisione in merito all'operazione da eseguire in caso di risorse non conformi è quasi altrettanto importante di quella relativa alle valutazioni da effettuare.Deciding what to do with your non-compliant resources is nearly as important as deciding what to evaluate in the first place. Ogni possibile risposta a una risorsa non conforme si chiama effetto.Each possible response to a non-compliant resource is called an effect. L'effetto controlla se la risorsa non conforme viene registrata, bloccata, include dati aggiunti o è associata a una distribuzione per riportarla a uno stato conforme.The effect controls if the non-compliant resource is logged, blocked, has data appended, or has a deployment associated to it for putting the resource back into a compliant state.

Per questo esempio, l'effetto da scegliere è Nega, perché nell'ambiente di Azure non dovranno essere create risorse non conformi.For our example, Deny is the effect we want as we do not want non-compliant resources created in our Azure environment. L'effetto Controllo è una prima scelta valida per determinare l'impatto di un criterio prima di impostarlo su Nega.Audit is a good first choice for a policy effect to determine what the impact of a policy is before setting it to Deny. Per semplificare la modifica dell'effetto in base all'assegnazione, è possibile parametrizzare l'effetto.One way to make changing the effect per assignment easier is to parameterize the effect. Per informazioni, vedere Parametri di seguito.See parameters below for the details on how.

Comporre la definizioneCompose the definition

A questo punto sono disponibili i dettagli e l'alias della proprietà per lo scenario da gestire.We now have the property details and alias for what we plan to manage. Quindi, è necessario comporre la regola del criterio.Next, we'll compose the policy rule itself. Se non si ha familiarità con il linguaggio dei criteri, vedere Struttura delle definizioni di criteri per informazioni.If you aren't yet familiar with the policy language, reference policy definition structure for how to structure the policy definition. Ecco un modello vuoto di una possibile definizione di criteri:Here is an empty template of what a policy definition looks like:

{
    "properties": {
        "displayName": "<displayName>",
        "description": "<description>",
        "mode": "<mode>",
        "parameters": {
                <parameters>
        },
        "policyRule": {
            "if": {
                <rule>
            },
            "then": {
                "effect": "<effect>"
            }
        }
    }
}

MetadatiMetadata

I primi tre componenti sono metadati dei criteri.The first three components are policy metadata. Per questi componenti è facile fornire i valori, perché il motivo per cui viene creata la regola è noto.These components are easy to provide values for since we know what we are creating the rule for. L'opzione mode riguarda prevalentemente i tag e la posizione delle risorse.Mode is primarily about tags and resource location. Poiché non è necessario limitare la valutazione alle risorse che supportano i tag, verrà usato il valore all per mode.Since we don't need to limit evaluation to resources that support tags, we'll use the all value for mode.

"displayName": "Deny storage accounts not using only HTTPS",
"description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
"mode": "all",

ParametriParameters

Anche se per cambiare la valutazione non è stato usato un parametro, è necessario usarne uno per consentire la modifica dell'effetto ai fini della risoluzione dei problemi.While we didn't use a parameter for changing the evaluation, we do want to use a parameter to allow changing the effect for troubleshooting. Verrà definito un parametro effectType con le sole opzioni Nega e Disabilitato.We'll define an effectType parameter and limit it to only Deny and Disabled. Queste due opzioni soddisfano i requisiti aziendali dell'esempio.These two options match our business requirements. Il blocco di parametri finali sarà come indicato in questo esempio:The finished parameters block looks like this example:

"parameters": {
    "effectType": {
        "type": "string",
        "defaultValue": "Deny",
        "allowedValues": [
            "Deny",
            "Disabled"
        ],
        "metadata": {
            "displayName": "Effect",
            "description": "Enable or disable the execution of the policy"
        }
    }
},

Regola dei criteriPolicy rule

Il passaggio finale della definizione del criterio personalizzato consiste nella composizione della regola dei criteri.Composing the policy rule is the final step in building our custom policy definition. Esistono due affermazioni da verificare:We've identified two statements to test for:

  • Che il tipo di account di archiviazione sia Microsoft.Storage/storageAccountsThat the storage account type is Microsoft.Storage/storageAccounts
  • Che l'account di archiviazione supportsHttpsTrafficOnly non sia trueThat the storage account supportsHttpsTrafficOnly isn't true

Poiché è necessario che entrambe queste affermazioni siano vere, verrà usato l'operatore logico allOf.Since we need both of these statements to be true, we'll use the allOf logical operator. Invece di creare una dichiarazione statica, verrà passato il parametro effectType all'effetto.We'll pass the effectType parameter to the effect instead of making a static declaration. La regola completa è riportata in questo esempio:Our finished rule looks like this example:

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.Storage/storageAccounts"
        },
        {
            "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
            "notEquals": "true"
        }
    ]
},
"then": {
    "effect": "[parameters('effectType')]"
}

Definizione completataCompleted definition

Con tutte e tre le parti del criterio definite, ecco la definizione completata:With all three parts of the policy defined, here is our completed definition:

{
    "properties": {
        "displayName": "Deny storage accounts not using only HTTPS",
        "description": "Deny storage accounts not using only HTTPS. Checks the supportsHttpsTrafficOnly property on StorageAccounts.",
        "mode": "all",
        "parameters": {
            "effectType": {
                "type": "string",
                "defaultValue": "Deny",
                "allowedValues": [
                    "Deny",
                    "Disabled"
                ],
                "metadata": {
                    "displayName": "Effect",
                    "description": "Enable or disable the execution of the policy"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "field": "type",
                        "equals": "Microsoft.Storage/storageAccounts"
                    },
                    {
                        "field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
                        "notEquals": "true"
                    }
                ]
            },
            "then": {
                "effect": "[parameters('effectType')]"
            }
        }
    }
}

La definizione completata può essere usata per creare un nuovo criterio.The completed definition can be used to create a new policy. Il portale e ogni SDK (interfaccia della riga di comando di Azure, Azure PowerShell e API REST) accettano la definizione in modi diversi, per cui esaminare i comandi per ogni componente per verificare l'utilizzo corretto.Portal and each SDK (Azure CLI, Azure PowerShell, and REST API) accept the definition in different ways, so review the commands for each to validate correct usage. Quindi assegnarla usando l'effetto con parametri alle risorse appropriate per gestire la sicurezza degli account di archiviazione.Then assign it, using the parameterized effect, to appropriate resources to manage the security of your storage accounts.

Pulire le risorseClean up resources

Se le risorse di questa esercitazione non sono più necessarie, usare i passaggi seguenti per eliminare tutte le assegnazioni o definizioni create:If you're done working with resources from this tutorial, use the following steps to delete any of the assignments or definitions created above:

  1. Selezionare Definizioni (o Assegnazioni se si sta tentando di eliminare un'assegnazione) in Creazione sul lato sinistro della pagina Criteri di Azure.Select Definitions (or Assignments if you're trying to delete an assignment) under Authoring in the left side of the Azure Policy page.

  2. Cercare la nuova iniziativa o definizione (o assegnazione) di criteri da rimuovere.Search for the new initiative or policy definition (or assignment) you want to remove.

  3. Fare clic con il pulsante destro del mouse sulla riga o selezionare i puntini di sospensione alla fine della definizione (o assegnazione) e quindi Elimina definizione o Elimina assegnazione.Right-click the row or select the ellipses at the end of the definition (or assignment), and select Delete definition (or Delete assignment).

VerificaReview

In questa esercitazione sono state eseguite le attività seguenti:In this tutorial, you successfully accomplished the following tasks:

  • Sono stati identificati i requisiti aziendaliIdentified your business requirements
  • Ogni requisito è stato mappato a una proprietà delle risorse di AzureMapped each requirement to an Azure resource property
  • La proprietà è stata mappata a un aliasMapped the property to an alias
  • È stato determinato l'effetto da usareDetermined the effect to use
  • È stata composta la definizione del criterioComposed the policy definition

Passaggi successiviNext steps

In seguito, usare la definizione del criterio personalizzato per creare e assegnare un criterio:Next, use your custom policy definition to create and assign a policy: