Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure verfügt über ein leistungsfähiges rollenbasiertes Zugriffssteuerungssystem (RBAC). Weitere Informationen zu Azure RBAC finden Sie unter Was ist azure Role-based access control (Azure RBAC)? Mithilfe von Bicep können Sie Ihre RBAC-Rollenzuweisungen und Rollendefinitionen programmgesteuert definieren.
Rollenzuweisungen
Rollenzuweisungen ermöglichen es Ihnen, einem Prinzipal wie einem Benutzer, einer Gruppe oder einem Dienstprinzipalzugriff auf eine bestimmte Azure-Ressource zu gewähren.
Um eine Rollenzuweisung zu definieren, erstellen Sie eine Ressource mit Typ Microsoft.Authorization/roleAssignments. Eine Rollendefinition verfügt über mehrere Eigenschaften, einschließlich eines Bereichs, eines Namens, einer Rollendefinitions-ID, einer Prinzipal-ID und eines Prinzipaltyps.
Geltungsbereich
Rollenzuweisungen gelten für einen bestimmten Bereich, der die Ressource oder den Satz von Ressourcen definiert, auf die Sie Zugriff gewähren. Weitere Informationen finden Sie in der Grundlegendes zum Bereich von Azure RBAC.
Rollenzuweisungen sind Erweiterungsressourcen, d. h., sie gelten für eine andere Ressource. Das folgende Beispiel zeigt, wie Sie ein Speicherkonto und eine Rollenzuweisung für dieses Speicherkonto erstellen:
param location string = resourceGroup().location
param storageAccountName string = 'stor${uniqueString(resourceGroup().id)}'
param storageSkuName string = 'Standard_LRS'
param roleDefinitionResourceId string
param principalId string
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: storageSkuName
}
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
scope: storageAccount
name: guid(storageAccount.id, principalId, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Wenn Sie den Bereich nicht explizit angeben, verwendet Bicep die Datei targetScope. Im folgenden Beispiel wird keine scope Eigenschaft angegeben, sodass die Rollenzuweisung auf das Abonnement beschränkt ist.
param roleDefinitionResourceId string
param principalId string
targetScope = 'subscription'
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, principalId, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Tipp
Verwenden Sie den kleinsten Bereich, den Sie benötigen, um Ihre Anforderungen zu erfüllen.
Wenn Sie beispielsweise einem einzelnen Speicherkonto einen verwalteten Identitätszugriff gewähren müssen, empfiehlt es sich, die Rollenzuweisung im Bereich des Speicherkontos und nicht im Bereich der Ressourcengruppe oder des Abonnements zu erstellen.
Name
Der Ressourcenname einer Rollenzuweisung muss eine GUID (Globally Unique Identifier) sein.
Die Ressourcennamen von Rollenzuweisungen müssen innerhalb des Microsoft Entra-Mandanten eindeutig sein, auch wenn der Gültigkeitsbereich kleiner ist.
Damit Ihre Bicep-Bereitstellung wiederholt werden kann, ist es wichtig, dass der Name deterministisch ist, d. h. bei jeder Bereitstellung muss derselbe Namen verwendet werden. Es ist sinnvoll, eine GUID mit einer Kombination aus Bereich, Prinzipal-ID und Rollen-ID zu erstellen. Es wird empfohlen, die Funktion guid() zu verwenden, um eine deterministische GUID für Ihre Rollenzuweisungsnamen zu erstellen, wie in diesem Beispiel:
name: guid(subscription().id, principalId, roleDefinitionResourceId)
Rollendefinitions-ID
Die von Ihnen zugewiesene Rolle kann eine integrierte Rollendefinition oder eine benutzerdefinierte Rollendefinition sein. Um eine integrierte Rollendefinition zu verwenden, suchen Sie die entsprechende Rollendefinitions-ID. Beispielsweise verfügt die Rolle "Mitwirkender" über eine Rollendefinitions-ID von b24988ac-6180-42a0-ab88-20f7382dd24c.
Wenn Sie die Rollenzuweisungsressource erstellen, müssen Sie eine vollqualifizierte Ressourcen-ID angeben. Integrierte Rollendefinitions-IDs sind Ressourcen mit Abonnementbereich. Es wird empfohlen, mithilfe einer existing-Ressource auf die integrierte Rolle zu verweisen, und die .id-Eigenschaft zu verwenden, um auf die voll qualifizierte Ressourcen-ID zuzugreifen:
param principalId string
@description('This is the built-in Contributor role. See https://learn.microsoft.com/azure/role-based-access-control/built-in-roles#contributor')
resource contributorRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
scope: subscription()
name: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, principalId, contributorRoleDefinition.id)
properties: {
roleDefinitionId: contributorRoleDefinition.id
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Schulleiter
Die Eigenschaft principalId muss auf eine GUID festgelegt werden, die den Microsoft Entra-Bezeichner für den Prinzipal repräsentiert. In Microsoft Entra-ID wird dies manchmal als Objekt-ID bezeichnet.
Die principalType Eigenschaft gibt an, ob der Prinzipal ein Benutzer, eine Gruppe oder ein Dienstprinzipal ist. Verwaltete Identitäten sind eine Form von Dienstprinzipal.
Tipp
Es ist wichtig, die principalType Eigenschaft festzulegen, wenn Sie eine Rollenzuweisung in Bicep erstellen. Andernfalls kann es zu zeitweiligen Bereitstellungsfehlern kommen, insbesondere wenn Sie mit Dienstprinzipalen und verwalteten Identitäten arbeiten.
Das folgende Beispiel zeigt, wie Sie eine vom Benutzer zugewiesene verwaltete Identität und eine Rollenzuweisung erstellen:
param location string = resourceGroup().location
param roleDefinitionResourceId string
var managedIdentityName = 'MyManagedIdentity'
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2025-01-31-preview' = {
name: managedIdentityName
location: location
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, managedIdentity.id, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: managedIdentity.properties.principalId
principalType: 'ServicePrincipal'
}
}
Verhalten beim Löschen von Ressourcen
Wenn Sie einen Benutzer, eine Gruppe, einen Dienstprinzipal oder eine verwaltete Identität aus der Microsoft Entra-ID löschen, empfiehlt es sich, alle Rollenzuweisungen zu löschen. Sie werden nicht automatisch gelöscht.
Alle Rollenzuweisungen, die auf eine gelöschte Prinzipal-ID verweisen, werden ungültig. Wenn Sie versuchen, den Namen einer Rollenzuweisung für eine andere Rollenzuweisung wiederzuverwenden, schlägt die Bereitstellung fehl. Um dieses Verhalten zu umgehen, sollten Sie entweder die alte Rollenzuweisung entfernen, bevor Sie es neu erstellen oder sicherstellen, dass Sie einen eindeutigen Namen verwenden, wenn Sie eine neue Rollenzuweisung bereitstellen. Diese Schnellstartvorlage veranschaulicht, wie Sie eine Rollenzuweisung in einem Bicep-Modul definieren und eine Prinzipal-ID als Ausgangswert für den Rollenzuweisungsnamen verwenden können.
Benutzerdefinierte Rollendefinitionen
Mit benutzerdefinierten Rollendefinitionen können Sie einen Satz von Berechtigungen definieren, die dann mithilfe einer Rollenzuweisung einem Prinzipal zugewiesen werden können. Weitere Informationen zu Rollendefinitionen finden Sie unter "Grundlegendes zu Azure-Rollendefinitionen".
Um eine benutzerdefinierte Rollendefinition zu erstellen, definieren Sie eine Ressource vom Typ Microsoft.Authorization/roleDefinitions. Im Schnellstart Erstellen einer neuen Rolle über eine Bereitstellung auf Abonnementebene finden Sie ein Beispiel.
Ressourcennamen für Rollendefinitionen müssen innerhalb des Microsoft Entra-Mandanten eindeutig sein, selbst wenn die zuordnungsfähigen Bereiche enger gefasst sind.
Hinweis
Einige Dienste verwalten ihre eigenen Rollendefinitionen und Zuordnungen. Beispielsweise verwaltet Azure Cosmos DB eigene Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments- und Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions-Ressourcen. Weitere Informationen finden Sie in der Dokumentation des jeweiligen Diensts.
Verwandte Ressourcen
- Ressourcendokumentation
- Erweiterungsressourcen
- Bereiche
- Schnellstartvorlagen
- Erstellen einer neuen Rollendefinition durch eine Bereitstellung auf Abonnementebene
- Zuweisen einer Rolle im Abonnementbereich
- Zuweisen einer Rolle im Mandantenbereich
- Erstellen einer Ressourcengruppe, Anwenden einer Sperre und RBAC
- Erstellen von Schlüsseltresor, verwalteter Identität und Rollenzuweisung
- Communityblogbeiträge
- Erstellen von Rollenzuweisungen für verschiedene Bereiche mit Bicep, von Barbara Forbes