Comprendre les définitions de rôle relatives aux ressources AzureUnderstand role definitions for Azure resources

Si vous essayez de comprendre comment un rôle fonctionne, ou si vous créez votre propre rôle personnalisé pour des ressources Azure, il est utile de comprendre la façon dont les rôles sont définis.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. Cet article décrit en détail les définitions de rôles et fournit quelques exemples.This article describes the details of role definitions and provides some examples.

Structure d’une définition de rôleRole definition structure

Une définition de rôle est une collection d’autorisations.A role definition is a collection of permissions. On l’appelle parfois simplement rôle.It's sometimes just called a role. Une définition de rôle répertorie les opérations qui peuvent être effectuées, telles que lire, écrire et supprimer.A role definition lists the operations that can be performed, such as read, write, and delete. Elle permet également de répertorier les opérations qui ne peuvent pas être effectuées ou les opérations liées aux données sous-jacentes.It can also list the operations that can't be performed or operations related to underlying data. Une définition de rôle présente la structure suivante :A role definition has the following structure:

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

Les opérations sont spécifiées à l’aide de chaînes dont le format est le suivant :Operations are specified with strings that have the following format:

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

La portion {action} d’une chaîne d’opération spécifie le type des opérations que vous pouvez effectuer sur un type de ressource.The {action} portion of an operation string specifies the type of operations you can perform on a resource type. Par exemple, vous verrez les sous-chaînes suivantes dans {action} :For example, you will see the following substrings in {action}:

Sous-chaîne d’actionAction substring DescriptionDescription
* Le caractère générique donne accès à toutes les opérations qui correspondent à la chaîne.The wildcard character grants access to all operations that match the string.
read Permet les opérations de lecture (GET).Enables read operations (GET).
write Permet les opérations d’écriture (PUT ou PATCH).Enables write operations (PUT or PATCH).
action Permet des opérations personnalisées, telles que le redémarrage de machines virtuelles (POST).Enables custom operations like restart virtual machines (POST).
delete Permet les opérations de suppression (DELETE).Enables delete operations (DELETE).

Voici la définition du rôle Contributeur au format JSON.Here's the Contributor role definition in JSON format. L’opération de caractère générique (*) sous Actions indique que le principal affecté à ce rôle peut effectuer toutes les actions, ou, en d’autres termes, tout gérer.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. Cela inclut les actions qui seront définies dans le futur, à mesure qu’Azure ajoutera de nouveaux types de ressources.This includes actions defined in the future, as Azure adds new resource types. Les opérations sous NotActions sont soustraites de Actions.The operations under NotActions are subtracted from Actions. Dans le cas du rôle Contributeur, NotActions supprime la possibilité pour ce rôle de gérer et d’autoriser l’accès aux ressources.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": [
    "/"
  ]
}

Opérations de gestion et sur les donnéesManagement and data operations

Le contrôle d’accès en fonction du rôle pour les opérations de gestion est spécifié dans les propriétés Actions et NotActions d’une définition de rôle.Role-based access control for management operations is specified in the Actions and NotActions properties of a role definition. Voici quelques exemples d’opérations de gestion dans Azure :Here are some examples of management operations in Azure:

  • Gérer l’accès à un compte de stockageManage access to a storage account
  • Créer, mettre à jour ou supprimer un conteneur d’objets blobCreate, update, or delete a blob container
  • Supprimer un groupe de ressources et toutes ses ressourcesDelete a resource group and all of its resources

Vos données n’héritent pas de l’accès à la gestion.Management access is not inherited to your data. Cette séparation empêche des rôles avec caractères génériques (*) d’avoir un accès illimité à vos données.This separation prevents roles with wildcards (*) from having unrestricted access to your data. Par exemple, si un utilisateur a un rôle Lecteur sur un abonnement, il peut afficher le compte de stockage, mais pas les données sous-jacentes, par défaut.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.

Auparavant, le contrôle d’accès en fonction du rôle n’était pas utilisé pour les opérations sur les données.Previously, role-based access control was not used for data operations. L’autorisation pour les opérations sur les données variait selon les fournisseurs de ressources.Authorization for data operations varied across resource providers. Le même modèle d’autorisation du contrôle d’accès en fonction du rôle utilisé pour les opérations de gestion a été étendu aux opérations sur les données.The same role-based access control authorization model used for management operations has been extended to data operations.

Pour prendre en charge les opérations sur les données, de nouvelles propriétés de données ont été ajoutées à la structure de définition de rôle.To support data operations, new data properties have been added to the role definition structure. Les opérations sur les données sont spécifiées dans les propriétés DataActions et NotDataActions.Data operations are specified in the DataActions and NotDataActions properties. En ajoutant ces propriétés de données, la séparation entre la gestion et les données est conservée.By adding these data properties, the separation between management and data is maintained. Cela empêche les attributions de rôle contenant des caractères génériques (*) d’accéder soudainement aux données.This prevents current role assignments with wildcards (*) from suddenly having accessing to data. Voici quelques opérations sur les données qui peuvent être spécifiées dans DataActions et NotDataActions :Here are some data operations that can be specified in DataActions and NotDataActions:

  • Lire une liste d’objets blob dans un conteneurRead a list of blobs in a container
  • Écrire un objet blob de stockage dans un conteneurWrite a storage blob in a container
  • Supprimer un message dans une file d’attenteDelete a message in a queue

Voici la définition de rôle Lecteur des données blob du stockage, qui inclut des opérations à la fois dans les propriétés Actions et DataActions.Here's the Storage Blob Data Reader role definition, which includes operations in both the Actions and DataActions properties. Ce rôle vous permet de lire le conteneur d’objets blob ainsi que les données d’objets blob sous-jacentes.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": [
    "/"
  ]
}

Seules des opérations sur les données peuvent être ajoutées aux propriétés DataActions et NotDataActions.Only data operations can be added to the DataActions and NotDataActions properties. Les fournisseurs de ressources identifient quelles opérations sont des opérations sur les données, en définissant la propriété isDataAction sur true.Resource providers identify which operations are data operations, by setting the isDataAction property to true. Pour afficher la liste des opérations où isDataAction est true, consultez Opérations de fournisseur de ressources.To see a list of the operations where isDataAction is true, see Resource provider operations. Les rôles qui n’ont pas d’opérations sur les données ne sont pas obligés d’avoir les propriétés DataActions et NotDataActions dans la définition de rôle.Roles that do not have data operations are not required to have DataActions and NotDataActions properties within the role definition.

L’autorisation pour tous les appels d’API des opérations de gestion est gérée par Azure Resource Manager.Authorization for all management operation API calls is handled by Azure Resource Manager. L’autorisation pour les appels d’API des opérations sur les données est gérée par un fournisseur de ressources ou Azure Resource Manager.Authorization for data operation API calls is handled by either a resource provider or Azure Resource Manager.

Exemple d’opérations sur les donnéesData operations example

Pour mieux comprendre comment fonctionnent les opérations de gestion et les opérations sur les données, prenons un exemple spécifique.To better understand how management and data operations work, let's consider a specific example. Alice a reçu le rôle Propriétaire au niveau de l’étendue de l’abonnement.Alice has been assigned the Owner role at the subscription scope. Bob a reçu le rôle Contributeur aux données blob du stockage dans une étendue de compte de stockage.Bob has been assigned the Storage Blob Data Contributor role at a storage account scope. Le diagramme qui suit présente cet exemple.The following diagram shows this example.

Le contrôle d’accès en fonction du rôle a été étendu pour prendre en charge les opérations de gestion et les opérations sur les données

Le rôle Propriétaire pour Alice et le rôle Contributeur aux données blob du stockage pour Bob effectuent les actions suivantes :The Owner role for Alice and the Storage Blob Data Contributor role for Bob have the following actions:

PropriétaireOwner

    Actions    Actions
    *    *

Contributeur aux données Blob du stockageStorage 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

Comme Alice dispose d’une action avec caractère générique (*) à une étendue de l’abonnement, elle hérite d’autorisations lui permettant d’effectuer toutes les actions de gestion.Since Alice has a wildcard (*) action at a subscription scope, their permissions inherit down to enable them to perform all management actions. Alice peut lire, écrire et supprimer des conteneurs.Alice can read, write, and delete containers. En revanche, elle ne peut pas effectuer d’opérations sur des données sans passer par des étapes supplémentaires.However, Alice cannot perform data operations without taking additional steps. Par exemple, par défaut, Alice ne peut pas lire les objets blob à l’intérieur d’un conteneur.For example, by default, Alice cannot read the blobs inside a container. Pour cela, elle doit récupérer les clés d’accès de stockage et les utiliser pour accéder aux objets blob.To read the blobs, Alice would have to retrieve the storage access keys and use them to access the blobs.

Les autorisations de Bob se limitent aux actions Actions et DataActions spécifiées dans le rôle Contributeur aux données blob du stockage.Bob's permissions are restricted to just the Actions and DataActions specified in the Storage Blob Data Contributor role. En fonction du rôle, Bob peut effectuer à la fois des opérations de gestion et des opérations sur les données.Based on the role, Bob can perform both management and data operations. Par exemple, Bob peut lire, écrire et supprimer des conteneurs du compte de stockage spécifié, mais aussi lire, écrire et supprimer les objets blob.For example, Bob can read, write, and delete containers in the specified storage account and can also read, write, and delete the blobs.

Pour plus d’informations sur la gestion et la sécurité du plan de données pour le stockage, consultez le guide de sécurité Stockage Microsoft Azure.For more information about management and data plane security for storage, see the Azure Storage security guide.

Quels outils prennent en charge l’utilisation de RBAC pour les opérations sur les données ?What tools support using RBAC for data operations?

Pour afficher et utiliser des opérations sur les données, vous devez disposer des versions appropriées des outils ou des kits de développement logiciel (SDK) :To view and work with data operations, you must have the correct versions of the tools or SDKs:

OutilTool VersionVersion
Azure PowerShellAzure PowerShell 1.1.0 ou ultérieure1.1.0 or later
Interface de ligne de commande AzureAzure CLI 2.0.30 ou version ultérieure2.0.30 or later
Azure pour .NETAzure for .NET 2.8.0-preview ou version ultérieure2.8.0-preview or later
Kit de développement logiciel (SDK) Azure pour GoAzure SDK for Go 15.0.0 ou version ultérieure15.0.0 or later
Azure pour JavaAzure for Java 1.9.0 ou version ultérieure1.9.0 or later
Azure pour PythonAzure for Python 0.40.0 ou version ultérieure0.40.0 or later
Kit de développement logiciel (SDK) Azure pour RubyAzure SDK for Ruby 0.17.1 ou version ultérieure0.17.1 or later

Pour afficher et utiliser les opérations de données dans l’API REST, vous devez définir le paramètre api-version sur la version suivante ou ultérieure :To view and use the data operations in the REST API, you must set the api-version parameter to the following version or later:

  • 01-07-20182018-07-01

ActionsActions

L’autorisation Actions spécifie les opérations d’administration que le rôle autorise.The Actions permission specifies the management operations that the role allows to be performed. Il s’agit d’un ensemble de chaînes d’opération qui identifient les opérations sécurisables des fournisseurs de ressources Azure.It is a collection of operation strings that identify securable operations of Azure resource providers. Voici quelques exemples d’opérations de gestion qui peuvent être utilisées dans Actions.Here are some examples of management operations that can be used in Actions.

Chaîne d’opérationOperation string DescriptionDescription
*/read Accorde l’accès aux opérations de lecture pour tous les types de ressources de l’ensemble des fournisseurs de ressources Azure.Grants access to read operations for all resource types of all Azure resource providers.
Microsoft.Compute/* Accorde l’accès à l’ensemble des opérations pour tous les types de ressources dans le fournisseur de ressources Microsoft.Compute.Grants access to all operations for all resource types in the Microsoft.Compute resource provider.
Microsoft.Network/*/read Accorde l’accès aux opérations de lecture pour tous les types de ressources dans le fournisseur de ressources Microsoft.Network d’Azure.Grants access to read operations for all resource types in the Microsoft.Network resource provider.
Microsoft.Compute/virtualMachines/* Accorde l’accès à toutes les opérations des machines virtuelles et à leurs types de ressources enfants.Grants access to all operations of virtual machines and its child resource types.
microsoft.web/sites/restart/Action Accorde l’accès au redémarrage d’une application web.Grants access to restart a web app.

NotActionsNotActions

L’autorisation NotActions spécifie les opérations de gestion qui sont exclues des Actions autorisées.The NotActions permission specifies the management operations that are excluded from the allowed Actions. Utilisez l’autorisation NotActions si l’ensemble des opérations que vous souhaitez autoriser est plus facile à définir en excluant les opérations restreintes.Use the NotActions permission if the set of operations that you want to allow is more easily defined by excluding restricted operations. L’accès accordé par un rôle (autorisations effectives) est calculé en soustrayant les opérations NotActions des opérations Actions.The access granted by a role (effective permissions) is computed by subtracting the NotActions operations from the Actions operations.

Notes

Si un utilisateur se voit attribuer un rôle qui exclut une opération dans NotActions, et un second rôle qui accorde l’accès à cette même opération, il est autorisé à effectuer celle-ci.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 n’est pas une règle de refus : il s’agit simplement d’un moyen pratique pour créer un ensemble d’opérations autorisées lorsque des opérations spécifiques doivent être exclues.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’autorisation DataActions spécifie les opérations de données que le rôle autorise sur vos données au sein de cet objet.The DataActions permission specifies the data operations that the role allows to be performed to your data within that object. Par exemple, si un utilisateur dispose d’un accès en lecture aux données blob d’un compte de stockage, il peut lire les objets blob de ce compte de stockage.For example, if a user has read blob data access to a storage account, then they can read the blobs within that storage account. Voici quelques exemples d’opérations sur les données qui peuvent être utilisées dans DataActions.Here are some examples of data operations that can be used in DataActions.

Chaîne d’opérationOperation string DescriptionDescription
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/read Retourne un objet blob ou une liste d'objets blob.Returns a blob or a list of blobs.
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/write Retourne le résultat de l'écriture d'un objet blob.Returns the result of writing a blob.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/read Retourne un message.Returns a message.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/* Retourne un message ou le résultat de l’écriture ou de la suppression d’un message.Returns a message or the result of writing or deleting a message.

NotDataActionsNotDataActions

L’autorisation NotDataActions spécifie les opérations sur les données qui sont exclues des DataActions autorisées.The NotDataActions permission specifies the data operations that are excluded from the allowed DataActions. L’accès accordé par un rôle (autorisations effectives) est calculé en soustrayant les opérations NotDataActions des opérations DataActions.The access granted by a role (effective permissions) is computed by subtracting the NotDataActions operations from the DataActions operations. Chaque fournisseur de ressources fournit son propre ensemble d’API pour répondre à des opérations sur les données.Each resource provider provides its respective set of APIs to fulfill data operations.

Notes

Si un utilisateur se voit attribuer un rôle qui exclut une opération sur les données dans NotDataActions, et un second rôle qui accorde l’accès à cette même opération, il est autorisé à effectuer celle-ci.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 n’est pas une règle de refus : il s’agit simplement d’un moyen pratique pour créer un ensemble d’opérations sur les données autorisées lorsque des opérations sur les données spécifiques doivent être exclues.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 propriété AssignableScopes spécifie les étendues (abonnements, groupes de ressources ou ressources) qui disposent de cette définition de rôle.The AssignableScopes property specifies the scopes (subscriptions, resource groups, or resources) that have this role definition available. Vous pouvez rendre le rôle disponible pour attribution uniquement dans les abonnements ou les groupes de ressources qui le nécessitent, mais pas surcharger l’expérience utilisateur pour le reste des abonnements ou groupes de ressources.You can make the role available for assignment in only the subscriptions or resource groups that require it, and not clutter the user experience for the rest of the subscriptions or resource groups. Vous devez utiliser au moins un abonnement, groupe de ressources ou ID de ressource.You must use at least one subscription, resource group, or resource ID.

La chaîne AssignableScopes est définie sur l’étendue racine ("/") pour les rôles intégrés.Built-in roles have AssignableScopes set to the root scope ("/"). L’étendue racine indique que le rôle est disponible pour attribution dans toutes les étendues.The root scope indicates that the role is available for assignment in all scopes. Voici des exemples d’étendues assignables valides :Examples of valid assignable scopes include:

ScénarioScenario ExemplesExample
Rôle disponible pour attribution dans un seul abonnementRole is available for assignment in a single subscription "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e"
Rôle disponible pour attribution dans deux abonnementsRole is available for assignment in two subscriptions "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e", "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
Rôle disponible pour attribution uniquement dans le groupe de ressources réseauRole is available for assignment only in the Network resource group "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network"
Rôle disponible pour attribution dans toutes les étendues (s’applique uniquement à des rôles intégrés)Role is available for assignment in all scopes (applies only to built-in roles) "/"

Pour plus d’informations sur AssignableScopes pour des rôles personnalisés, consultez Rôles personnalisés pour les ressources Azure.For information about AssignableScopes for custom roles, see Custom roles for Azure resources.

Étapes suivantesNext steps