Rôles personnalisés AzureAzure custom roles

Important

L’ajout d’un groupe d’administration à AssignableScopes est actuellement en préversion.Adding a management group to AssignableScopes is currently in preview. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production.This preview version is provided without a service level agreement, and it's not recommended for production workloads. Certaines fonctionnalités peuvent être limitées ou non prises en charge.Certain features might not be supported or might have constrained capabilities. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

Si les rôles intégrés Azure ne répondent pas aux besoins spécifiques de votre organisation, vous pouvez créer vos propres rôles personnalisés.If the Azure built-in roles don't meet the specific needs of your organization, you can create your own custom roles. Tout comme les rôles intégrés, vous pouvez attribuer des rôles personnalisés à des utilisateurs, à des groupes et à des principaux de service dans des étendues de groupe d’administration, d’abonnement et de groupe de ressources.Just like built-in roles, you can assign custom roles to users, groups, and service principals at management group, subscription, and resource group scopes.

Les rôles personnalisés peuvent être partagés entre abonnements qui font confiance au même annuaire Azure AD.Custom roles can be shared between subscriptions that trust the same Azure AD directory. Il existe une limite de 5 000 rôles personnalisés par annuaire.There is a limit of 5,000 custom roles per directory. (Pour Azure Allemagne et Azure Chine 21Vianet, la limite est de 2 000 rôles personnalisés). Vous pouvez créer des rôles personnalisés à l’aide du portail Azure, d’Azure PowerShell, d’Azure CLI ou de l’API REST.(For Azure Germany and Azure China 21Vianet, the limit is 2,000 custom roles.) Custom roles can be created using the Azure portal, Azure PowerShell, Azure CLI, or the REST API.

Exemple de rôle personnaliséCustom role example

Voici ce à quoi ressemble un rôle personnalisé tel qu’il apparaît au format JSON dans Azure PowerShell.The following shows what a custom role looks like as displayed using Azure PowerShell in JSON format. Ce rôle personnalisé peut être utilisé pour surveiller et redémarrer des machines virtuelles.This custom role can be used for monitoring and restarting virtual machines.

{
  "Name": "Virtual Machine Operator",
  "Id": "88888888-8888-8888-8888-888888888888",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/{groupId1}"
  ]
}

L’exemple suivant montre le même rôle personnalisé que celui qui est affiché à l’aide d’Azure CLI.The following shows the same custom role as displayed using Azure CLI.

[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId1}",
      "/subscriptions/{subscriptionId2}",
      "/providers/Microsoft.Management/managementGroups/{groupId1}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
    "name": "88888888-8888-8888-8888-888888888888",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/*/read",
          "Microsoft.Network/*/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/virtualMachines/start/action",
          "Microsoft.Compute/virtualMachines/restart/action",
          "Microsoft.Authorization/*/read",
          "Microsoft.ResourceHealth/availabilityStatuses/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Insights/alertRules/*",
          "Microsoft.Insights/diagnosticSettings/*",
          "Microsoft.Support/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

Quand vous créez un rôle personnalisé, celui-ci s’affiche dans le portail Azure avec une icône de ressource orange.When you create a custom role, it appears in the Azure portal with an orange resource icon.

Icône de rôle personnalisé

Propriétés du rôle personnaliséCustom role properties

Le tableau suivant décrit ce que signifient les propriétés de rôle personnalisées.The following table describes what the custom role properties mean.

PropriétéProperty ObligatoireRequired TypeType DescriptionDescription
Name
roleName
OuiYes StringString Nom complet du rôle personnalisé.The display name of the custom role. Si une définition de rôle est une ressource de niveau groupe d'administration ou abonnement, elle peut cependant être utilisée dans plusieurs abonnements partageant le même annuaire Azure AD.While a role definition is a management group or subscription-level resource, a role definition can be used in multiple subscriptions that share the same Azure AD directory. Ce nom d’affichage doit être unique dans l’étendue de l’annuaire Azure AD.This display name must be unique at the scope of the Azure AD directory. Peut inclure des lettres, des chiffres, des espaces et des caractères spéciaux.Can include letters, numbers, spaces, and special characters. Nombre maximal de caractères : 128.Maximum number of characters is 128.
Id
name
OuiYes StringString ID unique du rôle personnalisé.The unique ID of the custom role. Pour Azure PowerShell et Azure CLI, cet ID est généré automatiquement lorsque vous créez un nouveau rôle.For Azure PowerShell and Azure CLI, this ID is automatically generated when you create a new role.
IsCustom
roleType
OuiYes StringString Indique s’il s’agit d’un rôle personnalisé.Indicates whether this is a custom role. À définir sur true ou CustomRole pour les rôles personnalisés.Set to true or CustomRole for custom roles. À définir sur false ou BuiltInRole pour les rôles intégrés.Set to false or BuiltInRole for built-in roles.
Description
description
OuiYes StringString Description du rôle personnalisé.The description of the custom role. Peut inclure des lettres, des chiffres, des espaces et des caractères spéciaux.Can include letters, numbers, spaces, and special characters. Nombre maximal de caractères : 1 024.Maximum number of characters is 1024.
Actions
actions
OuiYes String[]String[] Tableau de chaînes qui spécifie les opérations d’administration que le rôle autorise.An array of strings that specifies the management operations that the role allows to be performed. Pour plus d’informations, voir Actions.For more information, see Actions.
NotActions
notActions
NonNo String[]String[] Tableau de chaînes qui spécifie les opérations d’administration exclues des Actions autorisées.An array of strings that specifies the management operations that are excluded from the allowed Actions. Pour plus d’informations, voir NotActions.For more information, see NotActions.
DataActions
dataActions
NonNo String[]String[] Tableau de chaînes qui spécifie les opérations de données que le rôle autorise sur vos données au sein de cet objet.An array of strings that specifies the data operations that the role allows to be performed to your data within that object. Si vous créez un rôle personnalisé avec DataActions, ce rôle ne peut pas être affecté au niveau de l’étendue du groupe d’administration.If you create a custom role with DataActions, that role cannot be assigned at the management group scope. Pour plus d’informations, consultez DataActions.For more information, see DataActions.
NotDataActions
notDataActions
NonNo String[]String[] Tableau de chaînes qui spécifie les opérations de données exclues des DataActions autorisées.An array of strings that specifies the data operations that are excluded from the allowed DataActions. Pour plus d’informations, consultez NotDataActions.For more information, see NotDataActions.
AssignableScopes
assignableScopes
OuiYes String[]String[] Tableau de chaînes qui spécifie les étendues pour lesquelles le rôle personnalisé est disponible à des fins d’attribution.An array of strings that specifies the scopes that the custom role is available for assignment. Vous ne pouvez définir qu’un seul groupe d’administration dans AssignableScopes d’un rôle personnalisé.You can only define one management group in AssignableScopes of a custom role. L’ajout d’un groupe d’administration à AssignableScopes est actuellement en préversion.Adding a management group to AssignableScopes is currently in preview. Pour plus d’informations, voir AssignableScopes.For more information, see AssignableScopes.

Autorisations de caractères génériquesWildcard permissions

Actions, NotActions, DataActions et NotDataActions prennent en charge les caractères génériques (*) pour définir des autorisations.Actions, NotActions, DataActions, and NotDataActions support wildcards (*) to define permissions. Un caractère générique (*) étend une autorisation à tout ce qui correspond à la chaîne d’action que vous fournissez.A wildcard (*) extends a permission to everything that matches the action string you provide. Par exemple, supposons que vous souhaitiez ajouter toutes les autorisations relatives à Azure Cost Management et aux exportations.For example, suppose that you wanted to add all the permissions related to Azure Cost Management and exports. Vous pouvez ajouter toutes ces chaînes d’action :You could add all of these action strings:

Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action

Au lieu d’ajouter toutes ces chaînes, vous pouvez simplement ajouter une chaîne de caractères génériques.Instead of adding all of these strings, you could just add a wildcard string. Par exemple, la chaîne de caractères génériques suivante équivaut aux cinq chaînes précédentes.For example, the following wildcard string is equivalent to the previous five strings. Cela inclut également toutes les futures autorisations d’exportation qui pourraient être ajoutées.This would also include any future export permissions that might be added.

Microsoft.CostManagement/exports/*

Vous pouvez également avoir plusieurs caractères génériques dans une chaîne.You can also have multiple wildcards in a string. Par exemple, la chaîne suivante représente toutes les autorisations de requête pour Cost Management.For example, the following string represents all query permissions for Cost Management.

Microsoft.CostManagement/*/query/*

Procédure de création d’un rôle personnaliséSteps to create a custom role

Pour créer un rôle personnalisé, voici les étapes de base que vous devez suivre.To create a custom role, here are basics steps you should follow.

  1. Choisissez la méthode de création de votre choix pour le rôle personnalisé.Decide how you want to create the custom role.

    Vous pouvez créer des rôles personnalisés à l’aide du Portail Azure, d’Azure PowerShell, de l’interface de ligne de commande Azure ou de l’API REST.You can create custom roles using Azure portal, Azure PowerShell, Azure CLI, or the REST API.

  2. Déterminez les autorisations nécessaires.Determine the permissions you need.

    Lorsque vous créez un rôle personnalisé, vous devez connaître les opérations qui sont disponibles pour définir vos autorisations.When you create a custom role, you need to know the operations that are available to define your permissions. Pour voir la liste des opérations, consultez Opérations du fournisseur de ressources Azure Resource Manager.To view the list of operations, see the Azure Resource Manager resource provider operations. Vous ajouterez les opérations aux propriétés Actions ou NotActions de la définition de rôle.You will add the operations to the Actions or NotActions properties of the role definition. Si vous avez des opérations de données, vous les ajouterez aux propriétés DataActions ou NotDataActions.If you have data operations, you will add those to the DataActions or NotDataActions properties.

  3. Créez le rôle personnalisé.Create the custom role.

    En règle générale, vous démarrez avec un rôle intégré existant, puis vous le modifiez selon vos besoins.Typically, you start with an existing built-in role and then modify it for your needs. Le moyen le plus simple consiste à utiliser le Portail Azure.The easiest way is to use the Azure portal. Pour connaître les étapes de création d’un rôle personnalisé à l’aide du Portail Azure, consultez Créer ou mettre à jour des rôles personnalisés Azure à l’aide du portail Azure.For steps on how to create a custom role using the Azure portal, see Create or update Azure custom roles using the Azure portal.

  4. Testez le rôle personnalisé.Test the custom role.

    Une fois que vous avez votre rôle personnalisé, vous devez le tester pour vérifier qu’il fonctionne comme prévu.Once you have your custom role, you have to test it to verify that it works as you expect. Si vous avez besoin d’effectuer des ajustements ultérieurement, vous pouvez mettre à jour le rôle personnalisé.If you need to make adjustments later, you can update the custom role.

Qui peut créer, supprimer, mettre à jour ou afficher un rôle personnaliséWho can create, delete, update, or view a custom role

Tout comme pour les rôles intégrés, la propriété AssignableScopes spécifie les étendues pour lesquelles le rôle est disponible à des fins d’attribution.Just like built-in roles, the AssignableScopes property specifies the scopes that the role is available for assignment. La propriété AssignableScopes pour un rôle personnalisé contrôle également qui peut créer, supprimer, mettre à jour ou afficher le rôle personnalisé.The AssignableScopes property for a custom role also controls who can create, delete, update, or view the custom role.

TâcheTask OpérationOperation DescriptionDescription
Créer/supprimer un rôle personnaliséCreate/delete a custom role Microsoft.Authorization/ roleDefinitions/write Les utilisateurs ayant accès à cette opération sur toutes les étendues AssignableScopes du rôle personnalisé peuvent créer (ou supprimer) des rôles personnalisés utilisables dans ces étendues.Users that are granted this operation on all the AssignableScopes of the custom role can create (or delete) custom roles for use in those scopes. Il s’agit, par exemple, des Propriétaires et Administrateurs de l’accès utilisateur des groupe d’administration, des abonnements et des groupes de ressources.For example, Owners and User Access Administrators of management groups, subscriptions, and resource groups.
Mettre à jour un rôle personnaliséUpdate a custom role Microsoft.Authorization/ roleDefinitions/write Les utilisateurs ayant accès à cette opération sur toutes les étendues AssignableScopes du rôle personnalisé peuvent mettre à jour des rôles personnalisés dans ces étendues.Users that are granted this operation on all the AssignableScopes of the custom role can update custom roles in those scopes. Il s’agit, par exemple, des Propriétaires et Administrateurs de l’accès utilisateur des groupe d’administration, des abonnements et des groupes de ressources.For example, Owners and User Access Administrators of management groups, subscriptions, and resource groups.
Afficher un rôle personnaliséView a custom role Microsoft.Authorization/ roleDefinitions/read Les utilisateurs ayant accès à cette opération dans une étendue peuvent afficher les rôles personnalisés disponibles pour attribution dans cette étendue.Users that are granted this operation at a scope can view the custom roles that are available for assignment at that scope. Tous les rôles intégrés permettent que les rôles personnalisés soient disponibles pour attribution.All built-in roles allow custom roles to be available for assignment.

Limites des rôles personnalisésCustom role limits

La liste suivante décrit les limites des rôles personnalisés.The following list describes the limits for custom roles.

  • Chaque annuaire peut avoir jusqu’à 5 000 rôles personnalisés.Each directory can have up to 5000 custom roles.
  • Azure Allemagne et Azure Chine 21Vianet peuvent avoir jusqu’à 2 000 rôles personnalisés pour chaque annuaire.Azure Germany and Azure China 21Vianet can have up to 2000 custom roles for each directory.
  • Vous ne pouvez pas définir AssignableScopes à l’étendue racine ("/").You cannot set AssignableScopes to the root scope ("/").
  • Vous ne pouvez définir qu’un seul groupe d’administration dans AssignableScopes d’un rôle personnalisé.You can only define one management group in AssignableScopes of a custom role. L’ajout d’un groupe d’administration à AssignableScopes est actuellement en préversion.Adding a management group to AssignableScopes is currently in preview.
  • Les rôles personnalisés avec DataActions ne peuvent pas être attribués dans l’étendue du groupe d’administration.Custom roles with DataActions cannot be assigned at the management group scope.
  • Azure Resource Manager ne valide pas le groupe d’administration existant dans l’étendue attribuable de la définition de rôle.Azure Resource Manager doesn't validate the management group's existence in the role definition's assignable scope.

Pour plus d’informations sur les rôles personnalisés et les groupes d’administration, consultez Organiser vos ressources avec des groupes d’administration Azure.For more information about custom roles and management groups, see Organize your resources with Azure management groups.

Formats d’entrée et de sortieInput and output formats

Pour créer un rôle personnalisé à l’aide de la ligne de commande, vous utilisez généralement JSON afin de spécifier les propriétés souhaitées pour le rôle personnalisé.To create a custom role using the command line, you typically use JSON to specify the properties you want for the custom role. Selon les outils que vous utilisez, les formats d’entrée et de sortie semblent légèrement différents.Depending on the tools you use, the input and output formats will look slightly different. Cette section répertorie les formats d’entrée et de sortie en fonction de l’outil.This section lists the input and output formats depending on the tool.

Azure PowerShellAzure PowerShell

Pour créer un rôle personnalisé à l’aide d’Azure PowerShell, vous devez fournir l’entrée suivante.To create a custom role using Azure PowerShell, you must provide following input.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Pour mettre à jour un rôle personnalisé à l’aide d’Azure PowerShell, vous devez fournir l’entrée suivante.To update a custom role using Azure PowerShell, you must provide the following input. Notez que la propriété Id a été ajoutée.Note that the Id property has been added.

{
  "Name": "",
  "Id": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

L’exemple suivant illustre la sortie lorsque vous répertoriez un rôle personnalisé à l’aide d’Azure PowerShell et de la commande ConvertTo-Json.The following shows an example of the output when you list a custom role using Azure PowerShell and the ConvertTo-Json command.

{
  "Name": "",
  "Id": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure CLIAzure CLI

Pour créer ou mettre à jour un rôle personnalisé à l’aide de l’interface de ligne de commande Azure, vous devez fournir l’entrée suivante.To create or update a custom role using Azure CLI, you must provide following input. Ce format est le même que lorsque vous créez un rôle personnalisé à l’aide d’Azure PowerShell.This format is the same format when you create a custom role using Azure PowerShell.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

L’exemple suivant illustre la sortie lorsque vous répertoriez un rôle personnalisé à l’aide d’Azure CLI.The following shows an example of the output when you list a custom role using Azure CLI.

[
  {
    "assignableScopes": [],
    "description": "",
    "id": "",
    "name": "",
    "permissions": [
      {
        "actions": [],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

API RESTREST API

Pour créer ou mettre à jour un rôle personnalisé à l’aide de l’API REST, vous devez fournir l’entrée suivante.To create or update a custom role using the REST API, you must provide following input. Ce format généré est le même que lorsque vous créez un rôle personnalisé à l’aide du Portail Azure.This format is the same format that gets generated when you create a custom role using the Azure portal.

{
  "properties": {
    "roleName": "",
    "description": "",
    "assignableScopes": [],
    "permissions": [
      {
        "actions": [],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
      }
    ]
  }
}

L’exemple suivant illustre la sortie lorsque vous répertoriez un rôle personnalisé à l’aide de l’API REST.The following shows an example of the output when you list a custom role using the REST API.

{
    "properties": {
        "roleName": "",
        "type": "CustomRole",
        "description": "",
        "assignableScopes": [],
        "permissions": [
            {
                "actions": [],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ],
        "createdOn": "",
        "updatedOn": "",
        "createdBy": "",
        "updatedBy": ""
    },
    "id": "",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": ""
}

Étapes suivantesNext steps