Toegang krijgen tot een particulier virtueel netwerk vanuit een Bicep-implementatiescript
Met Microsoft.Resources/deploymentScripts
versie 2023-08-01
kunt u implementatiescripts uitvoeren in privénetwerken met een aantal extra configuraties:
Maak een door de gebruiker toegewezen beheerde identiteit en geef deze op in de
identity
eigenschap. Zie Identiteit om de identiteit toe te wijzen.Maak een opslagaccount in het privénetwerk en geef het implementatiescript op voor het gebruik van het bestaande opslagaccount. Zie Een bestaand opslagaccount gebruiken voor meer informatie. Er is een extra configuratie vereist voor het opslagaccount:
- Open het opslagaccount in Azure Portal.
- Selecteer in het linkermenu Toegangsbeheer (IAM) en selecteer vervolgens het tabblad Roltoewijzingen .
- Voeg de rol Inzender voor opslagbestandsgegevens toe aan de door de gebruiker toegewezen beheerde identiteit.
- Selecteer in het linkermenu onder Beveiliging en netwerken de optie Netwerken en selecteer vervolgens Firewalls en virtuele netwerken.
- Selecteer Ingeschakeld in geselecteerde virtuele netwerken en IP-adressen.
- Voeg onder Virtuele netwerken een subnet toe. In de volgende schermopname heet het subnet dspvnVnet.
- Selecteer onder Uitzonderingen Azure-services toestaan in de lijst met vertrouwde services voor toegang tot dit opslagaccount.
In het volgende Bicep-bestand ziet u hoe u de omgeving configureert voor het uitvoeren van een implementatiescript:
@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'
}
}
U kunt het volgende Bicep-bestand gebruiken om de implementatie te testen:
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'
}
}
Volgende stappen
In dit artikel hebt u geleerd hoe u toegang krijgt tot een particulier virtueel netwerk. Zie voor meer informatie: