Abonnementbereitstellungen mit Bicep-Dateien
Um die Verwaltung von Ressourcen zu vereinfachen, können Sie Ressourcen auf der Ebene Ihres Azure-Abonnements bereitstellen. Beispielsweise können Sie Richtlinien und rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) für Ihr Abonnement bereitstellen, wodurch diese dann in Ihrem gesamten Abonnement angewendet wird.
In diesem Artikel wird beschrieben, wie Sie den Bereitstellungsbereich auf ein Abonnement in einer Bicep-Datei festlegen.
Hinweis
In einer Bereitstellung auf Abonnementebene können Sie in 800 verschiedenen Ressourcengruppen bereitstellen.
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 Abonnementebene bereitgestellt werden. Im folgenden Abschnitt werden die unterstützten Ressourcentypen aufgelistet.
Verwenden Sie für Azure Blueprints:
Verwenden Sie für Azure-Richtlinien:
Verwenden Sie zur Zugriffssteuerung Folgendes:
- accessReviewScheduleDefinitions
- accessReviewScheduleSettings
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Verwenden Sie für geschachtelte Vorlagen, die in Ressourcengruppen bereitstellen:
Verwenden Sie zum Erstellen neuer Ressourcengruppen:
Verwenden Sie zum Verwalten Ihres Abonnements:
- budgets
- konfigurationen - Berater
- lineOfCredit
- locks
- profile - Änderungsanalyse
- supportPlanTypes
- Tags
Verwenden Sie für die Überwachung Folgendes:
Verwenden Sie für Sicherheit Folgendes:
- advancedThreatProtectionSettings
- alertsSuppressionRules
- assessmentMetadata
- assessments
- autoProvisioningSettings
- connectors
- deviceSecurityGroups
- ingestionSettings
- pricings
- securityContacts
- settings
- workspaceSettings
Andere unterstützte Typen sind unter anderem:
Mengenbereich
Legen Sie den Bereich wie folgt auf ein Abonnement fest:
targetScope = 'subscription'
Bereitstellungsbefehle
Verwenden Sie die Bereitstellungsbefehle auf Abonnementbereich für die Bereitstellung in einem Abonnement.
Verwenden Sie für die Azure-Befehlszeilenschnittstelle az deployment sub create. Das folgende Beispiel stellt eine Vorlage zum Erstellen einer Ressourcengruppe bereit:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
Ausführlichere Informationen über Bereitstellungsbefehle und -optionen für die Bereitstellung von ARM-Vorlagen finden Sie in den folgenden Artikeln:
- Bereitstellen von Ressourcen mit ARM-Vorlagen und der Azure CLI
- Bereitstellen von Ressourcen mit ARM-Vorlagen und Azure PowerShell
- Bereitstellen von ARM-Vorlagen über Cloud Shell
Bereitstellungsspeicherort und -name
Für Bereitstellungen auf Abonnementebene 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. Die Bereitstellungen von Verwaltungsgruppe und Mandant benötigen auch einen Speicherort. Für Ressourcengruppe-Bereitstellungen 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 Vorlage mit dem Namen main.json 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 Abonnementbereitstellung 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 in ein Abonnement können Sie Ressourcen an folgenden Orten bereitstellen:
- im Zielabonnement des Vorgangs
- in einem beliebigen Abonnement im Mandanten
- in anderen Ressourcengruppen im Abonnement oder in anderen Abonnements
- im Mandanten für das Abonnement
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.
Bereich: Abonnement
Um Ressourcen für das Zielabonnement bereitzustellen, fügen Sie diese Ressourcen mit dem Schlüsselwort resource
hinzu.
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2024-03-01' = {
...
}
Beispiele für die Bereitstellung im Abonnement finden Sie unter Erstellen von Ressourcengruppen mit Bicep und Zuweisen von Richtliniendefinitionen.
Zum Bereitstellen von Ressourcen in einem anderen Abonnement als dem des Vorgangs fügen Sie ein Modul hinzu. Verwenden Sie die subscription-Funktion, um die Eigenschaft scope
festzulegen. Legen Sie subscriptionId
auf die ID des Abonnements fest, in dem die Bereitstellung erfolgen soll.
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Bereich: Ressourcengruppe
Zum Bereitstellen von Ressourcen in einer Ressourcengruppe im Abonnement fügen Sie ein Modul hinzu und legen seine Eigenschaft scope
fest. Wenn die Ressourcengruppe bereits vorhanden ist, verwenden Sie die resourceGroup-Funktion, um den Bereichswert festzulegen. Geben Sie den Ressourcengruppennamen an.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Wenn die Ressourcengruppe in derselben Bicep-Datei erstellt wird, verwenden Sie den symbolischen Namen der Ressourcengruppe, um den Bereichswert festzulegen. Ein Beispiel für das Festlegen des Bereichs auf den symbolischen Namen finden Sie unter Erstellen einer Ressourcengruppen mit Bicep.
Bereich: Mandant
Zum Erstellen von Ressourcen im Mandanten fügen Sie ein Modul hinzu. Verwenden Sie die tenant-Funktion, um die Eigenschaft scope
festzulegen.
Der Benutzer, der die Vorlage bereitstellt, muss über den erforderlichen Zugriff zum Bereitstellen im Mandanten verfügen.
Das folgende Beispiel enthält ein Modul, das im Mandanten bereitgestellt wird.
targetScope = 'subscription'
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Anstatt ein Modul zu verwenden, können Sie für einige Ressourcentypen den Bereich auf tenant()
festlegen. Im folgenden Beispiel wird eine Verwaltungsgruppe im Mandanten bereitgestellt.
targetScope = 'subscription'
param mgName string = 'mg-${uniqueString(newGuid())}'
// management group created at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Weitere Informationen finden Sie unter Verwaltungsgruppe.
Ressourcengruppen
Informationen zum Erstellen von Ressourcengruppen finden Sie unter Erstellen einer Ressourcengruppe mit Bicep.
Azure Policy
Zuweisen einer Richtliniendefinition
Im folgenden Beispiel wird dem Abonnement eine vorhandene Richtliniendefinition zugewiesen. Wenn die Richtliniendefinition Parameter unterstützt, stellen Sie diese als Objekt bereit. Wenn die Richtliniendefinition keine Parameter unterstützt, verwenden Sie das standardmäßige leere Objekt.
targetScope = 'subscription'
param policyDefinitionID string
param policyName string
param policyParameters object = {}
resource policyAssign 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: policyName
properties: {
policyDefinitionId: policyDefinitionID
parameters: policyParameters
}
}
Erstellen und Zuweisen von Richtliniendefinitionen
Sie können eine Richtliniendefinition in derselben Bicep-Datei definieren und zuweisen.
targetScope = 'subscription'
resource locationPolicy 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
name: 'locationpolicy'
properties: {
policyType: 'Custom'
parameters: {}
policyRule: {
if: {
field: 'location'
equals: 'northeurope'
}
then: {
effect: 'deny'
}
}
}
}
resource locationRestrict 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
name: 'allowedLocation'
properties: {
policyDefinitionId: locationPolicy.id
}
}
Zugriffssteuerung
Informationen zum Zuweisen von Rollen finden Sie unter Hinzufügen von Azure-Rollenzuweisungen mithilfe von Azure Resource Manager-Vorlagen.
Im folgenden Beispiel wird eine Ressourcengruppe erstellt, eine Sperre darauf angewendet und einem Prinzipal eine Rolle zugewiesen.
targetScope = 'subscription'
@description('Name of the resourceGroup to create')
param resourceGroupName string
@description('Location for the resourceGroup')
param resourceGroupLocation string
@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string
@description('roleDefinition to apply to the resourceGroup - default is contributor')
param roleDefinitionId string = 'b24988ac-6180-42a0-ab88-20f7382dd24c'
@description('Unique name for the roleAssignment in the format of a guid')
param roleAssignmentName string = guid(principalId, roleDefinitionId, resourceGroupName)
var roleID = '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/${roleDefinitionId}'
resource newResourceGroup 'Microsoft.Resources/resourceGroups@2024-03-01' = {
name: resourceGroupName
location: resourceGroupLocation
properties: {}
}
module applyLock 'lock.bicep' = {
name: 'applyLock'
scope: newResourceGroup
}
module assignRole 'role.bicep' = {
name: 'assignRBACRole'
scope: newResourceGroup
params: {
principalId: principalId
roleNameGuid: roleAssignmentName
roleDefinitionId: roleID
}
}
Im folgenden Beispiel wird das Modul zum Anwenden der Sperre gezeigt:
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Im nächsten Beispiel wird das Modul zum Zuweisen der Rolle gezeigt:
@description('The principal to assign the role to')
param principalId string
@description('A GUID used to identify the role assignment')
param roleNameGuid string = newGuid()
param roleDefinitionId string
resource roleNameGuid_resource 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleNameGuid
properties: {
roleDefinitionId: roleDefinitionId
principalId: principalId
}
}
Nächste Schritte
Informationen zu anderen Bereichen finden Sie unter Folgendem: