Bicep dosyalarıyla abonelik dağıtımları
Kaynakların yönetimini basitleştirmek için kaynakları Azure aboneliğiniz düzeyinde dağıtabilirsiniz. Örneğin, ilkeleri ve Azure rol tabanlı erişim denetimini (Azure RBAC) aboneliğinize dağıtabilirsiniz ve bu da bunları aboneliğiniz genelinde uygular.
Bu makalede, dağıtım kapsamının Bicep dosyasındaki bir aboneliğe nasıl ayarlanacağı açıklanmaktadır.
Not
Abonelik düzeyinde dağıtımda 800 farklı kaynak grubuna dağıtabilirsiniz.
Eğitim kaynakları
Adım adım yönergeler aracılığıyla dağıtım kapsamları hakkında bilgi edinmek isterseniz bkz . Bicep kullanarak aboneliklere, yönetim gruplarına ve kiracılara kaynak dağıtma.
Desteklenen kaynaklar
Tüm kaynak türleri abonelik düzeyine dağıtılamaz. Bu bölümde hangi kaynak türlerinin desteklendiği listelenir.
Azure Blueprints için şunu kullanın:
Azure İlkeleri için şunu kullanın:
Erişim denetimi için şunu kullanın:
- accessReviewScheduleDefinitions
- accessReviewSchedule Ayarlar
- roleAssignments
- roleAssignmentScheduleRequests
- roleDefinitions
- roleEligibilityScheduleRequests
- roleManagementPolicyAssignments
Kaynak gruplarına dağıtılan iç içe şablonlar için şunu kullanın:
Yeni kaynak grupları oluşturmak için şunu kullanın:
Aboneliğinizi yönetmek için şunu kullanın:
- Bütçe
- configurations - Danışman
- lineOfCredit
- Kilit
- profil - Değişiklik Analizi
- supportPlanTypes
- etiketler
İzleme için şunu kullanın:
Güvenlik için şunu kullanın:
- advancedThreatProtection Ayarlar
- alertsSuppressionRules
- assessmentMetadata
- Değerlendirme
- autoProvisioning Ayarlar
- Bağlayıcı
- deviceSecurityGroups
- alma Ayarlar
- fiyatlandırmalar
- securityContacts
- Ayarlar
- çalışma alanı Ayarlar
Desteklenen diğer türler şunlardır:
Kapsamı ayarla
Kapsamı abonelik olarak ayarlamak için şunu kullanın:
targetScope = 'subscription'
Dağıtım komutları
Aboneliğe dağıtmak için abonelik düzeyi dağıtım komutlarını kullanın.
Azure CLI için az deployment sub create komutunu kullanın. Aşağıdaki örnek, kaynak grubu oluşturmak için bir şablon dağıtır:
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-file main.bicep \
--parameters rgName=demoResourceGroup rgLocation=centralus
ARM şablonlarını dağıtmaya yönelik dağıtım komutları ve seçenekleri hakkında daha ayrıntılı bilgi için bkz:
- ARM şablonları ve Azure CLI ile kaynak dağıtma
- ARM şablonları ve Azure PowerShell ile kaynak dağıtma
- Cloud Shell'den ARM şablonları dağıtma
Dağıtım konumu ve adı
Abonelik düzeyi dağıtımları için dağıtım için bir konum sağlamanız gerekir. Dağıtımın konumu, dağıttığınız kaynakların konumundan ayrıdır. Dağıtım konumu, dağıtım verilerinin depolandığı yeri belirtir. Yönetim grubu ve kiracı dağıtımları da bir konum gerektirir. Kaynak grubu dağıtımları için, dağıtım verilerini depolamak için kaynak grubunun konumu kullanılır.
Dağıtım için bir ad sağlayabilir veya varsayılan dağıtım adını kullanabilirsiniz. Varsayılan ad, şablon dosyasının adıdır. Örneğin, main.json adlı bir şablon dağıtılırken varsayılan dağıtım adı main oluşturulur.
Her dağıtım adı için konum sabittir. Farklı bir konumda aynı ada sahip mevcut bir dağıtım olduğunda tek bir konumda dağıtım oluşturamazsınız. Örneğin, centralus'ta deployment1 adlı bir abonelik dağıtımı oluşturursanız, daha sonra deployment1 adlı başka bir dağıtım oluşturamazsınız, ancak westus konumuna sahip olursunuz. hata kodunu InvalidDeploymentLocation
alırsanız, bu ad için farklı bir ad veya önceki dağıtımla aynı konumu kullanın.
Dağıtım kapsamları
Bir aboneliğe dağıtım yaparken, kaynakları şu kaynaklara dağıtabilirsiniz:
- işlemden hedef abonelik
- kiracıdaki herhangi bir abonelik
- abonelik veya diğer abonelikler içindeki kaynak grupları
- aboneliğin kiracısı
Uzantı kaynağının kapsamı, dağıtım hedefinden farklı bir hedef olarak ayarlanabilir.
Şablonu dağıtan kullanıcının belirtilen kapsama erişimi olmalıdır.
Kapsam-abonelik
Kaynakları hedef aboneliğe dağıtmak için bu kaynakları anahtar sözcüğüyle resource
ekleyin.
targetScope = 'subscription'
// resource group created in target subscription
resource exampleResource 'Microsoft.Resources/resourceGroups@2024-03-01' = {
...
}
Aboneliğe dağıtma örnekleri için bkz . Bicep ile kaynak grupları oluşturma ve İlke tanımı atama.
İşlemden farklı bir aboneliğe kaynak dağıtmak için bir modül ekleyin. özelliğini ayarlamak scope
için abonelik işlevini kullanın. subscriptionId
Özelliğini dağıtmak istediğiniz aboneliğin kimliğine sağlayın.
targetScope = 'subscription'
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToDifferentSub'
scope: subscription(otherSubscriptionID)
}
Kapsam- kaynak grubu
Abonelik içindeki bir kaynak grubuna kaynak dağıtmak için bir modül ekleyin ve özelliğini scope
ayarlayın. Kaynak grubu zaten varsa, kapsam değerini ayarlamak için resourceGroup işlevini kullanın. Kaynak grubu adını belirtin.
targetScope = 'subscription'
param resourceGroupName string
module exampleModule 'module.bicep' = {
name: 'exampleModule'
scope: resourceGroup(resourceGroupName)
}
Kaynak grubu aynı Bicep dosyasında oluşturulduysa, kapsam değerini ayarlamak için kaynak grubunun sembolik adını kullanın. Kapsamı sembolik ada ayarlama örneği için bkz . Bicep ile kaynak grubu oluşturma.
Kapsamı kiracıya
Kiracıda kaynak oluşturmak için bir modül ekleyin. Özelliğini ayarlamak scope
için kiracı işlevini kullanın.
Şablonu dağıtan kullanıcının kiracıda dağıtmak için gerekli erişime sahip olması gerekir.
Aşağıdaki örnek, kiracıya dağıtılan bir modülü içerir.
targetScope = 'subscription'
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Modül kullanmak yerine, bazı kaynak türleri için kapsamı tenant()
olarak ayarlayabilirsiniz. Aşağıdaki örnek kiracıda bir yönetim grubu dağıtır.
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
Daha fazla bilgi için bkz . Yönetim grubu.
Kaynak grupları
Kaynak grupları oluşturma hakkında bilgi için bkz . Bicep ile kaynak grubu oluşturma.
Azure İlkesi
İlke tanımı atama
Aşağıdaki örnekte aboneliğe var olan bir ilke tanımı atanır. İlke tanımı parametreleri alıyorsa, bunları bir nesne olarak sağlayın. İlke tanımı parametreleri almazsa, varsayılan boş nesneyi kullanın.
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
}
}
İlke tanımları oluşturma ve atama
Aynı Bicep dosyasında bir ilke tanımı tanımlayabilir ve atayabilirsiniz.
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
}
}
Erişim denetimi
Rol atama hakkında bilgi edinmek için bkz . Azure Resource Manager şablonlarını kullanarak Azure rol atamaları ekleme.
Aşağıdaki örnek bir kaynak grubu oluşturur, buna bir kilit uygular ve sorumluya bir rol atar.
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
}
}
Aşağıdaki örnekte kilidi uygulama modülü gösterilmektedir:
resource createRgLock 'Microsoft.Authorization/locks@2020-05-01' = {
name: 'rgLock'
properties: {
level: 'CanNotDelete'
notes: 'Resource group should not be deleted.'
}
}
Sonraki örnekte rolü atama modülü gösterilmektedir:
@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
}
}
Sonraki adımlar
Diğer kapsamlar hakkında bilgi edinmek için bkz: