Bicep dağıtım betiğinden özel sanal ağa erişme
sürümüyle Microsoft.Resources/deploymentScripts
2023-08-01
, dağıtım betiklerini bazı ek yapılandırmalarla özel ağlarda çalıştırabilirsiniz:
Kullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve özelliğinde
identity
belirtin. Kimliği atamak için bkz . Kimlik.Özel ağda bir depolama hesabı oluşturun ve mevcut depolama hesabını kullanmak için dağıtım betiğini belirtin. Daha fazla bilgi için bkz . Mevcut depolama hesabını kullanma. Depolama hesabı için bazı ek yapılandırmalar gereklidir:
- Depolama hesabını Azure portalında açın.
- Sol menüde Erişim Denetimi (IAM) öğesini ve ardından Rol atamaları sekmesini seçin.
- kullanıcı tarafından atanan yönetilen kimliğe Depolama Dosya Verileri Ayrıcalıklı Katkıda Bulunan rolünü ekleyin.
- Soldaki menüde, Güvenlik + ağ altında Ağ'ı ve ardından Güvenlik duvarları ve sanal ağlar'ı seçin.
- Seçili sanal ağlardan ve IP adreslerinden Etkin'i seçin.
- Sanal ağlar'ın altında bir alt ağ ekleyin. Aşağıdaki ekran görüntüsünde alt ağa dspvnVnet adı verilir.
- Özel Durumlar'ın altında, güvenilen hizmetler listesindeki Azure hizmetlerinin bu depolama hesabına erişmesine izin ver'i seçin.
Aşağıdaki Bicep dosyasında, bir dağıtım betiğini çalıştırmak için ortamın nasıl yapılandırılır gösterilmektedir:
@maxLength(10) // Required maximum length, because the storage account has a maximum of 26 characters
param prefix string
param location string = resourceGroup().location
param userAssignedIdentityName string = '${prefix}Identity'
param storageAccountName string = '${prefix}stg${uniqueString(resourceGroup().id)}'
param vnetName string = '${prefix}Vnet'
param subnetName string = '${prefix}Subnet'
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
enableDdosProtection: false
subnets: [
{
name: subnetName
properties: {
addressPrefix: '10.0.0.0/24'
serviceEndpoints: [
{
service: 'Microsoft.Storage'
}
]
delegations: [
{
name: 'Microsoft.ContainerInstance.containerGroups'
properties: {
serviceName: 'Microsoft.ContainerInstance/containerGroups'
}
}
]
}
}
]
}
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' existing = {
parent: vnet
name: subnetName
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
networkAcls: {
bypass: 'AzureServices'
virtualNetworkRules: [
{
id: subnet.id
action: 'Allow'
state: 'Succeeded'
}
]
defaultAction: 'Deny'
}
}
}
resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: userAssignedIdentityName
location: location
}
resource storageFileDataPrivilegedContributor 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
name: '69566ab7-960f-475b-8e7c-b3118f30c6bd' // Storage File Data Privileged Contributor
scope: tenant()
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
scope: storageAccount
name: guid(storageFileDataPrivilegedContributor.id, userAssignedIdentity.id, storageAccount.id)
properties: {
principalId: userAssignedIdentity.properties.principalId
roleDefinitionId: storageFileDataPrivilegedContributor.id
principalType: 'ServicePrincipal'
}
}
Dağıtımı test etmek için aşağıdaki Bicep dosyasını kullanabilirsiniz:
param prefix string
param location string = resourceGroup().location
param utcValue string = utcNow()
param storageAccountName string
param vnetName string
param subnetName string
param userAssignedIdentityName string
resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' existing = {
name: vnetName
resource subnet 'subnets' existing = {
name: subnetName
}
}
resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = {
name: userAssignedIdentityName
}
resource dsTest 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: '${prefix}DS'
location: location
identity: {
type: 'userAssigned'
userAssignedIdentities: {
'${userAssignedIdentity.id}': {}
}
}
kind: 'AzureCLI'
properties: {
forceUpdateTag: utcValue
azCliVersion: '2.52.0'
storageAccountSettings: {
storageAccountName: storageAccountName
}
containerSettings: {
subnetIds: [
{
id: vnet::subnet.id
}
]
}
scriptContent: 'echo "Hello world!"'
retentionInterval: 'P1D'
cleanupPreference: 'OnExpiration'
}
}
Sonraki adımlar
Bu makalede, özel bir sanal ağa erişmeyi öğrendiniz. Daha fazlasını öğrenin: