Condividi tramite


Creare o aggiornare ruoli personalizzati di Azure con Bicep

Se i ruoli predefiniti di Azure non soddisfano le esigenze specifiche dell'organizzazione, è possibile creare ruoli personalizzati. Questo articolo descrive come creare o aggiornare un ruolo personalizzato usando Bicep.

Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. Offre sintassi concisa, indipendenza dai tipi affidabile e supporto per il riutilizzo del codice. Bicep offre la migliore esperienza di creazione per le soluzioni di infrastruttura come codice in Azure.

Per creare un ruolo personalizzato, è necessario specificare un nome di ruolo, le autorizzazioni del ruolo e la posizione in cui è possibile usare il ruolo. In questo articolo viene creato un ruolo denominato Ruolo personalizzato - Lettore RG con autorizzazioni di risorsa che possono essere assegnate a un ambito di sottoscrizione o inferiore.

Prerequisiti

Per creare un ruolo personalizzato, è necessario disporre delle autorizzazioni per creare ruoli personalizzati, ad esempio Amministratore accesso utenti.

È anche necessario avere una sottoscrizione di Azure attiva. Se non è già disponibile, è possibile creare un account gratuito prima di iniziare.

Esaminare il file Bicep

Il file Bicep usato in questo articolo è uno dei Modelli di Avvio rapido di Azure. Il file Bicep ha quattro parametri e una sezione resources. I quattro parametri sono:

  • Matrice di azioni con un valore predefinito di ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Matrice di notActions con un valore predefinito vuoto.
  • Nome del ruolo con un valore predefinito di Custom Role - RG Reader.
  • Descrizione del ruolo con un valore predefinito di Subscription Level Deployment of a Role Definition.

L'ambito in cui è possibile assegnare questo ruolo personalizzato è impostato sulla sottoscrizione corrente.

Un ruolo personalizzato richiede un ID univoco. L'ID può essere generato con la funzione guid(). Poiché un ruolo personalizzato richiede anche un nome visualizzato univoco per il tenant, è possibile usare il nome del ruolo come parametro per la guid() funzione per creare un GUID deterministico. Un GUID deterministico è utile se in un secondo momento è necessario aggiornare il ruolo personalizzato usando lo stesso file Bicep.

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.Resources/subscriptions/resourceGroups/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'

@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'

var roleDefName = guid(roleName)

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

La risorsa definita nel file Bicep è:

Distribuire il file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Creare una variabile denominata myActions con le azioni per roleDefinition.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell.

    az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
    

Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è andata a buon fine.

Esaminare le risorse distribuite

Usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per verificare che il ruolo personalizzato sia stato creato.

az role definition list --name "Custom Role - RG Reader"

Aggiornare un ruolo personalizzato

Analogamente alla creazione di un ruolo personalizzato, è possibile aggiornare un ruolo personalizzato esistente usando Bicep. Per aggiornare un ruolo personalizzato, è necessario specificare il ruolo da aggiornare. Se in precedenza è stato creato il ruolo personalizzato in Bicep con un ID ruolo univoco deterministico, è possibile usare lo stesso file Bicep e specificare il ruolo personalizzato usando solo il nome visualizzato.

  1. Specificare le azioni aggiornate.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Usare l'interfaccia della riga di comando di Azure o Azure PowerShell per aggiornare il ruolo personalizzato.

    az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
    

    Nota

    La propagazione del ruolo personalizzato aggiornato potrebbe richiedere alcuni minuti.

Pulire le risorse

Quando non è più necessario, usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per rimuovere il ruolo personalizzato.

az role definition delete --name "Custom Role - RG Reader"

Passaggi successivi