Freigeben über


Erstellen oder Aktualisieren von benutzerdefinierten Rollen in Azure mithilfe von Bicep

Wenn die integrierten Azure-Rollen die Anforderungen Ihrer Organisation nicht erfüllen, können Sie Ihre eigenen benutzerdefinierten Rollen erstellen. In diesem Artikel wird beschrieben, wie Sie eine benutzerdefinierte Rolle mithilfe von Bicep erstellen oder aktualisieren.

Bicep ist eine domänenspezifische Sprache (Domain-Specific Language, DSL), die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie bietet eine präzise Syntax, zuverlässige Typsicherheit und Unterstützung für die Wiederverwendung von Code. Bicep bietet die beste Form der Erstellung für Ihre Infrastructure-as-Code-Lösungen in Azure.

Zum Erstellen einer benutzerdefinierten Rolle geben Sie einen Rollennamen, Rollenberechtigungen und den Ort an, an dem die Rolle verwendet werden kann. In diesem Artikel erstellen Sie eine Rolle namens Custom Role – RG Reader mit Ressourcenberechtigungen, die in einem Abonnementbereich oder einer niedrigeren Ebene zugewiesen werden können.

Voraussetzungen

Um eine benutzerdefinierte Rolle zu erstellen, benötigen Sie die Berechtigungen zum Erstellen benutzerdefinierter Rollen, wie z. B. Benutzerzugriffsadministrator.

Sie benötigen außerdem ein aktives Azure-Abonnement. Wenn Sie keines haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Überprüfen der Bicep-Datei

Die in diesem Artikel verwendete Bicep-Datei stammt aus den Azure-Schnellstartvorlagen. Die Bicep-Datei hat vier Parameter und einen Ressourcenabschnitt. Die vier Parameter sind:

  • Array von Aktionen mit dem Standardwert ["Microsoft.Resources/subscriptions/resourceGroups/read"]
  • Array von notActions mit einem leeren Standardwert
  • Rollenname mit dem Standardwert Custom Role - RG Reader
  • Rollenbeschreibung mit dem Standardwert Subscription Level Deployment of a Role Definition

Der Bereich, in dem diese benutzerdefinierte Rolle zugeordnet werden kann, wird auf das aktuelle Abonnement festgelegt.

Eine benutzerdefinierte Rolle erfordert eine eindeutige ID. Die ID kann mit der guid()-Funktion generiert werden. Da eine benutzerdefinierte Rolle auch einen eindeutigen Anzeigenamen für den Mandanten erfordert, können Sie den Rollennamen als Parameter für die guid()-Funktion verwenden, um eine deterministische GUID zu erstellen. Eine deterministische GUID ist nützlich, wenn Sie die benutzerdefinierte Rolle später mit der gleichen Bicep-Datei aktualisieren müssen.

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

Folgende Ressource wird in der Bicep-Datei definiert:

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.

  2. Erstellen Sie mit den Aktionen für roleDefinition eine Variable namens myActions.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Stellen Sie die Bicep-Datei entweder mit Azure CLI oder mit Azure PowerShell bereit.

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

Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.

Überprüfen der bereitgestellten Ressourcen

Verwenden Sie das Azure-Portal, Azure CLI oder Azure PowerShell, um zu überprüfen, ob die benutzerdefinierte Rolle erstellt wurde.

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

Aktualisieren einer benutzerdefinierten Rolle

Ähnlich wie beim Erstellen einer benutzerdefinierten Rolle können Sie auch für das Aktualisieren einer vorhandenen benutzerdefinierte Rolle Bicep verwenden. Um eine benutzerdefinierte Rolle zu aktualisieren, müssen Sie die Rolle angeben, die Sie aktualisieren möchten. Wenn Sie zuvor die benutzerdefinierte Rolle in Bicep mit einer eindeutigen Rollen-ID erstellt haben, die deterministisch ist, können Sie dieselbe Bicep-Datei verwenden und die benutzerdefinierte Rolle nur mithilfe des Anzeigenamens angeben.

  1. Geben Sie die aktualisierten Aktionen an.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Verwenden Sie Azure CLI oder Azure PowerShell, um die benutzerdefinierte Rolle zu aktualisieren.

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

    Hinweis

    Es kann mehrere Minuten dauern, bis die aktualisierte benutzerdefinierte Rolle weitergegeben wird.

Bereinigen von Ressourcen

Wenn die benutzerdefinierte Rolle nicht mehr benötigt wird, entfernen Sie sie über das Azure-Portal, die Azure CLI oder Azure PowerShell.

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

Nächste Schritte