Informazioni sulle definizioni del ruolo per le risorse di AzureUnderstand role definitions for Azure resources

Per capire come funziona un ruolo o creare un ruolo personalizzato per le risorse di Azure, è utile comprendere il modo in cui vengono definiti i ruoli.If you are trying to understand how a role works or if you are creating your own custom role for Azure resources, it's helpful to understand how roles are defined. Questo articolo illustra in dettaglio le definizioni di ruolo e presenta alcuni esempi.This article describes the details of role definitions and provides some examples.

Struttura delle definizioni di ruoloRole definition structure

Una definizione di ruolo è una raccolta di autorizzazioni,A role definition is a collection of permissions. talvolta semplicemente chiamata ruolo.It's sometimes just called a role. Una definizione di ruolo elenca le operazioni che è possibile eseguire, ad esempio lettura, scrittura ed eliminazione,A role definition lists the operations that can be performed, such as read, write, and delete. È anche possibile elencare le operazioni che non possono essere eseguite o le operazioni correlate ai dati sottostanti.It can also list the operations that can't be performed or operations related to underlying data. Una definizione di ruolo presenta la struttura seguente:A role definition has the following structure:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []

Le operazioni vengono specificate con stringhe che hanno il formato seguente:Operations are specified with strings that have the following format:

  • {Company}.{ProviderName}/{resourceType}/{action}

La parte {action} di una stringa relativa a un'operazione specifica il tipo di operazioni che è possibile eseguire su un tipo di risorsa.The {action} portion of an operation string specifies the type of operations you can perform on a resource type. In {action} possono ad esempio essere elencate le sottostringhe seguenti:For example, you will see the following substrings in {action}:

Sottostringa azioneAction substring DescrizioneDescription
* Il carattere jolly concede l'accesso a tutte le operazioni che corrispondono alla stringa.The wildcard character grants access to all operations that match the string.
read Abilita le operazioni di lettura (GET).Enables read operations (GET).
write Abilita le operazioni di scrittura (PUT o PATCH).Enables write operations (PUT or PATCH).
action Abilita operazioni personalizzate come il riavvio delle macchine virtuali (POST).Enables custom operations like restart virtual machines (POST).
delete Abilita le operazioni di eliminazione (DELETE).Enables delete operations (DELETE).

Di seguito è riportata la definizione del ruolo Collaboratore in formato JSON.Here's the Contributor role definition in JSON format. L'operazione identificata dal carattere jolly (*) in Actions indica che l'entità di sicurezza assegnata a questo ruolo può eseguire qualsiasi azione,The wildcard (*) operation under Actions indicates that the principal assigned to this role can perform all actions, or in other words, it can manage everything. anche quelle definite in futuro in seguito all'aggiunta di nuovi tipi di risorse da parte di Azure.This includes actions defined in the future, as Azure adds new resource types. Le operazioni sotto NotActions vengono sottratte a Actions.The operations under NotActions are subtracted from Actions. Nel caso del ruolo Collaboratore, NotActions rimuove la capacità di gestire e assegnare l'accesso alle risorse.In the case of the Contributor role, NotActions removes this role's ability to manage access to resources and also assign access to resources.

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Operazioni di gestione e datiManagement and data operations

Il controllo degli accessi in base al ruolo per le operazioni di gestione è specificato nelle proprietà Actions e NotActions di una definizione di ruolo.Role-based access control for management operations is specified in the Actions and NotActions properties of a role definition. Di seguito sono riportati alcuni esempi di operazioni di gestione in Azure:Here are some examples of management operations in Azure:

  • Gestire l'accesso a un account di archiviazioneManage access to a storage account
  • Creare, aggiornare o eliminare un contenitore BLOBCreate, update, or delete a blob container
  • Eliminare un gruppo di risorse e tutte le risorse incluse nel gruppoDelete a resource group and all of its resources

L'accesso di gestione non viene ereditato dai dati, a condizione che il metodo di autenticazione del contenitore sia impostato su "Azure AD account utente" e non su "chiave di accesso".Management access is not inherited to your data provided that the container authentication method is set to "Azure AD User Account" and not "Access Key". Questa separazione impedisce ai ruoli con caratteri jolly (*) di avere accesso illimitato ai dati.This separation prevents roles with wildcards (*) from having unrestricted access to your data. Se ad esempio un utente ha un ruolo Lettore in una sottoscrizione, può visualizzare l'account di archiviazione, ma per impostazione predefinita non può visualizzare i dati sottostanti.For example, if a user has a Reader role on a subscription, then they can view the storage account, but by default they can't view the underlying data.

In precedenza, il controllo degli accessi in base al ruolo non veniva usato per le operazioni sui dati.Previously, role-based access control was not used for data operations. L'autorizzazione per le operazioni sui dati variava a seconda del provider di risorse.Authorization for data operations varied across resource providers. Lo stesso modello di autorizzazione per il controllo degli accessi in base al ruolo utilizzato per le operazioni di gestione è stato esteso alle operazioni sui dati.The same role-based access control authorization model used for management operations has been extended to data operations.

Per supportare le operazioni sui dati sono state aggiunte nuove proprietà di dati alla struttura di definizione dei ruoli.To support data operations, new data properties have been added to the role definition structure. Le operazioni sui dati vengono specificate nelle proprietà DataActions e NotDataActions.Data operations are specified in the DataActions and NotDataActions properties. Con l'aggiunta di queste proprietà di dati viene mantenuta la separazione tra gestione e dati.By adding these data properties, the separation between management and data is maintained. In tal modo, si impedisce alle assegnazioni di ruolo correnti con caratteri jolly (*) di accedere immediatamente ai dati.This prevents current role assignments with wildcards (*) from suddenly having accessing to data. Ecco alcune operazioni sui dati che possono essere specificate in DataActions e NotDataActions:Here are some data operations that can be specified in DataActions and NotDataActions:

  • Leggere un elenco di BLOB in un contenitoreRead a list of blobs in a container
  • Scrivere su un BLOB di archiviazione in un contenitoreWrite a storage blob in a container
  • Leggere un messaggio in una codaDelete a message in a queue

Di seguito è illustrata la definizione del ruolo lettore dati BLOB di archiviazione , che Actions include DataActions le operazioni in entrambe le proprietà e.Here's the Storage Blob Data Reader role definition, which includes operations in both the Actions and DataActions properties. Questo ruolo consente di leggere il contenitore BLOB e anche i dati di BLOB sottostanti.This role allows you to read the blob container and also the underlying blob data.

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Alle proprietà DataActions e NotDataActions possono essere aggiunte solo operazioni sui dati.Only data operations can be added to the DataActions and NotDataActions properties. I provider di risorse identificano le operazioni sui dati impostando la proprietà isDataAction su true.Resource providers identify which operations are data operations, by setting the isDataAction property to true. Per un elenco delle operazioni in cui isDataAction è true, vedere Operazioni dei provider di risorse.To see a list of the operations where isDataAction is true, see Resource provider operations. In una definizione di ruolo che non prevede operazioni sui dati non è necessario che siano presenti le proprietà DataActions e NotDataActions.Roles that do not have data operations are not required to have DataActions and NotDataActions properties within the role definition.

Le autorizzazioni per tutte le chiamate API delle operazioni di gestione vengono gestite da Azure Resource Manager.Authorization for all management operation API calls is handled by Azure Resource Manager. Le autorizzazioni per le chiamate API delle operazioni sui dati vengono gestite da un provider di risorse o da Azure Resource Manager.Authorization for data operation API calls is handled by either a resource provider or Azure Resource Manager.

Esempio di operazioni sui datiData operations example

Per comprendere meglio il funzionamento delle operazioni di gestione e di quelle sui dati, è possibile considerare un esempio specifico.To better understand how management and data operations work, let's consider a specific example. Ad Alice è stato assegnato il ruolo Proprietario nell'ambito della sottoscrizione.Alice has been assigned the Owner role at the subscription scope. A Bob è stato assegnato il ruolo di collaboratore dati BLOB di archiviazione in un ambito dell'account di archiviazione.Bob has been assigned the Storage Blob Data Contributor role at a storage account scope. L'esempio è illustrato dal diagramma seguente.The following diagram shows this example.

Il controllo degli accessi in base al ruolo è stato esteso per supportare sia le operazioni di gestione sia quelle sui dati

Il ruolo proprietario per Alice e il ruolo di collaboratore dati BLOB di archiviazione per Bob hanno le seguenti azioni:The Owner role for Alice and the Storage Blob Data Contributor role for Bob have the following actions:

ProprietarioOwner

    actions    Actions
    *    *

Collaboratore ai dati dei BLOB di archiviazioneStorage Blob Data Contributor

    actions    Actions
    Microsoft.Storage/storageAccounts/blobServices/containers/delete    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write    Microsoft.Storage/storageAccounts/blobServices/containers/write
    dataActions    DataActions
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Poiché Alice ha un'azione con*carattere jolly () nell'ambito di una sottoscrizione, le relative autorizzazioni ereditano per consentire l'esecuzione di tutte le operazioni di gestione.Since Alice has a wildcard (*) action at a subscription scope, their permissions inherit down to enable them to perform all management actions. Alice può leggere, scrivere ed eliminare i contenitori.Alice can read, write, and delete containers. Tuttavia non può eseguire operazioni sui dati senza eseguire passaggi aggiuntivi.However, Alice cannot perform data operations without taking additional steps. Ad esempio, per impostazione predefinita, non può leggere i BLOB all'interno di un contenitore.For example, by default, Alice cannot read the blobs inside a container. Per leggere i BLOB, Alice deve prima recuperare le chiavi di accesso alle risorse di archiviazione e usarle per accedere ai BLOB.To read the blobs, Alice would have to retrieve the storage access keys and use them to access the blobs.

Le autorizzazioni di Bob sono limitate solo Actions a e DataActions specificate nel ruolo di collaboratore dati BLOB di archiviazione .Bob's permissions are restricted to just the Actions and DataActions specified in the Storage Blob Data Contributor role. In base al ruolo, Bob può eseguire sia operazioni di gestione sia operazioni sui dati.Based on the role, Bob can perform both management and data operations. Ad esempio, Bob può leggere, scrivere ed eliminare i contenitori nell'account di archiviazione specificato ed è anche in grado di leggere, scrivere ed eliminare i BLOB.For example, Bob can read, write, and delete containers in the specified storage account and can also read, write, and delete the blobs.

Per altre informazioni sulla gestione e sulla sicurezza del piano dati per l'archiviazione, vedere Guida alla sicurezza di Archiviazione di Azure.For more information about management and data plane security for storage, see the Azure Storage security guide.

Strumenti che supportano l'uso di controllo degli accessi in base al ruolo per le operazioni sui datiWhat tools support using RBAC for data operations?

Per visualizzare ed eseguire le operazioni sui dati, è necessario disporre delle versioni corrette degli strumenti o degli SDK:To view and work with data operations, you must have the correct versions of the tools or SDKs:

StrumentoTool VersioneVersion
Azure PowerShellAzure PowerShell 1.1.0 o versione successiva1.1.0 or later
Interfaccia della riga di comando di AzureAzure CLI 2.0.30 o successiva2.0.30 or later
Azure per .NETAzure for .NET 2.8.0-Preview o successiva2.8.0-preview or later
Azure SDK per GoAzure SDK for Go 15.0.0 o successiva15.0.0 or later
Azure per JavaAzure for Java 1.9.0 o successiva1.9.0 or later
Azure per PythonAzure for Python 0.40.0 o successiva0.40.0 or later
Azure SDK per RubyAzure SDK for Ruby 0.17.1 o successiva0.17.1 or later

Per visualizzare e usare le operazioni di dati di API REST, è necessario impostare il parametro api-version per la seguente versione o versioni successive:To view and use the data operations in the REST API, you must set the api-version parameter to the following version or later:

  • 2018-07-012018-07-01

AzioniActions

L'autorizzazione Actions specifica le operazioni di gestione che il ruolo consente di eseguire.The Actions permission specifies the management operations that the role allows to be performed. Si tratta di una raccolta di stringhe di operazione che identificano operazioni a protezione diretta dei provider di risorse di Azure.It is a collection of operation strings that identify securable operations of Azure resource providers. Di seguito sono riportati alcuni esempi di operazioni di gestione che possono essere usate in Actions.Here are some examples of management operations that can be used in Actions.

Stringa operazioneOperation string DescrizioneDescription
*/read Concede l'accesso a operazioni di lettura per tutti i tipi di risorse di tutti i provider di risorse di Azure.Grants access to read operations for all resource types of all Azure resource providers.
Microsoft.Compute/* Concede l'accesso a tutte le operazioni per tutti i tipi di risorse nel provider di risorse Microsoft.Compute.Grants access to all operations for all resource types in the Microsoft.Compute resource provider.
Microsoft.Network/*/read Concede l'accesso alle operazioni di lettura per tutti i tipi di risorse nel provider di risorse Microsoft.Network.Grants access to read operations for all resource types in the Microsoft.Network resource provider.
Microsoft.Compute/virtualMachines/* Concede l'accesso a tutte le operazioni delle macchine virtuali e ai relativi tipi di risorse figlio.Grants access to all operations of virtual machines and its child resource types.
microsoft.web/sites/restart/Action Concede l'accesso per il riavvio di un'app Web.Grants access to restart a web app.

NotActionsNotActions

L'autorizzazione NotActions specifica le operazioni di gestione che sono escluse dall'autorizzazione Actions.The NotActions permission specifies the management operations that are excluded from the allowed Actions. Usare l'autorizzazione NotActions se il set di operazioni che si vuole consentire viene definito più facilmente escludendo le operazioni non consentite.Use the NotActions permission if the set of operations that you want to allow is more easily defined by excluding restricted operations. L'accesso concesso da un ruolo (ovvero le autorizzazioni effettive) viene calcolato sottraendo le operazioni NotActions alle operazioni Actions.The access granted by a role (effective permissions) is computed by subtracting the NotActions operations from the Actions operations.

Nota

Se a un utente si assegna un ruolo che esclude un'operazione in NotActions e quindi si assegna un secondo ruolo che concede l'accesso alla stessa operazione, l'utente può eseguire tale operazione.If a user is assigned a role that excludes an operation in NotActions, and is assigned a second role that grants access to the same operation, the user is allowed to perform that operation. NotActions non è una regola di negazione. È semplicemente un modo comodo per creare un set di operazioni consentite quando è necessario escludere operazioni specifiche.NotActions is not a deny rule – it is simply a convenient way to create a set of allowed operations when specific operations need to be excluded.

DataActionsDataActions

L'autorizzazione DataActions specifica le operazioni sui dati che il ruolo consente di eseguire sui dati all'interno dell'oggetto.The DataActions permission specifies the data operations that the role allows to be performed to your data within that object. Ad esempio, se un utente dispone dell'accesso in lettura ai dati di BLOB per un account di archiviazione, può leggere i BLOB all'interno di tale account.For example, if a user has read blob data access to a storage account, then they can read the blobs within that storage account. Di seguito sono riportati alcuni esempi di operazioni sui dati che possono essere usate in DataActions.Here are some examples of data operations that can be used in DataActions.

Stringa operazioneOperation string DescrizioneDescription
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/read Restituisce un BLOB o un elenco di BLOB.Returns a blob or a list of blobs.
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/write Restituisce il risultato della scrittura su un BLOB.Returns the result of writing a blob.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/read Restituisce un messaggio.Returns a message.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/* Restituisce un messaggio o il risultato della scrittura o dell'eliminazione di un messaggio.Returns a message or the result of writing or deleting a message.

NotDataActionsNotDataActions

L'autorizzazione NotDataActions specifica le operazioni sui dati che sono escluse dall'autorizzazione DataActions.The NotDataActions permission specifies the data operations that are excluded from the allowed DataActions. L'accesso concesso da un ruolo (ovvero le autorizzazioni effettive) viene calcolato sottraendo le operazioni NotDataActions alle operazioni DataActions.The access granted by a role (effective permissions) is computed by subtracting the NotDataActions operations from the DataActions operations. Ogni provider di risorse fornisce il rispettivo set di API per consentire l'esecuzione delle operazioni sui dati.Each resource provider provides its respective set of APIs to fulfill data operations.

Nota

Se a un utente si assegna un ruolo che esclude un'operazione sui dati in NotDataActions e quindi si assegna un secondo ruolo che concede l'accesso alla stessa operazione, l'utente può eseguire tale operazione.If a user is assigned a role that excludes a data operation in NotDataActions, and is assigned a second role that grants access to the same data operation, the user is allowed to perform that data operation. NotDataActions non è una regola di negazione. È semplicemente un modo comodo per creare un set di operazioni sui dati consentite quando è necessario escludere operazioni specifiche.NotDataActions is not a deny rule – it is simply a convenient way to create a set of allowed data operations when specific data operations need to be excluded.

AssignableScopesAssignableScopes

La AssignableScopes proprietà specifica gli ambiti (gruppi di gestione, sottoscrizioni, gruppi di risorse o risorse) per i quali è disponibile questa definizione di ruolo.The AssignableScopes property specifies the scopes (management groups, subscriptions, resource groups, or resources) that have this role definition available. È possibile rendere disponibile il ruolo per l'assegnazione solo nei gruppi di gestione, nelle sottoscrizioni o nei gruppi di risorse che lo richiedono.You can make the role available for assignment in only the management groups, subscriptions, or resource groups that require it. È necessario usare almeno un gruppo di gestione, una sottoscrizione, un gruppo di risorse o un ID di risorsa.You must use at least one management group, subscription, resource group, or resource ID.

Per i ruoli predefiniti, AssignableScopes è impostato sull'ambito radice ("/"),Built-in roles have AssignableScopes set to the root scope ("/"). per indicare che il ruolo è disponibile per l'assegnazione in tutti gli ambiti.The root scope indicates that the role is available for assignment in all scopes. Ecco alcuni esempi di ambiti assegnabili validi:Examples of valid assignable scopes include:

Il ruolo è disponibile per l'assegnazioneRole is available for assignment EsempioExample
Un'unica sottoscrizioneOne subscription "/subscriptions/{subscriptionId1}"
Due sottoscrizioniTwo subscriptions "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
Gruppo di risorse di reteNetwork resource group "/subscriptions/{subscriptionId1}/resourceGroups/Network"
Un gruppo di gestioneOne management group "/providers/Microsoft.Management/managementGroups/{groupId1}"
Gruppo di gestione e sottoscrizioneManagement group and a subscription "/providers/Microsoft.Management/managementGroups/{groupId1}", /subscriptions/{subscriptionId1}",
Tutti gli ambiti (si applica solo ai ruoli predefiniti)All scopes (applies only to built-in roles) "/"

Per informazioni su AssignableScopes per i ruoli personalizzati, vedere Ruoli personalizzati per le risorse di Azure.For information about AssignableScopes for custom roles, see Custom roles for Azure resources.

Passaggi successiviNext steps