Előfizetések üzembe helyezése Bicep-fájlokkal
Az erőforrások kezelésének egyszerűsítése érdekében az erőforrásokat az Azure-előfizetés szintjén helyezheti üzembe. Üzembe helyezhet például szabályzatokat és Azure-beli szerepköralapú hozzáférés-vezérlést (Azure RBAC) az előfizetésében, amely az előfizetésre alkalmazza őket.
Ez a cikk azt ismerteti, hogyan állíthatja be az üzembehelyezési hatókört egy Előfizetésre egy Bicep-fájlban.
Megjegyzés
Előfizetési szintű üzembe helyezés esetén 800 különböző erőforráscsoportra telepítheti azokat.
Képzési források
Ha lépésről lépésre szeretne többet megtudni az üzembehelyezési hatókörökről, olvassa el az Erőforrások üzembe helyezése előfizetések, felügyeleti csoportok és bérlők számára a Bicep használatával című témakört.
Támogatott erőforrások
Nem minden erőforrástípus helyezhető üzembe az előfizetés szintjén. Ez a szakasz felsorolja, hogy mely erőforrástípusok támogatottak.
Az Azure Blueprints esetében használja a következőt:
Azure-szabályzatok esetén használja a következőket:
Hozzáférés-vezérléshez használja a következőt:
- accessReviewScheduleDefinitions
- accessReviewScheduleSettings
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Az erőforráscsoportokban üzembe helyező beágyazott sablonok esetében használja a következőt:
Új erőforráscsoportok létrehozásához használja a következőt:
Az előfizetés kezeléséhez használja a következőt:
- Költségvetések
- konfigurációk – Advisor
- lineOfCredit
- Zárak
- profil – Változáselemzés
- supportPlanTypes
- Címkék
Monitorozáshoz használja a következőt:
A biztonság érdekében használja a következőt:
- advancedThreatProtectionSettings
- alertsSuppressionRules
- assessmentMetadata
- Értékelések
- autoProvisioningSettings
- Csatlakozók
- deviceSecurityGroups
- ingestionSettings
- díjszabások
- securityContacts
- beállítások
- workspaceSettings
Egyéb támogatott típusok a következők:
Hatókör beállítása
A hatókör előfizetésre való beállításához használja a következőt:
targetScope = 'subscription'
Üzembehelyezési parancsok
Előfizetésben való üzembe helyezéshez használja az előfizetésszintű üzembehelyezési parancsokat.
Az Azure CLI-hez használja az az deployment sub create parancsot. Az alábbi példa egy sablont helyez üzembe egy erőforráscsoport létrehozásához:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
Az ARM-sablonok üzembe helyezési parancsaival és beállításaival kapcsolatos részletesebb információkért lásd:
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure CLI-vel
- Erőforrások üzembe helyezése ARM-sablonokkal és Azure PowerShell
- ARM-sablonok üzembe helyezése Cloud Shell
Üzembe helyezés helye és neve
Előfizetési szintű üzemelő példányok esetén meg kell adnia az üzembe helyezés helyét. Az üzembe helyezés helye eltér az üzembehelyezési erőforrások helyétől. Az üzembehelyezési hely határozza meg, hogy hol tárolja az üzembehelyezési adatokat. A felügyeleti csoport és a bérlő üzembe helyezéséhez is szükség van egy helyre. Az erőforráscsoport üzemelő példányai esetében az erőforráscsoport helye az üzembehelyezési adatok tárolására szolgál.
Megadhat egy nevet az üzembe helyezésnek, vagy használhatja az alapértelmezett üzembe helyezési nevet. Az alapértelmezett név a sablonfájl neve. A main.json nevű sablon üzembe helyezése például létrehozza a main alapértelmezett üzembehelyezési nevét.
Minden üzembe helyezési név esetében a hely nem módosítható. Nem hozható létre üzembe helyezés egyetlen helyen, ha egy másik helyen található egy azonos nevű meglévő üzemelő példány. Ha például a centralusban a Deployment1 névvel rendelkező előfizetési üzembe helyezést hoz létre, később nem hozhat létre egy másik üzembe helyezést a deployment1 névvel, hanem a westus helyével. Ha a hibakódot InvalidDeploymentLocation
kapja, használjon másik nevet, vagy ugyanazt a helyet, mint az előző üzembe helyezés.
Üzembehelyezési hatókörök
Előfizetésben való üzembe helyezéskor az erőforrásokat a következőre helyezheti üzembe:
- a művelet cél-előfizetése
- bármely előfizetés a bérlőben
- erőforráscsoportok az előfizetésben vagy más előfizetésekben
- az előfizetés bérlője
A bővítményerőforrás hatóköre az üzembehelyezési céltól eltérő célra terjedhet ki.
A sablont üzembe helyező felhasználónak hozzáféréssel kell rendelkeznie a megadott hatókörhöz.
Hatókör az előfizetéshez
Ha erőforrásokat szeretne üzembe helyezni a cél-előfizetésben, adja hozzá ezeket az erőforrásokat a resource
kulcsszóval.
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2022-09-01' = {
...
}
Példák az előfizetésben való üzembe helyezésre: Erőforráscsoportok létrehozása a Bicep használatával és Szabályzatdefiníció hozzárendelése.
Ha a művelettől eltérő előfizetésben szeretne erőforrásokat üzembe helyezni, adjon hozzá egy modult. A tulajdonság beállításához használja az előfizetési függvénytscope
. Adja meg a subscriptionId
tulajdonságot annak az előfizetésnek az azonosítójára, amelybe üzembe szeretne helyezni.
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Hatókör az erőforráscsoporthoz
Ha erőforrásokat szeretne üzembe helyezni egy erőforráscsoportban az előfizetésen belül, adjon hozzá egy modult, és állítsa be annak tulajdonságát scope
. Ha az erőforráscsoport már létezik, a resourceGroup függvénnyel állítsa be a hatókör értékét. Adja meg az erőforráscsoport nevét.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Ha az erőforráscsoport ugyanabban a Bicep-fájlban van létrehozva, használja az erőforráscsoport szimbolikus nevét a hatókör értékének beállításához. Példa a hatókör szimbolikus névre való beállítására: Erőforráscsoport létrehozása a Bicep használatával.
Hatókör a bérlőre
Ha erőforrásokat szeretne létrehozni a bérlőben, adjon hozzá egy modult. A bérlőfüggvény használatával állítsa be a tulajdonságát scope
.
A sablont telepítő felhasználónak rendelkeznie kell a bérlőn való üzembe helyezéshez szükséges hozzáféréssel.
Az alábbi példa egy, a bérlőn üzembe helyezett modult tartalmaz.
targetScope = 'subscription'
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
A modul használata helyett a hatókört tenant()
egyes erőforrástípusokhoz is beállíthatja. Az alábbi példa egy felügyeleti csoportot helyez üzembe a bérlőben.
targetScope = 'subscription'
param mgName string = 'mg-${uniqueString(newGuid())}'
// management group created at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2021-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
További információ: Felügyeleti csoport.
Erőforráscsoportok
További információ az erőforráscsoportok létrehozásáról: Erőforráscsoport létrehozása a Bicep használatával.
Azure Policy
Szabályzatdefiníció hozzárendelése
Az alábbi példa egy meglévő szabályzatdefiníciót rendel az előfizetéshez. Ha a szabályzatdefiníció paramétereket vesz fel, adja meg őket objektumként. Ha a szabályzatdefiníció nem fogad el paramétereket, használja az alapértelmezett üres objektumot.
targetScope = 'subscription'
param policyDefinitionID string
param policyName string
param policyParameters object = {}
resource policyAssign 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
name: policyName
properties: {
policyDefinitionId: policyDefinitionID
parameters: policyParameters
}
}
Szabályzatdefiníciók létrehozása és hozzárendelése
Definiálhat és hozzárendelhet egy szabályzatdefiníciót ugyanabban a Bicep-fájlban.
targetScope = 'subscription'
resource locationPolicy 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
name: 'locationpolicy'
properties: {
policyType: 'Custom'
parameters: {}
policyRule: {
if: {
field: 'location'
equals: 'northeurope'
}
then: {
effect: 'deny'
}
}
}
}
resource locationRestrict 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
name: 'allowedLocation'
properties: {
policyDefinitionId: locationPolicy.id
}
}
Hozzáférés-vezérlés
A szerepkörök hozzárendelésével kapcsolatos további információkért lásd: Azure-beli szerepkör-hozzárendelések hozzáadása Azure-Resource Manager-sablonok használatával.
Az alábbi példa létrehoz egy erőforráscsoportot, zárolást alkalmaz rá, és hozzárendel egy szerepkört egy taghoz.
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@2022-09-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
}
}
Az alábbi példa azt a modult mutatja be, amely alkalmazza a zárolást:
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
A következő példa a szerepkör hozzárendelésére szolgáló modult mutatja be:
@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
}
}
Következő lépések
Az egyéb hatókörökről az alábbiakban olvashat bővebben: