Mandantenbereitstellungen mit Bicep-Datei

Im Zuge der Entwicklung Ihrer Organisation müssen unter Umständen Richtlinien oder die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC) für Ihren Microsoft Entra-Mandanten definiert und zugewiesen werden. Mit Vorlagen auf der Mandantenebene können Sie Richtlinien deklarativ anwenden und Rollen global zuweisen.

Schulungsressourcen

Wenn Sie sich lieber in einer Schritt-für-Schritt-Anleitung über Bereitstellungsbereiche informieren möchten, finden Sie weitere Informationen unter Bereitstellen von Ressourcen für Abonnements, Verwaltungsgruppen und Mandanten mithilfe von Bicep.

Unterstützte Ressourcen

Nicht alle Ressourcentypen können auf Mandantenebene bereitgestellt werden. Im folgenden Abschnitt werden die unterstützten Ressourcentypen aufgelistet.

Verwenden Sie für rollenbasierte Zugriffssteuerung von Azure (Azure RBAC):

Verwenden Sie für geschachtelte Vorlagen, die om Verwaltungsgruppen, Abonnements oder Ressourcengruppen bereitstellen:

Verwenden Sie zum Erstellen von Verwaltungsgruppen:

Verwenden Sie zum Erstellen von Abonnements:

Verwenden Sie zum Verwalten von Kosten:

Verwenden Sie zum Konfigurieren des Portals:

Integrierte Richtliniendefinitionen sind Ressourcen auf Mandantenebene, aber Sie können keine benutzerdefinierten Richtliniendefinitionen im Mandanten bereitstellen. Ein Beispiel für das Zuweisen einer integrierten Richtliniendefinition zu einer Ressource finden Sie unter tenantResourceId-Beispiel.

Mengenbereich

Verwenden Sie Folgendes, um den Bereich auf den Mandanten festzulegen:

targetScope = 'tenant'

Erforderlicher Zugriff

Der Prinzipal, der die Vorlage bereitstellt, muss über Berechtigungen zum Erstellen von Ressourcen im Mandantenbereich verfügen. Der Prinzipal muss über zum Ausführen der Bereitstellungsaktionen (Microsoft.Resources/deployments/*) sowie zum Erstellen der in der Vorlage definierten Ressourcen berechtigt sein. Soll also beispielsweise eine Verwaltungsgruppe erstellt werden, muss der Prinzipal im Mandantenbereich über die Berechtigung „Mitwirkender“ verfügen. Zum Erstellen von Rollenzuweisungen muss der Prinzipal über die Berechtigung „Besitzer“ verfügen.

Die globalen Administrator*innen für Microsoft Entra ID sind nicht automatisch zum Zuweisen von Rollen berechtigt. Um Vorlagenbereitstellungen im Mandantenbereich zu ermöglichen, muss der globale Administrator folgende Schritte ausführen:

  1. Erhöhen der Kontozugriffsrechte, damit der globale Administrator Rollen zuweisen kann. Weitere Informationen finden Sie unter Erhöhen der Zugriffsrechte zum Verwalten aller Azure-Abonnements und Verwaltungsgruppen.

  2. Zuweisen der Rolle „Besitzer“ oder „Mitwirkender“ für den Prinzipal, der die Vorlagen bereitstellen muss:

    New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
    
    az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
    

Der Prinzipal verfügt nun über die erforderlichen Berechtigungen, um die Vorlage bereitzustellen.

Bereitstellungsbefehle

Die Befehle für Mandantenbereitstellungen unterscheiden sich von den Befehlen für Ressourcengruppenbereitstellungen.

Verwenden Sie bei der Azure CLI az deployment tenant create:

az deployment tenant create \
  --name demoTenantDeployment \
  --location WestUS \
  --template-file main.bicep

Ausführlichere Informationen über Bereitstellungsbefehle und -optionen für die Bereitstellung von ARM-Vorlagen finden Sie in den folgenden Artikeln:

Bereitstellungsspeicherort und -name

Für Bereitstellungen auf der Mandantenebene müssen Sie einen Speicherort für die Bereitstellung angeben. Der Speicherort der Bereitstellung ist vom Speicherort der Ressourcen getrennt, die Sie bereitstellen. Der Bereitstellungsspeicherort gibt an, wo Bereitstellungsdaten gespeichert werden sollen. Abonnement- und Verwaltungsgruppenbereitstellungen erfordern ebenfalls einen Speicherort. Für Ressourcengruppenbereitstellungen wird der Speicherort der Ressourcengruppe zum Speichern der Bereitstellungsdaten verwendet.

Sie können einen Namen für die Bereitstellung angeben oder den Bereitstellungsstandardnamen verwenden. Der Standardname ist der Name der Vorlagendatei. Wenn Sie beispielsweise eine Datei mit dem Namen main.bicep bereitstellen, wird der Standardbereitstellungsname main erstellt.

Der Speicherort für jeden Bereitstellungsnamen ist unveränderlich. Sie können keine Bereitstellung an einem Speicherort erstellen, wenn bereits eine Bereitstellung mit demselben Namen an einem anderen Speicherort vorhanden ist. Wenn Sie z. B. eine Mandantenbereitstellung mit dem Namen deployment1 in centralus erstellen, können Sie später keine weitere Bereitstellung mit dem Namen deployment1, aber einen Speicherort westus erstellen. Wenn Sie den Fehlercode InvalidDeploymentLocation erhalten, verwenden Sie entweder einen anderen Namen oder denselben Speicherort wie bei der vorherigen Bereitstellung für diesen Namen.

Bereitstellungsbereiche

Bei der Bereitstellung auf einem Mandanten können Sie Ressourcen an folgenden Orten bereitstellen:

  • im Mandanten
  • in Verwaltungsgruppen innerhalb des Mandanten
  • subscriptions
  • Ressourcengruppen

Für eine Erweiterungsressource kann der Bereich auf ein Ziel festgelegt werden, das sich vom Bereitstellungsziel unterscheidet.

Der Benutzer, der die Vorlage bereitstellt, muss Zugriff auf den angegebenen Bereich besitzen.

In diesem Abschnitt wird das Festlegen verschiedener Bereiche veranschaulicht. Sie können diese verschiedenen Bereiche in einer Vorlage kombinieren.

Bereich: Mandant

Ressourcen, die innerhalb der Bicep-Datei definiert sind, werden auf den Mandanten angewendet.

targetScope = 'tenant'

// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  ...
}

Bereich: Verwaltungsgruppe

Fügen Sie ein Modul hinzu, um eine Verwaltungsgruppe innerhalb des Mandanten als Bereitstellungsziel zu verwenden. Verwenden Sie die managementGroup-Funktion, um ihre Eigenschaft scope festzulegen. Geben Sie den Namen der Verwaltungsgruppe an.

targetScope = 'tenant'

param managementGroupName string

// create resources at management group level
module  'module.bicep' = {
  name: 'deployToMG'
  scope: managementGroup(managementGroupName)
}

Bereich: Abonnement

Um ein Abonnement innerhalb des Mandanten als Bereitstellungsziel zu verwenden, fügen Sie ein Modul hinzu. Verwenden Sie die subscription-Funktion, um ihre Eigenschaft scope festzulegen. Geben Sie die Abonnement-ID an.

targetScope = 'tenant'

param subscriptionID string

// create resources at subscription level
module  'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(subscriptionID)
}

Bereich: Ressourcengruppe

Um eine Ressourcengruppe innerhalb des Mandanten als Bereitstellungsziel zu verwenden, fügen Sie ein Modul hinzu. Verwenden Sie die resourceGroup-Funktion, um ihre Eigenschaft scope festzulegen. Geben Sie die Abonnement-ID und den Namen der Ressourcengruppe an.

targetScope = 'tenant'

param resourceGroupName string
param subscriptionID string

// create resources at resource group level
module  'module.bicep' = {
  name: 'deployToRG'
  scope: resourceGroup(subscriptionID, resourceGroupName)
}

Erstellen einer Verwaltungsgruppe

Die folgende Vorlage dient zum Erstellen einer Verwaltungsgruppe:

targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'

resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  name: mgName
  properties: {}
}

Verfügt Ihr Konto nicht über die Berechtigung zum Bereitstellen im Mandanten, können Sie durch die Bereitstellung in einem anderen Bereich dennoch Verwaltungsgruppen erstellen. Weitere Informationen finden Sie unter Verwaltungsgruppe.

Zuweisen einer Rolle

Die folgende Vorlage dient zum Zuweisen einer Rolle im Mandantenbereich:

targetScope = 'tenant'

@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string

@description('roleDefinition for the assignment - default is owner')
param roleDefinitionId string = '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'

var roleAssignmentName = guid(principalId, roleDefinitionId)

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
    principalId: principalId
  }
}

Nächste Schritte

Informationen zu anderen Bereichen finden Sie unter Folgendem: