Gestire le risorse con Azure PowerShellManage resources with Azure PowerShell

Durante la distribuzione delle risorse in Azure, è possibile avere una notevole flessibilità al momento di decidere quali tipi di risorse distribuire, dove posizionarle e come configurarle.When deploying resources to Azure, you have tremendous flexibility when deciding what types of resources to deploy, where they are located, and how to set them up. Tuttavia, tale flessibilità potrebbe rendere disponibili più opzioni rispetto a quelle che devono essere consentite nell'organizzazione.However, that flexibility may open more options than you would like to allow in your organization. Quando si valuta la distribuzione delle risorse in Azure, ci si potrebbe chiedere:As you consider deploying resources to Azure, you might be wondering:

  • Come soddisfare i requisiti legali per la sovranità dei dati in determinati paesi?How do I meet legal requirements for data sovereignty in certain countries?
  • Come controllare i costi?How do I control costs?
  • Come garantire che un utente non apporti inavvertitamente modifiche a un sistema critico?How do I ensure that someone does not inadvertently change a critical system?
  • Come tenere traccia dei costi delle risorse e fatturarli in modo accurato?How do I track resource costs and bill it accurately?

In questo articolo vengono illustrate le risposte a tali domande.This article addresses those questions. In particolare, verrà descritto come:Specifically, you:

  • Assegnare utenti ai ruoli e assegnare i ruoli a un ambito in modo che gli utenti dispongano dell'autorizzazione per eseguire le azioni previste, ma non altre azioni.Assign users to roles and assign the roles to a scope so users have permission to perform expected actions but not more actions.
  • Applicare criteri che definiscono convenzioni per le risorse nella sottoscrizione.Apply policies that prescribe conventions for resources in your subscription.
  • Bloccare le risorse di importanza critica per il sistema.Lock resources that are critical to your system.
  • Aggiungere tag alle risorse in modo da tenerne traccia tramite valori significativi per l'organizzazione.Tag resources so you can track them by values that make sense to your organization.

Questo articolo è incentrato sulle attività da eseguire per implementare la governance.This article focuses on the tasks you take to implement governance. Per una discussione più ampia dei concetti, vedere Governance in Azure.For a broader discussion of the concepts, see Governance in Azure.

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.It has common Azure tools preinstalled and configured to use with your account. È sufficiente fare clic su Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Esistono alcuni modi per avviare Cloud Shell:There are a few ways to launch the Cloud Shell:

Fare clic su Prova nell'angolo superiore destro di un blocco di codice.Click Try It in the upper right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/powershell
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper right of the Azure portal. Cloud Shell nel portaleCloud Shell in the portal

Se si sceglie di installare e usare PowerShell in locale, vedere Installare il modulo Azure PowerShell.If you choose to install and use the PowerShell locally, see Install Azure PowerShell module. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzureRmAccount per creare una connessione con Azure.If you are running PowerShell locally, you also need to run Connect-AzureRmAccount to create a connection with Azure.

Informazioni sull'ambitoUnderstand scope

Prima di creare elementi, esaminiamo il concetto di ambito.Before creating any items, let's review the concept of scope. Azure offre quattro livelli di gestione: gruppi di gestione, sottoscrizione, gruppo di risorse e risorsa.Azure provides four levels of management: management groups, subscription, resource group, and resource. I gruppi di gestione sono disponibili in versione di anteprima.Management groups are in a preview release. Nella figura seguente viene illustrato un esempio di questi livelli.The following image shows an example of these layers.

Scope

Le impostazioni di gestione possono essere applicate a qualsiasi di questi livelli di ambito.You apply management settings at any of these levels of scope. Il livello selezionato determina l'estensione con cui viene applicata l'impostazione.The level you select determines how widely the setting is applied. I livelli inferiori ereditano le impostazioni dai livelli superiori.Lower levels inherit settings from higher levels. Quando si applica un'impostazione alla sottoscrizione, tale impostazione viene applicata a tutti i gruppi di risorse e le risorse nella sottoscrizione.When you apply a setting to the subscription, that setting is applied to all resource groups and resources in your subscription. Quando si applica un'impostazione al gruppo di risorse, l'impostazione viene applicata al gruppo di risorse e a tutte le risorse che contiene.When you apply a setting on the resource group, that setting is applied the resource group and all its resources. Tuttavia, un altro gruppo di risorse non disporrà di tale impostazione.However, another resource group does not have that setting.

In genere, è consigliabile applicare le impostazioni critiche ai livelli superiori e i requisiti specifici dei progetti ai livelli inferiori.Usually, it makes sense to apply critical settings at higher levels and project-specific requirements at lower levels. Potrebbe ad esempio essere necessario assicurarsi che tutte le risorse dell'organizzazione vengano distribuite in determinate aree geografiche.For example, you might want to make sure all resources for your organization are deployed to certain regions. Per soddisfare questo requisito, applicare alla sottoscrizione un criterio che specifica le posizioni consentite.To accomplish this requirement, apply a policy to the subscription that specifies the allowed locations. Quando altri utenti nell'organizzazione aggiungono nuovi gruppi di risorse e nuove risorse, vengono applicate automaticamente le posizioni consentite.As other users in your organization add new resource groups and resources, the allowed locations are automatically enforced.

In questo articolo tutte le impostazioni di gestione vengono applicate a un gruppo di risorse per semplificare la rimozione delle impostazione al termine delle operazioni.In this article, you apply all management settings to a resource group so you can easily remove those settings when done.

Creare il gruppo di risorse.Let's create the resource group.

Set-AzureRmContext -Subscription <subscription-name>
New-AzureRmResourceGroup -Name myResourceGroup -Location EastUS

Il gruppo di risorse è attualmente vuoto.Currently, the resource group is empty.

Controllo degli accessi in base al ruoloRole-based access control

Si vuole che gli utenti dell'organizzazione dispongano del giusto livello di accesso a queste risorse.You want to make sure users in your organization have the right level of access to these resources. Non si vuole concedere un accesso illimitato agli utenti, ma si vuole comunque avere la certezza che tutti possano svolgere il proprio lavoro.You don't want to grant unlimited access to users, but you also need to make sure they can do their work. Il controllo degli accessi in base al ruolo consente di stabilire quali utenti sono autorizzati a completare specifiche azioni in un determinato ambito.Role-based access control (RBAC) enables you to manage which users have permission to complete specific actions at a scope. Un ruolo definisce un set di azioni consentite.A role defines a set of permitted actions. Si assegna il ruolo a un ambito e quindi si specifica quali utenti appartengono a tale ruolo per l'ambito.You assign the role to a scope, and specify which users belong to that role for the scope.

Quando si pianifica la strategia di controllo degli accessi, concedere agli utenti almeno il privilegio di completare la propria sessione di lavoro.When planning your access control strategy, grant users the least privilege to get their work done. La figura seguente mostra un modello consigliato per l'assegnazione del controllo degli accessi in base al ruolo.The following image shows a suggested pattern for assigning RBAC.

Scope

Sono disponibili tre ruoli che si applicano a tutte le risorse: Proprietario, Collaboratore e Lettore.There are three roles that apply to all resources - Owner, Contributor, and Reader. Qualsiasi account assegnato al ruolo Proprietario deve essere controllato attentamente e usato di rado.Any accounts assigned to the Owner role should be tightly controlled and rarely used. Agli utenti che devono limitarsi a verificare lo stato delle soluzioni deve essere assegnato il ruolo Lettore.Users that only need to observe the state of solutions should be granted the Reader role.

Alla maggior parte degli utenti vengono concessi ruoli correlati alle risorse o ruoli personalizzati a livello di gruppo di risorse o di sottoscrizione.Most users are granted resource-specific roles or custom roles at either the subscription or resource group level. Questi ruoli definiscono in modo preciso le azioni consentite.These roles tightly define the permitted actions. Assegnando agli utenti a questi ruoli si concede loro l'accesso richiesto senza assegnare un livello eccessivo di controllo.By assigning users to these roles, you grant the required access for users without permitting too much control. È possibile assegnare un account a più di un ruolo. All'utente corrispondente saranno concesse le autorizzazioni combinate di tali ruoli.You can assign an account to more than one role, and that user gets the combined permissions of the roles. La concessione dell'accesso a livello di risorse è spesso troppo restrittiva per gli utenti, ma potrebbe risultare utile per un processo automatizzato progettato per attività specifiche.Granting access at the resource level is often too restrictive for users, but may work for an automated process designed for specific task.

Utenti autorizzati all'assegnazione di ruoliWho can assign roles

Per creare e rimuovere assegnazioni di ruoli, gli utenti devono disporre di accesso Microsoft.Authorization/roleAssignments/*.To create and remove role assignments, users must have Microsoft.Authorization/roleAssignments/* access. Questo accesso viene concesso tramite il ruolo Proprietario o Amministratore accessi utente.This access is granted through the Owner or User Access Administrator roles.

Assegnare un ruoloAssign a role

In questo articolo viene eseguita la distribuzione di una macchina virtuale e della rispettiva rete virtuale correlata.In this article, you deploy a virtual machine and its related virtual network. Per la gestione di soluzioni di macchine virtuali, sono disponibili tre ruoli specifici delle risorse che forniscono l'accesso in genere necessario:For managing virtual machine solutions, there are three resource-specific roles that provide commonly needed access:

Invece di assegnare ruoli ai singoli utenti, è spesso più facile creare un gruppo di Azure Active Directory per gli utenti che devono eseguire azioni simili.Instead of assigning roles to individual users, it's often easier to create an Azure Active Directory group for users who need to take similar actions. Assegnare quindi tale gruppo al ruolo appropriato.Then, assign that group to the appropriate role. Per semplificare questo articolo, creare un gruppo di Azure Active Directory senza membri.To simplify this article, you create an Azure Active Directory group without members. È comunque possibile assegnare questo gruppo a un ruolo per un ambito.You can still assign this group to a role for a scope.

L'esempio seguente crea un gruppo e lo assegna al ruolo Collaboratore Macchina virtuale per il gruppo di risorse.The following example creates a group and assigns it to the Virtual Machine Contributor role for the resource group. Per eseguire il comando New-AzureAdGroup, è necessario usare Azure Cloud Shell o scaricare il modulo di Azure AD PowerShell.To run the New-AzureAdGroup command, you must either use the Azure Cloud Shell or download the Azure AD PowerShell module.

$adgroup = New-AzureADGroup -DisplayName VMDemoContributors `
  -MailNickName vmDemoGroup `
  -MailEnabled $false `
  -SecurityEnabled $true
New-AzureRmRoleAssignment -ObjectId $adgroup.ObjectId `
  -ResourceGroupName myResourceGroup `
  -RoleDefinitionName "Virtual Machine Contributor"

In genere si ripete il processo per Collaboratore Rete e Collaboratore Account di archiviazione per assicurarsi che vengano assegnati utenti per la gestione delle risorse distribuite.Typically, you repeat the process for Network Contributor and Storage Account Contributor to make sure users are assigned to manage the deployed resources. In questo articolo è possibile ignorare questi passaggi.In this article, you can skip those steps.

Criteri di AzureAzure policies

I criteri di Azure consentono di verificare che tutte le risorse nella sottoscrizione soddisfino gli standard aziendali.Azure policies help you make sure all resources in subscription meet corporate standards. Usare i criteri per ridurre i costi limitando le opzioni di distribuzione solo alle SKU e ai tipi di risorse approvati.Use policies to reduce your costs by restricting deployment options to only those resource types and SKUs that are approved. È possibile definire regole e azioni per le risorse e tali regole verranno applicate automaticamente durante la distribuzione.You define rules and actions for your resources and those rules are automatically enforced during deployment. È ad esempio possibile controllare i tipi di risorse che vengono distribuiti.For example, you can control the types of resources that are deployed. In alternativa, è possibile limitare le posizioni approvate per le risorse.Or, you can restrict the approved locations for resources. Alcuni criteri negano un'azione, mentre altri impostano il controllo di un'azione.Some policies deny an action, and some policies set up auditing of an action.

I criteri sono complementari al controllo degli accessi in base al ruolo.Policy is complementary to role-based access control (RBAC). Il controllo degli accessi in base al ruolo è incentrato sull'accesso utente ed è un sistema con negazione predefinita e autorizzazioni esplicite.RBAC focuses on user access, and is a default deny and explicit allow system. I criteri si concentrano sulle proprietà delle risorse durante e dopo la distribuzione.Policy focuses on resource properties during and after deployment. Rappresentano un sistema con autorizzazioni predefinite e negazione esplicita.It's a default allow and explicit deny system.

È importante comprendere due concetti sui criteri: le definizioni di criteri e le assegnazioni di criteri.There are two concepts to understand with policies - policy definitions and policy assignments. Una definizione di criteri descrive le condizioni di gestione da applicare.A policy definition describes the management conditions you want to enforce. Un'assegnazione di criteri applica una definizione di criteri in un particolare ambito.A policy assignment puts a policy definition into action for a particular scope.

Assegnare criteri

Azure offre diverse definizioni di criteri predefinite che è possibile usare senza alcuna modifica.Azure provides several built-in policy definitions you can use without any modification. È possibile passare i valori dei parametri per specificare i valori ammessi nell'ambito.You pass parameter values to specify the values that are permitted in your scope. Se una definizione di criteri predefinita non soddisfa i requisiti, è possibile creare definizioni di criteri personalizzate.If built-in policy definition don't fulfill your requirements, you can create custom policy definitions.

Applicare i criteriApply policies

La sottoscrizione include già alcune definizioni dei criteri.Your subscription already has several policy definitions. Per visualizzare le definizioni dei criteri disponibili, usare il comando seguente:To see the available policy definitions, use:

(Get-AzureRmPolicyDefinition).Properties | Format-Table displayName, policyType

Vengono visualizzate le definizioni dei criteri esistenti.You see the existing policy definitions. Il tipo di criterio è BuiltIn o Custom.The policy type is either BuiltIn or Custom. Esaminare le definizioni per individuare i criteri che descrivono una condizione da assegnare.Look through the definitions for ones that describe a condition you want assign. In questo articolo vengono assegnati criteri che consentono di:In this article, you assign policies that:

  • Limitare le posizioni per tutte le risorselimit the locations for all resources
  • Limitare gli SKU per le macchine virtualilimit the SKUs for virtual machines
  • Controllare le macchine virtuali che non usano Managed Disksaudit virtual machines that do not use managed disks
$locations ="eastus", "eastus2"
$skus = "Standard_DS1_v2", "Standard_E2s_v2"

$rg = Get-AzureRmResourceGroup -Name myResourceGroup

$locationDefinition = Get-AzureRmPolicyDefinition | where-object {$_.properties.displayname -eq "Allowed locations"}
$skuDefinition = Get-AzureRmPolicyDefinition | where-object {$_.properties.displayname -eq "Allowed virtual machine SKUs"}
$auditDefinition = Get-AzureRmPolicyDefinition | where-object {$_.properties.displayname -eq "Audit VMs that do not use managed disks"}

New-AzureRMPolicyAssignment -Name "Set permitted locations" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $locationDefinition `
  -listOfAllowedLocations $locations
New-AzureRMPolicyAssignment -Name "Set permitted VM SKUs" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $skuDefinition `
  -listOfAllowedSKUs $skus
New-AzureRMPolicyAssignment -Name "Audit unmanaged disks" `
  -Scope $rg.ResourceId `
  -PolicyDefinition $auditDefinition

Distribuire la macchina virtualeDeploy the virtual machine

Sono stati assegnati ruoli e criteri, quindi è ora possibile distribuire la soluzione.You have assigned roles and policies, so you're ready to deploy your solution. Le dimensioni predefinite sono Standard_DS1_v2, che corrispondono a uno degli SKU consentiti.The default size is Standard_DS1_v2, which is one of your allowed SKUs. Quando si esegue questo passaggio vengono chieste le credenziali.When running this step, you are prompted for credentials. I valori immessi sono configurati come nome utente e password per la macchina virtuale.The values that you enter are configured as the user name and password for the virtual machine.

New-AzureRmVm -ResourceGroupName "myResourceGroup" `
     -Name "myVM" `
     -Location "East US" `
     -VirtualNetworkName "myVnet" `
     -SubnetName "mySubnet" `
     -SecurityGroupName "myNetworkSecurityGroup" `
     -PublicIpAddressName "myPublicIpAddress" `
     -OpenPorts 80,3389

Al termine della distribuzione è possibile applicare altre impostazioni di gestione alla soluzione.After your deployment finishes, you can apply more management settings to the solution.

Bloccare le risorseLock resources

I blocchi delle risorse impediscono agli utenti dell'organizzazione di modificare o eliminare accidentalmente risorse di importanza fondamentale.Resource locks prevent users in your organization from accidentally deleting or modifying critical resources. Diversamente dal controllo degli accessi in base al ruolo, i blocchi delle risorse consentono di applicare una restrizione a tutti gli utenti e i ruoli.Unlike role-based access control, resource locks apply a restriction across all users and roles.

È possibile impostare il livello di blocco CanNotDelete o ReadOnly.You can set the lock level to CanNotDelete or ReadOnly. Nel portale i livelli dei blocchi sono visualizzati rispettivamente come Elimina e Sola lettura.In the portal, the locks levels are displayed as Delete and Read-only respectively.

  • CanNotDelete significa che gli utenti autorizzati possono leggere e modificare una risorsa, ma non eliminarla.CanNotDelete means authorized users can still read and modify a resource, but they can't delete the resource.
  • ReadOnly significa che gli utenti autorizzati possono leggere una risorsa, ma non eliminarla o aggiornarla.ReadOnly means authorized users can read a resource, but they can't delete or update the resource. L'applicazione di questo blocco è simile alla concessione a tutti gli utenti autorizzati solo le autorizzazioni concesse dal ruolo Lettore.Applying this lock is similar to restricting all authorized users to the permissions granted by the Reader role.

Suggerimento

Prestare attenzione quando si applica un blocco ReadOnly.Be careful when applying a ReadOnly lock. Alcune operazioni che sembrano operazioni di sola lettura possono effettivamente richiedere azioni aggiuntive.Some operations that seem like read operations actually require additional actions. Ad esempio, un blocco ReadOnly applicato a un account di archiviazione impedisce a tutti gli utenti di visualizzare l'elenco delle chiavi.For example, a ReadOnly lock on a storage account prevents all users from listing the keys. L'operazione di elenco delle chiavi viene gestita tramite una richiesta POST, perché le chiavi restituite sono disponibili per operazioni di scrittura.The list keys operation is handled through a POST request because the returned keys are available for write operations. Un blocco ReadOnly applicato a una risorsa Servizio app impedisce a Visual Studio Server Explorer di visualizzare i file della risorsa perché questa interazione richiede l'accesso in scrittura.A ReadOnly lock on an App Service resource prevents Visual Studio Server Explorer from displaying files for the resource because that interaction requires write access.

Quando si applica un blocco in un ambito padre, tutte le risorse in tale ambito ereditano lo stesso blocco.When you apply a lock at a parent scope, all resources within that scope inherit the same lock. Anche le risorse aggiunte successivamente ereditano il blocco dal padre.Even resources you add later inherit the lock from the parent. Il blocco più restrittivo nell'ereditarietà ha la precedenza.The most restrictive lock in the inheritance takes precedence.

I blocchi di Resource Manager si applicano solo alle operazioni che si verificano nel piano di gestione, costituito da operazioni inviate a https://management.azure.com.Resource Manager locks apply only to operations that happen in the management plane, which consists of operations sent to https://management.azure.com. I blocchi non limitano il modo in cui le risorse elaborano le proprie funzioni.The locks don't restrict how resources process their own functions. Vengono limitate le modifiche alle risorse, ma non le operazioni delle risorse.Resource changes are restricted, but resource operations aren't restricted. Ad esempio, un blocco ReadOnly applicato a un database SQL impedisce l'eliminazione o la modifica del database.For example, a ReadOnly lock on a SQL Database prevents you from deleting or modifying the database. Non impedisce la creazione, l'aggiornamento o l'eliminazione di dati nel database.It doesn't prevent you from creating, updating, or deleting data in the database. Le transazioni di dati sono consentite in quanto tali operazioni non vengono inviate a https://management.azure.com.Data transactions are allowed because those operations are not sent to https://management.azure.com.

Chi può creare o eliminare i blocchi nell'organizzazioneWho can create or delete locks in your organization

Per creare o eliminare i blocchi di gestione, è necessario avere accesso alle azioni Microsoft.Authorization/locks/*.To create or delete management locks, you must have access to Microsoft.Authorization/locks/* actions. Dei ruoli predefiniti, solo Proprietario e Amministratore Accesso utenti garantiscono tali azioni.Of the built-in roles, only Owner and User Access Administrator are granted those actions.

Bloccare una risorsaLock a resource

Per bloccare la macchina virtuale e il gruppo di sicurezza di rete, usare il comando seguente:To lock the virtual machine and network security group, use:

New-AzureRmResourceLock -LockLevel CanNotDelete `
  -LockName LockVM `
  -ResourceName myVM `
  -ResourceType Microsoft.Compute/virtualMachines `
  -ResourceGroupName myResourceGroup
New-AzureRmResourceLock -LockLevel CanNotDelete `
  -LockName LockNSG `
  -ResourceName myNetworkSecurityGroup `
  -ResourceType Microsoft.Network/networkSecurityGroups `
  -ResourceGroupName myResourceGroup

La macchina virtuale può essere eliminata solo se si rimuove in modo specifico il blocco.The virtual machine can only be deleted if you specifically remove the lock. Questo passaggio è illustrato in Pulire le risorse.That step is shown in Clean up resources.

Aggiungere tag alle risorseTag resources

I tag vengono applicati alle risorse di Azure per organizzarle in modo logico in categorie.You apply tags to your Azure resources to logically organize them by categories. Ogni tag è costituito da un nome e un valore.Each tag consists of a name and a value. Ad esempio, è possibile applicare il nome "Environment" e il valore "Production" a tutte le risorse nell'ambiente di produzione.For example, you can apply the name "Environment" and the value "Production" to all the resources in production.

Dopo aver applicato i tag, è possibile recuperare tutte le risorse nella sottoscrizione che hanno un nome e un valore di tag corrispondenti.After you apply tags, you can retrieve all the resources in your subscription with that tag name and value. I tag permettono di recuperare risorse correlate da gruppi di risorse diversi.Tags enable you to retrieve related resources from different resource groups. Questo approccio può risultare utile per l'organizzazione delle risorse per la fatturazione o la gestione.This approach is helpful when you need to organize resources for billing or management.

Ai tag si applicano le limitazioni seguenti:The following limitations apply to tags:

  • Ogni risorsa o gruppo di risorse può avere un massimo di 15 coppie nome-valore di tag.Each resource or resource group can have a maximum of 15 tag name/value pairs. Questa limitazione si applica solo ai tag applicati direttamente al gruppo di risorse o alla risorsa.This limitation applies only to tags directly applied to the resource group or resource. Un gruppo di risorse può contenere più risorse ognuna con 15 coppie nome-valore di tag.A resource group can contain many resources that each have 15 tag name/value pairs. Se si devono associare più di 15 valori a una risorsa, usare una stringa JSON come valore di tag.If you have more than 15 values that you need to associate with a resource, use a JSON string for the tag value. La stringa JSON può contenere diversi valori applicati a un singolo nome di tag.The JSON string can contain many values that are applied to a single tag name. Questo articolo illustra un esempio di assegnazione di una stringa JSON al tag.This article shows an example of assigning a JSON string to the tag.
  • Il nome del tag è limitato a 512 caratteri e il valore del tag è limitato a 256 caratteri.The tag name is limited to 512 characters, and the tag value is limited to 256 characters. Per gli account di archiviazione, il nome del tag è limitato a 128 caratteri e il valore a 256 caratteri.For storage accounts, the tag name is limited to 128 characters, and the tag value is limited to 256 characters.
  • I tag applicati al gruppo di risorse non vengono ereditati dalle risorse in tale gruppo di risorse.Tags applied to the resource group are not inherited by the resources in that resource group.
  • Non è possibile applicare tag alle risorse classiche, ad esempio Servizi cloud.Tags can't be applied to classic resources such as Cloud Services.
  • I nomi dei tag non possono contenere i caratteri seguenti: <, >, %, &, \, ?, /Tag names can't contain these characters: <, >, %, &, \, ?, /

Aggiungere tag alle risorseTag resources

Per aggiungere due tag a un gruppo di risorse, usare il comando Set-AzureRmResourceGroup:To add two tags to a resource group, use the Set-AzureRmResourceGroup command:

Set-AzureRmResourceGroup -Name myResourceGroup -Tag @{ Dept="IT"; Environment="Test" }

Si supponga di voler aggiungere un terzo tag.Let's suppose you want to add a third tag. Ogni volta che si applicano tag a una risorsa o a un gruppo di risorse, si sovrascrivono i tag esistenti in tale risorsa o gruppo di risorse.Every time you apply tags to a resource or a resource group, you overwrite the existing tags on that resource or resource group. Per aggiungere un nuovo tag senza perdere i tag esistenti, è necessario recuperare i tag esistenti, aggiungere un nuovo tag e riapplicare la raccolta di tag:To add a new tag without losing the existing tags, you must retrieve the existing tags, add a new tag, and reapply the collection of tags:

# Get existing tags and add a new tag
$tags = (Get-AzureRmResourceGroup -Name myResourceGroup).Tags
$tags.Add("Project", "Documentation")

# Reapply the updated set of tags 
Set-AzureRmResourceGroup -Tag $tags -Name myResourceGroup

Le risorse non ereditano i tag dal gruppo di risorse.Resources don't inherit tags from the resource group. Attualmente, il gruppo di risorse dispone di tre tag, ma le risorse non hanno alcun tag.Currently, your resource group has three tags but the resources do not have any tags. Per applicare tutti i tag da un gruppo di risorse alle risorse mantenendo i tag esistenti nelle risorse non duplicate, usare lo script seguente:To apply all tags from a resource group to its resources, and retain existing tags on resources that are not duplicates, use the following script:

# Get the resource group
$group = Get-AzureRmResourceGroup myResourceGroup

if ($group.Tags -ne $null) {
    # Get the resources in the resource group
    $resources = Get-AzureRmResource -ResourceGroupName $group.ResourceGroupName

    # Loop through each resource
    foreach ($r in $resources)
    {
        # Get the tags for this resource
        $resourcetags = (Get-AzureRmResource -ResourceId $r.ResourceId).Tags

        # If the resource has existing tags, add new ones
        if ($resourcetags)
        {
            foreach ($key in $group.Tags.Keys)
            {
                if (-not($resourcetags.ContainsKey($key)))
                {
                    $resourcetags.Add($key, $group.Tags[$key])
                }
            }

            # Reapply the updated tags to the resource 
            Set-AzureRmResource -Tag $resourcetags -ResourceId $r.ResourceId -Force
        }
        else
        {
            Set-AzureRmResource -Tag $group.Tags -ResourceId $r.ResourceId -Force
        }
    }
}

In alternativa, è possibile applicare i tag dal gruppo di risorse alle risorse senza mantenere i tag esistenti:Alternatively, you can apply tags from the resource group to the resources without keeping the existing tags:

# Get the resource group
$g = Get-AzureRmResourceGroup -Name myResourceGroup

# Find all the resources in the resource group, and for each resource apply the tags from the resource group
Get-AzureRmResource -ResourceGroupName $g.ResourceGroupName | ForEach-Object {Set-AzureRmResource -ResourceId $_.ResourceId -Tag $g.Tags -Force }

Per combinare diversi valori in un singolo tag, usare una stringa JSON.To combine several values in a single tag, use a JSON string.

Set-AzureRmResourceGroup -Name myResourceGroup -Tag @{ CostCenter="{`"Dept`":`"IT`",`"Environment`":`"Test`"}" }

Per rimuovere tutti i tag, passare una tabella hash vuota.To remove all tags, you pass an empty hash table.

Set-AzureRmResourceGroup -Name myResourceGroup -Tag @{ }

Per applicare tag a una macchina virtuale, usare il comando seguente:To apply tags to a virtual machine, use:

$r = Get-AzureRmResource -ResourceName myVM `
  -ResourceGroupName myResourceGroup `
  -ResourceType Microsoft.Compute/virtualMachines
Set-AzureRmResource -Tag @{ Dept="IT"; Environment="Test"; Project="Documentation" } -ResourceId $r.ResourceId -Force

Trovare le risorse in base al tagFind resources by tag

Per trovare le risorse tramite un nome e un valore di tag, usare il comando seguente:To find resources with a tag name and value, use:

(Find-AzureRmResource -TagName Environment -TagValue Test).Name

È possibile usare i valori restituiti per attività di gestione quali l'arresto di tutte le macchine virtuali con un valore di tag.You can use the returned values for management tasks like stopping all virtual machines with a tag value.

Find-AzureRmResource -TagName Environment -TagValue Test | Where-Object {$_.ResourceType -eq "Microsoft.Compute/virtualMachines"} | Stop-AzureRmVM

Visualizzare i costi in base ai valori dei tagView costs by tag values

Dopo l'applicazione dei tag alle risorse è possibile visualizzare i costi per le risorse con i tag specificati.After applying tags to resources, you can view costs for resources with those tags. La visualizzazione dell'utilizzo più recente nell'analisi dei costi richiede tempo, quindi è possibile che i costi non siano ancora visualizzati.It takes a while for cost analysis to show the latest usage, so you may not see the costs yet. Quando i costi sono disponibili, è possibile visualizzare i costi per le risorse nei gruppi di risorse della sottoscrizione.When the costs are available, you can view costs for resources across resource groups in your subscription. Per visualizzare i costi, gli utenti devono avere l'accesso a livello di sottoscrizione alle informazioni di fatturazione.Users must have subscription level access to billing information to see the costs.

Per visualizzare i costi in base al tag nel portale, selezionare la sottoscrizione e quindi Analisi dei costi.To view costs by tag in the portal, select your subscription and select Cost Analysis.

Analisi dei costi

Filtrare quindi in base al valore del tag e selezionare Applica.Then, filter by the tag value, and select Apply.

Visualizzare il costo in base al tag

È anche possibile usare le API di fatturazione di Azure per visualizzare i costi a livello di programmazione.You can also use the Azure Billing APIs to programmatically view costs.

Pulire le risorseClean up resources

È possibile eliminare il gruppo di sicurezza di rete bloccato solo dopo la rimozione del blocco.The locked network security group can't be deleted until the lock is removed. Per rimuovere un blocco, usare il comando seguente:To remove the lock, use:

Remove-AzureRmResourceLock -LockName LockVM `
  -ResourceName myVM `
  -ResourceType Microsoft.Compute/virtualMachines `
  -ResourceGroupName myResourceGroup
Remove-AzureRmResourceLock -LockName LockNSG `
  -ResourceName myNetworkSecurityGroup `
  -ResourceType Microsoft.Network/networkSecurityGroups `
  -ResourceGroupName myResourceGroup

Quando non servono più, è possibile usare il comando Remove-AzureRmResourceGroup per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.When no longer needed, you can use the Remove-AzureRmResourceGroup command to remove the resource group, VM, and all related resources.

Remove-AzureRmResourceGroup -Name myResourceGroup

Passaggi successiviNext steps