Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Om het beheer van resources te vereenvoudigen, kunt u resources implementeren op het niveau van uw Azure-abonnement. U kunt bijvoorbeeld beleidsregels en op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) implementeren op uw abonnement, waarmee ze in uw abonnement worden toegepast.
In dit artikel wordt beschreven hoe u het implementatiebereik instelt op een abonnement in een Bicep-bestand. Zie Bereik voor meer informatie.
Notitie
U kunt implementeren in 800 verschillende resourcegroepen in een implementatie op abonnementsniveau.
Trainingsmateriaal
Als u liever meer wilt weten over implementatiebereiken via stapsgewijze richtlijnen, raadpleegt u Resources implementeren in abonnementen, beheergroepen en tenants met behulp van Bicep.
Ondersteunde resources
Niet alle resourcetypen kunnen worden geïmplementeerd op abonnementsniveau. In deze sectie wordt vermeld welke resourcetypen worden ondersteund.
Gebruik voor Azure Blueprints:
Gebruik voor Azure-beleid:
Gebruik voor toegangsbeheer:
- accessReviewScheduleDefinitions
- accessReviewScheduleSettings
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Voor geneste sjablonen die worden geïmplementeerd in resourcegroepen, gebruikt u:
Voor het maken van nieuwe resourcegroepen gebruikt u:
Gebruik voor het beheren van uw abonnement het volgende:
- Begrotingen
- configuraties - Advisor
- lineOfCredit
- Sloten
- profiel - Wijzigingsanalyse
- supportPlanTypes
- tags
Gebruik voor bewaking:
Gebruik voor beveiliging:
- advancedThreatProtectionSettings
- alertsSuppressionRules
- assessmentMetadata
- Beoordelingen
- autoProvisioningSettings
- Verbindingslijnen
- deviceSecurityGroups
- ingestionSettings
- prijzen
- securityContacts
- Instellingen
- workspaceSettings
Andere ondersteunde typen zijn:
Bereik instellen
Als u het bereik wilt instellen op abonnement, gebruikt u:
targetScope = 'subscription'
Implementatieopdrachten
Als u wilt implementeren in een abonnement, gebruikt u de implementatieopdrachten op abonnementsniveau.
Gebruik az deployment sub create voor Azure CLI. In het volgende voorbeeld wordt een sjabloon geïmplementeerd om een resourcegroep te maken:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
Zie voor meer gedetailleerde informatie over implementatieopdrachten en opties voor het implementeren van ARM-sjablonen:
- Resources implementeren met ARM-sjablonen en Azure CLI
- Resources implementeren met ARM-sjablonen en Azure PowerShell
- ARM-sjablonen implementeren vanuit Cloud Shell
Implementatielocatie en -naam
Voor implementaties op abonnementsniveau moet u een locatie voor de implementatie opgeven. De locatie van de implementatie is gescheiden van de locatie van de resources die u implementeert. De implementatielocatie geeft aan waar implementatiegegevens moeten worden opgeslagen. Voor beheergroep - en tenantimplementaties is ook een locatie vereist. Voor resourcegroepimplementaties wordt de locatie van de resourcegroep gebruikt om de implementatiegegevens op te slaan.
U kunt een naam opgeven voor de implementatie of de standaardimplementatienaam gebruiken. De standaardnaam is de naam van het sjabloonbestand. Als u bijvoorbeeld een sjabloon met de naam main.json implementeert, wordt een standaardimplementatienaam van het hoofdbestand gemaakt.
Voor elke implementatienaam kan de locatie onveranderbaar zijn. U kunt geen implementatie op één locatie maken wanneer er een bestaande implementatie met dezelfde naam op een andere locatie is. Als u bijvoorbeeld een abonnementsimplementatie maakt met de naam deployment1 in centralus, kunt u later geen andere implementatie maken met de naam deployment1, maar een locatie van westus. Als u de foutcode InvalidDeploymentLocationkrijgt, gebruikt u een andere naam of dezelfde locatie als de vorige implementatie voor die naam.
Implementatiebereiken
In een Bicep-bestand moeten alle resources die met het resource trefwoord zijn gedeclareerd, worden geïmplementeerd binnen hetzelfde bereik als de implementatie. Voor een abonnementsimplementatie betekent dit dat alle resource declaraties in het Bicep-bestand moeten worden geïmplementeerd in hetzelfde abonnement of als een onderliggende of extensieresource van een resource in hetzelfde abonnement als de implementatie.
Deze beperking is echter niet van toepassing op existing resources. U kunt verwijzen naar bestaande resources in een ander bereik dan de implementatie.
Gebruik modules om resources op meerdere bereiken binnen één implementatie te implementeren. Als u een module implementeert, wordt een 'geneste implementatie' geactiveerd, zodat u verschillende bereiken kunt toepassen. De gebruiker die het bovenliggende Bicep-bestand implementeert, moet over de benodigde machtigingen beschikken om implementaties op die bereiken te starten.
U kunt een resource implementeren vanuit een Bicep-bestand binnen een abonnementsbereik op de volgende bereiken:
Bereik voor abonnement
Als u resources wilt implementeren in het doelabonnement, voegt u deze resources toe met het resource trefwoord.
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2024-11-01' = {
...
}
Zie Resourcegroepen maken met Bicep en Beleidsdefinitie toewijzen voor voorbeelden van implementatie in het abonnement.
Als u resources wilt implementeren in een ander abonnement dan het abonnement uit de bewerking, voegt u een module toe. Gebruik de abonnementsfunctie om de scope eigenschap in te stellen. Geef de subscriptionId eigenschap op voor de id van het abonnement waarvoor u wilt implementeren.
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Bereik tot resourcegroep
Als u resources wilt implementeren in een resourcegroep binnen het abonnement, voegt u een module toe en stelt u de eigenschap ervan in scope . Als de resourcegroep al bestaat, gebruikt u de functie resourceGroup om de bereikwaarde in te stellen. Geef de naam van de resourcegroep op.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Als de resourcegroep in hetzelfde Bicep-bestand wordt gemaakt, gebruikt u de symbolische naam van de resourcegroep om de bereikwaarde in te stellen. Zie Resourcegroep maken met Bicep voor een voorbeeld van het instellen van het bereik op de symbolische naam.
Bereik naar tenant
Als u resources wilt maken in de tenant, voegt u een module toe. Gebruik de tenantfunctie om de eigenschap ervan scope in te stellen.
De gebruiker die de sjabloon implementeert, moet over de vereiste toegang beschikken om te implementeren in de tenant.
Het volgende voorbeeld bevat een module die is geïmplementeerd in de tenant.
targetScope = 'subscription'
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
In plaats van een module te gebruiken, kunt u het bereik tenant() voor sommige resourcetypen instellen. In het volgende voorbeeld wordt een beheergroep geïmplementeerd in de tenant.
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
Zie Beheergroep voor meer informatie.
Resourcegroepen
Zie Resourcegroep maken met Bicep voor meer informatie over het maken van resourcegroepen.
Azure Policy
Beleidsdefinitie toewijzen
In het volgende voorbeeld wordt een bestaande beleidsdefinitie toegewezen aan het abonnement. Als de beleidsdefinitie parameters accepteert, geeft u deze op als een object. Als de beleidsdefinitie geen parameters accepteert, gebruikt u het standaard lege object.
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
}
}
Beleidsdefinities maken en toewijzen
U kunt een beleidsdefinitie definiëren en toewijzen in hetzelfde Bicep-bestand.
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
}
}
Toegangsbeheer
Zie Azure-roltoewijzingen toevoegen met behulp van Azure Resource Manager-sjablonen voor meer informatie over het toewijzen van rollen.
In het volgende voorbeeld wordt een resourcegroep gemaakt, wordt er een vergrendeling op toegepast en wordt een rol toegewezen aan een principal.
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
}
}
In het volgende voorbeeld ziet u de module om de vergrendeling toe te passen:
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
In het volgende voorbeeld ziet u de module om de rol toe te wijzen:
@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
}
}
Volgende stappen
Zie voor meer informatie over andere bereiken: