Ruoli personalizzati di Azure

Se i ruoli predefiniti di Azure non soddisfano le esigenze specifiche dell'organizzazione, è possibile creare ruoli personalizzati. Analogamente ai ruoli predefiniti, è possibile assegnare ruoli personalizzati a utenti, gruppi ed entità servizio nell'ambito del gruppo di gestione, della sottoscrizione e del gruppo di risorse.

I ruoli personalizzati possono essere condivisi tra sottoscrizioni che considerano attendibile lo stesso tenant di Microsoft Entra. È previsto un limite di 5.000 ruoli personalizzati per ogni tenant. (Per Microsoft Azure gestito da 21Vianet, il limite è di 2.000 ruoli personalizzati.) I ruoli personalizzati possono essere creati usando il portale di Azure, Azure PowerShell, l'interfaccia della riga di comando di Azure o l'API REST.

Passaggi per la creazione di un ruolo personalizzato

Ecco i passaggi di base per creare un ruolo personalizzato.

  1. Determinare le autorizzazioni necessarie.

    Quando si crea un ruolo personalizzato, è necessario conoscere le azioni disponibili per definire le autorizzazioni. In genere si parte da un ruolo predefinito esistente e lo si modifica in base alle esigenze. Le azioni verranno aggiunte alle proprietà Actions o NotActions della definizione del ruolo. Se si dispone di azioni sui dati, verranno aggiunte alle proprietà DataActions o NotDataActions.

    Per altre informazioni, vedere la sezione successiva Come determinare le autorizzazioni necessarie.

  2. Decidere come creare il ruolo personalizzato.

    È possibile creare ruoli personalizzati usando il portale di Azure, Azure PowerShell, l'interfaccia della riga di comando di Azureo l'API REST.

  3. Creare il ruolo personalizzato.

    Il modo più semplice consiste nell'usare il portale di Azure. Per informazioni su come creare un ruolo personalizzato usando il portale di Azure, vedere Creare o aggiornare i ruoli personalizzati di Azure usando il portale di Azure.

  4. Testare il ruolo personalizzato.

    Una volta creato il ruolo personalizzato, è necessario testarlo per verificare che funzioni nel modo previsto. Se occorre apportare delle modifiche, è possibile aggiornare il ruolo personalizzato.

Come determinare le autorizzazioni necessarie

Azure ha migliaia di autorizzazioni che è possibile includere nel ruolo personalizzato. Ecco alcuni metodi che consentono di determinare le autorizzazioni da aggiungere al ruolo personalizzato:

  • Esaminare i ruoli predefiniti esistenti.

    È possibile modificare un ruolo esistente o combinare le autorizzazioni usate in più ruoli.

  • Elencare i servizi di Azure a cui si vuole concedere l'accesso.

  • Determinare i provider di risorse che eseguono il mapping ai servizi di Azure.

    I servizi di Azure espongono le funzionalità e le autorizzazioni tramite provider di risorse. Ad esempio, il provider di risorse Microsoft.Compute fornisce risorse macchina virtuale e il provider di risorse Microsoft.Billing fornisce le risorse di sottoscrizione e fatturazione. Conoscere i provider di risorse può aiutare a restringere e determinare le autorizzazioni necessarie per il ruolo personalizzato.

    Quando si crea un ruolo personalizzato usando il portale di Azure, è anche possibile determinare i provider di risorse mediante la ricerca di parole chiave. Questa funzionalità di ricerca è descritta in Creare o aggiornare i ruoli personalizzati di Azure usando il portale di Azure.

    Riquadro Aggiungi autorizzazioni con il provider di risorse

  • Cercare le autorizzazioni disponibili per trovare le autorizzazioni da includere.

    Quando si crea un ruolo personalizzato usando il portale di Azure, è possibile cercare le autorizzazioni per parola chiave. Ad esempio, è possibile cercare le autorizzazioni della macchina virtuale o di fatturazione. È anche possibile scaricare tutte le autorizzazioni come file CSV, quindi cercare questo file. Questa funzionalità di ricerca è descritta in Creare o aggiornare i ruoli personalizzati di Azure usando il portale di Azure.

    Aggiungere l'elenco delle autorizzazioni

Esempio di ruolo personalizzato

Di seguito viene illustrato l'aspetto di un ruolo personalizzato visualizzato usando Azure PowerShell in formato JSON. Questo ruolo personalizzato può essere usato per il monitoraggio e il riavvio di macchine virtuali.

{
  "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}"
  ]
}

Di seguito viene illustrato lo stesso ruolo personalizzato visualizzato usando l'interfaccia della riga di comando di Azure.

[
  {
    "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"
  }
]

Proprietà del ruolo personalizzato

Nella tabella seguente viene descritto il significato delle proprietà del ruolo personalizzato.

Proprietà Richiesto Type Descrizione
Name
roleName
String Nome visualizzato del ruolo personalizzato. Mentre una definizione di ruolo è un gruppo di gestione o una risorsa a livello di sottoscrizione, una definizione di ruolo può essere usata in più sottoscrizioni che condividono lo stesso tenant di Microsoft Entra. Questo nome visualizzato deve essere univoco nell'ambito del tenant di Microsoft Entra. Può includere lettere, numeri, spazi e caratteri speciali. Il numero massimo di caratteri è 512.
Id
name
String ID univoco del ruolo personalizzato. Per Azure PowerShell e l'interfaccia della riga di comando di Azure questo ID viene generato automaticamente quando viene creato un nuovo ruolo.
IsCustom
roleType
String Indica se questo è un ruolo personalizzato. Impostare su true o CustomRole per i ruoli personalizzati. Impostare su false o BuiltInRole per i ruoli predefiniti.
Description
description
String Descrizione del ruolo personalizzato. Può includere lettere, numeri, spazi e caratteri speciali. Il numero massimo di caratteri è 2048.
Actions
actions
String[] Matrice di stringhe che specifica le azioni del piano di controllo che il ruolo consente di eseguire. Per altre informazioni, consultare Azioni.
NotActions
notActions
No String[] Matrice di stringhe che specifica le azioni del piano di controllo escluse dal Actions consentito. Per altre informazioni, vedere notActions.
DataActions
dataActions
No String[] Matrice di stringhe che specifica le azioni del piano dati che il ruolo consente di eseguire ai dati all'interno di tale oggetto. Se si crea un ruolo personalizzato con DataActions, tale ruolo non può essere assegnato nell'ambito del gruppo di gestione. Per altre informazioni, vedere DataActions.
NotDataActions
notDataActions
No String[] Matrice di stringhe che specifica le azioni del piano dati escluse dal DataActions consentito. Per altre informazioni, vedere NotDataActions.
AssignableScopes
assignableScopes
String[] Matrice di stringhe che specifica gli ambiti in cui il ruolo personalizzato può essere assegnato. Il numero massimo di AssignableScopes è 2.000. Per altre informazioni, vedere assignableScopes.

Le stringhe di autorizzazione non fanno distinzione tra maiuscole e minuscole. Quando si creano ruoli personalizzati, la convenzione deve corrispondere al caso visualizzato per le autorizzazioni in operazioni del provider di risorse di Azure.

Autorizzazioni con caratteri jolly

Actions, NotActions, DataActionse NotDataActions supportano i caratteri jolly (*) per definire le autorizzazioni. Un carattere jolly (*) estende un'autorizzazione a tutti gli elementi corrispondenti alla stringa di azione specificata. Si supponga, ad esempio, di voler aggiungere tutte le autorizzazioni correlate a Gestione dei costi e esportazioni di Azure. È possibile aggiungere tutte queste stringhe di azione:

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

Invece di aggiungere tutte queste stringhe, è sufficiente aggiungere una stringa con caratteri jolly. Ad esempio, la stringa con caratteri jolly seguente equivale alle cinque stringhe precedenti. Ciò includerebbe anche eventuali autorizzazioni di esportazione future che potrebbero essere aggiunte.

Microsoft.CostManagement/exports/*

Nota

È consigliabile specificare Actions e DataActions in modo esplicito anziché usare il carattere jolly (*). L'accesso aggiuntivo e le autorizzazioni concesse tramite future Actions o DataActions potrebbero essere comportamenti indesiderati usando il carattere jolly.

Chi può creare, eliminare, aggiornare o visualizzare un ruolo personalizzato

Come per i ruoli predefiniti, la proprietà AssignableScopes specifica gli ambiti in cui il ruolo personalizzato può essere assegnato. La proprietà AssignableScopes per un ruolo personalizzato controlla anche chi può creare, eliminare, aggiornare o visualizzare il ruolo personalizzato.

Attività Azione Descrizione
Creare o eliminare un ruolo personalizzato Microsoft.Authorization/ roleDefinitions/write Gli utenti a cui viene concessa questa azione su tutte le AssignableScopes del ruolo personalizzato possono creare (o eliminare) ruoli personalizzati da usare in tali ambiti. Ad esempio, proprietari e amministratori accesso utenti di gruppi di gestione, sottoscrizioni e gruppi di risorse.
Aggiornare un ruolo personalizzato Microsoft.Authorization/ roleDefinitions/write Gli utenti a cui viene concessa questa azione su tutte le AssignableScopes del ruolo personalizzato possono aggiornare i ruoli personalizzati in tali ambiti. Ad esempio, proprietari e amministratori accesso utenti di gruppi di gestione, sottoscrizioni e gruppi di risorse.
Visualizzare un ruolo personalizzato Microsoft.Authorization/ roleDefinitions/read Gli utenti a cui viene concessa questa azione in un ambito possono visualizzare i ruoli personalizzati disponibili per l'assegnazione in tale ambito. Tutti i ruoli predefiniti consentono di rendere disponibili i ruoli personalizzati per l'assegnazione.

Nota

Anche se un ruolo viene rinominato, l'ID ruolo non cambia. Se si usano script o automazione per creare le assegnazioni di ruolo, è consigliabile usare l'ID ruolo univoco anziché il nome del ruolo. Pertanto, se un ruolo viene rinominato, è più probabile che gli script funzionino.

Trovare le assegnazioni di ruolo per eliminare un ruolo personalizzato

Prima di poter eliminare un ruolo personalizzato, è necessario rimuovere tutte le assegnazioni di ruolo che usano il ruolo personalizzato. Se si tenta di eliminare un ruolo personalizzato con assegnazioni di ruolo, viene visualizzato il messaggio: There are existing role assignments referencing role (code: RoleDefinitionHasAssignments).

Ecco i passaggi per trovare le assegnazioni di ruolo prima di eliminare un ruolo personalizzato:

Per informazioni su come trovare ruoli personalizzati inutilizzati, vedere Sintomo: non è possibile creare altre definizioni di ruolo.

Limiti dei ruoli personalizzati

L'elenco seguente descrive i limiti per i ruoli personalizzati.

  • Ogni tenant può avere fino a 5000 ruoli personalizzati.
  • Microsoft Azure gestito da 21Vianet può avere fino a 2000 ruoli personalizzati per ogni tenant.
  • Non è possibile impostare AssignableScopes sull'ambito radice ("/").
  • Non è possibile usare caratteri jolly (*) in AssignableScopes. Questa restrizione relativa ai caratteri jolly consente di assicurarsi che un utente non possa potenzialmente ottenere l'accesso a un ambito aggiornando la definizione del ruolo.
  • È possibile includere un solo carattere jolly in una stringa di azione.
  • È possibile definire un solo gruppo di gestione in AssignableScopes per un ruolo personalizzato.
  • Azure Resource Manager non convalida l'esistenza del gruppo di gestione nella definizione del ruolo AssignableScopes.
  • I ruoli personalizzati con DataActions non possono essere assegnati all'ambito del gruppo di gestione.
  • È possibile creare un ruolo personalizzato con DataActions e un gruppo di gestione in AssignableScopes. Non è possibile assegnare il ruolo personalizzato nell'ambito del gruppo di gestione stesso; tuttavia, è possibile assegnare il ruolo personalizzato nell'ambito delle sottoscrizioni all'interno del gruppo di gestione. Ciò può essere utile se è necessario creare un singolo ruolo personalizzato con DataActions che deve essere assegnato in più sottoscrizioni, anziché creare un ruolo personalizzato separato per ogni sottoscrizione.

Per altre informazioni sui ruoli personalizzati e sui gruppi di gestione, vedere Informazioni sui gruppi di gestione di Azure.

Formati di input e di output

Per creare un ruolo personalizzato usando la riga di comando, in genere si usa JSON per specificare le proprietà desiderate per il ruolo personalizzato. A seconda degli strumenti usati, i formati di input e output saranno leggermente diversi. Questa sezione elenca i formati di input e output a seconda dello strumento.

Azure PowerShell

Per creare un ruolo personalizzato con Azure PowerShell, è necessario fornire l'input seguente.

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

Per aggiornare un ruolo personalizzato usando Azure PowerShell, è necessario specificare l'input seguente. Si noti che la proprietà Id è stata aggiunta.

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

Di seguito viene illustrato un esempio dell'output quando si elenca un ruolo personalizzato usando Azure PowerShell e il comando ConvertTo-Json.

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

Interfaccia della riga di comando di Azure

Per creare o aggiornare un ruolo personalizzato usando l'interfaccia della riga di comando di Azure, è necessario fornire l'input seguente. Questo formato è lo stesso quando si crea un ruolo personalizzato usando Azure PowerShell.

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

Di seguito viene illustrato un esempio dell'output quando si elenca un ruolo personalizzato usando l'interfaccia della riga di comando di Azure.

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

REST API

Per creare o aggiornare un ruolo personalizzato usando l'API REST, è necessario fornire l'input seguente. Questo formato è lo stesso formato generato quando si crea un ruolo personalizzato usando il portale di Azure.

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

Di seguito viene illustrato un esempio dell'output quando si elenca un ruolo personalizzato usando l'API REST.

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

Passaggi successivi