Nasazení předplatného se soubory Bicep
Pro zjednodušení správy prostředků můžete nasadit prostředky na úrovni předplatného Azure. Můžete například nasadit zásady a řízení přístupu na základě role v Azure (Azure RBAC) do vašeho předplatného, které je aplikuje napříč vaším předplatným.
Tento článek popisuje, jak nastavit obor nasazení na předplatné v souboru Bicep.
Poznámka:
V nasazení na úrovni předplatného můžete nasadit do 800 různých skupin prostředků.
Školicí materiály
Pokud byste se raději dozvěděli o oborech nasazení prostřednictvím podrobných pokynů, přečtěte si téma Nasazení prostředků do předplatných, skupin pro správu a tenantů pomocí Bicep.
Podporované prostředky
Ne všechny typy prostředků je možné nasadit na úroveň předplatného. Tato část obsahuje seznam podporovaných typů prostředků.
Pro Azure Blueprints použijte:
Pro zásady Azure použijte:
Pro řízení přístupu použijte:
- AccessReviewScheduleDefinitions
- accessReviewSchedule Nastavení
- roleAssignments
- roleAssignmentScheduleRequests
- RoleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Pro vnořené šablony, které se nasazují do skupin prostředků, použijte:
Při vytváření nových skupin prostředků použijte:
Ke správě předplatného použijte:
Pro monitorování použijte:
Pro zabezpečení použijte:
- advancedThreatProtection Nastavení
- alertsSuppressionRules
- assessmentMetadata
- Hodnocení
- automatické zřizování Nastavení
- Konektory
- deviceSecurityGroups
- příjem dat Nastavení
- ceny
- securityContacts
- Nastavení
- pracovní prostor Nastavení
Mezi další podporované typy patří:
Nastavit obor
Pokud chcete nastavit rozsah na předplatné, použijte:
targetScope = 'subscription'
Příkazy nasazení
K nasazení do předplatného použijte příkazy nasazení na úrovni předplatného.
Pro Azure CLI použijte příkaz az deployment sub create. Následující příklad nasadí šablonu pro vytvoření skupiny prostředků:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
Podrobnější informace opříkazch
- Nasazení prostředků pomocí šablon ARM a Azure CLI
- Nasazení prostředků pomocí šablon ARM a Azure PowerShellu
- Nasazení šablon ARM z Cloud Shellu
Umístění a název nasazení
Pro nasazení na úrovni předplatného musíte zadat umístění pro nasazení. Umístění nasazení je oddělené od umístění prostředků, které nasadíte. Umístění nasazení určuje, kam se mají ukládat data nasazení. Nasazení skupin pro správu a tenantů také vyžadují umístění. Pro nasazení skupin prostředků se umístění skupiny prostředků používá k ukládání dat nasazení.
Můžete zadat název nasazení nebo použít výchozí název nasazení. Výchozí název je název souboru šablony. Například nasazení šablony s názvem main.json vytvoří výchozí název nasazení main.
Pro každý název nasazení je umístění neměnné. Nasazení nemůžete vytvořit v jednom umístění, pokud existuje existující nasazení se stejným názvem v jiném umístění. Pokud například vytvoříte nasazení předplatného s názvem deployment1 v centralus, nemůžete později vytvořit jiné nasazení s názvem deployment1, ale umístěním westus. Pokud se zobrazí kód InvalidDeploymentLocation
chyby, použijte pro tento název jiný název nebo stejné umístění jako předchozí nasazení.
Obory nasazení
Při nasazování do předplatného můžete prostředky nasadit do:
- cílové předplatné z operace
- libovolné předplatné v tenantovi
- skupiny prostředků v rámci předplatného nebo jiných předplatných
- tenant pro předplatné
Prostředek rozšíření může být vymezen na cíl, který se liší od cíle nasazení.
Uživatel, který šablonu nasazuje, musí mít přístup k zadanému oboru.
Rozsah předplatného
Pokud chcete nasadit prostředky do cílového předplatného, přidejte tyto prostředky s klíčovým slovem resource
.
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2024-03-01' = {
...
}
Příklady nasazení do předplatného najdete v tématu Vytvoření skupin prostředků pomocí Bicep a přiřazení definice zásad.
Pokud chcete nasadit prostředky do předplatného, které se liší od předplatného z operace, přidejte modul. K nastavení vlastnosti použijte funkci předplatnéhoscope
. subscriptionId
Zadejte vlastnost ID předplatného, do kterého chcete nasadit.
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Rozsah na skupinu prostředků
Pokud chcete nasadit prostředky do skupiny prostředků v rámci předplatného, přidejte modul a nastavte jeho scope
vlastnost. Pokud skupina prostředků již existuje, nastavte hodnotu oboru pomocí funkce resourceGroup. Zadejte název skupiny prostředků.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Pokud je skupina prostředků vytvořená ve stejném souboru Bicep, nastavte hodnotu oboru pomocí symbolického názvu skupiny prostředků. Příklad nastavení oboru na symbolický název najdete v tématu Vytvoření skupiny prostředků pomocí Bicep.
Rozsah na tenanta
Pokud chcete vytvořit prostředky v tenantovi, přidejte modul. Pomocí funkce tenanta nastavte jeho scope
vlastnost.
Uživatel, který šablonu nasazuje, musí mít požadovaný přístup k nasazení v tenantovi.
Následující příklad obsahuje modul, který je nasazený do tenanta.
targetScope = 'subscription'
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Místo použití modulu můžete nastavit obor tenant()
pro některé typy prostředků. Následující příklad nasadí skupinu pro správu v tenantovi.
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
Další informace naleznete v tématu Skupina pro správu.
Skupiny prostředků
Informace o vytváření skupin prostředků naleznete v tématu Vytvoření skupiny prostředků pomocí Bicep.
Azure Policy
Přiřazení definice zásady
Následující příklad přiřadí existující definici zásad předplatnému. Pokud definice zásady přebírá parametry, zadejte je jako objekt. Pokud definice zásady nepřebírají parametry, použijte výchozí prázdný 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
}
}
Vytváření a přiřazování definic zásad
Definici zásady můžete definovat a přiřadit ve stejném souboru Bicep.
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
}
}
Řízení přístupu
Další informace o přiřazování rolí najdete v tématu Přidání přiřazení rolí Azure pomocí šablon Azure Resource Manageru.
Následující příklad vytvoří skupinu prostředků, použije na ni zámek a přiřadí roli k objektu zabezpečení.
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
}
}
Následující příklad ukazuje modul, který použije zámek:
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Následující příklad ukazuje modul pro přiřazení role:
@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
}
}
Další kroky
Další informace o dalších oborech najdete tady: