Megosztás a következőn keresztül:


Privát virtuális hálózat elérése Bicep-üzembehelyezési szkriptből

A verzióval Microsoft.Resources/deploymentScripts2023-08-01futtathat üzembehelyezési szkripteket magánhálózatokon néhány további konfigurációval:

  • Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, és adja meg a identity tulajdonságban. Az identitás hozzárendeléséhez lásd : Identitás.

  • Hozzon létre egy tárfiókot a magánhálózaton, és adja meg a meglévő tárfiók használatához szükséges üzembehelyezési szkriptet. További információ: Meglévő tárfiók használata. A tárfiókhoz további konfiguráció szükséges:

    1. Nyissa meg a tárfiókot az Azure Portalon.
    2. A bal oldali menüben válassza a Hozzáférés-vezérlés (IAM) lehetőséget, majd a Szerepkör-hozzárendelések lapot.
    3. Adja hozzá a Storage-fájladatok kiemelt közreműködői szerepkörét a felhasználó által hozzárendelt felügyelt identitáshoz.
    4. A bal oldali menü Biztonság + hálózatkezelés területén válassza a Hálózatkezelés, majd a Tűzfalak és virtuális hálózatok lehetőséget.
    5. Válassza az Engedélyezve lehetőséget a kijelölt virtuális hálózatok és IP-címek közül.
    6. A Virtuális hálózatok területen adjon hozzá egy alhálózatot. Az alábbi képernyőképen az alhálózat neve dspvnVnet.
    7. A Kivételek csoportban válassza az Azure-szolgáltatások engedélyezése a megbízható szolgáltatások listájában a tárfiók eléréséhez.

    Képernyőkép a tárfiók magánhálózathoz való hozzáférésre való konfigurálásához szükséges beállításokról.

Az alábbi Bicep-fájl bemutatja, hogyan konfigurálhatja a környezetet üzembehelyezési szkript futtatásához:

@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'
  }
}

Az üzembe helyezés teszteléséhez a következő Bicep-fájl használható:

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'
  }
}

Következő lépések

Ebben a cikkben megismerkedett a privát virtuális hálózatok elérésével. További tudnivalók: