Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Introdução ao Gerenciador de Rede Virtual do Azure usando o Bicep para gerenciar a conectividade de todas as suas redes virtuais.
Neste início rápido, você implanta três redes virtuais e usa o Gerenciador de Rede Virtual do Azure para criar uma topologia de rede em malha. Em seguida, verifique se a configuração de conectividade foi aplicada.
Módulos do Arquivo Bicep
A solução Bicep para esse exemplo é dividida em módulos para habilitar implantações em um grupo de recursos e no escopo da assinatura. As seções de arquivo detalhadas abaixo são os componentes exclusivos do Virtual Network Manager. Além das seções detalhadas abaixo, a solução implanta redes virtuais, uma identidade atribuída pelo usuário e uma atribuição de função.
Gerente de Rede Virtual, Grupos de Rede e Configurações de Conectividade
Gerenciador de Rede Virtual
@description('This is the Azure Virtual Network Manager which will be used to implement the connected group for inter-vnet connectivity.')
resource networkManager 'Microsoft.Network/networkManagers@2022-09-01' = {
name: 'vnm-learn-prod-${location}-001'
location: location
properties: {
networkManagerScopeAccesses: [
'Connectivity'
]
networkManagerScopes: {
subscriptions: [
'/subscriptions/${subscription().subscriptionId}'
]
managementGroups: []
}
}
}
Grupos de rede
A solução dá suporte à criação de grupos de rede de associação estática ou grupos de rede de associação dinâmica. O grupo de rede de associação estática especifica seus membros pode ID de Rede Virtual
Grupo de Rede de Associação Estática
@description('This is the static network group for the all VNETs.')
resource networkGroupSpokesStatic 'Microsoft.Network/networkManagers/networkGroups@2022-09-01' = if (networkGroupMembershipType == 'static') {
name: 'ng-learn-prod-${location}-static001'
parent: networkManager
properties: {
description: 'Network Group - Static'
}
// add spoke vnets A, B, and C to the static network group
resource staticMemberSpoke 'staticMembers@2022-09-01' = [for spokeMember in spokeNetworkGroupMembers: if (contains(groupedVNETs,last(split(spokeMember,'/')))) {
name: 'sm-${(last(split(spokeMember, '/')))}'
properties: {
resourceId: spokeMember
}
}]
resource staticMemberHub 'staticMembers@2022-09-01' = {
name: 'sm-${(toLower(last(split(hubVnetId, '/'))))}'
properties: {
resourceId: hubVnetId
}
}
}
Grupo de Rede de Associação Dinâmica
@description('This is the dynamic group for all VNETs.')
resource networkGroupSpokesDynamic 'Microsoft.Network/networkManagers/networkGroups@2022-09-01' = if (networkGroupMembershipType == 'dynamic') {
name: 'ng-learn-prod-${location}-dynamic001'
parent: networkManager
properties: {
description: 'Network Group - Dynamic'
}
}
Configuração de conectividade
A Configuração de Conectividade associa o Grupo de Rede à topologia de rede especificada.
@description('This connectivity configuration defines the connectivity between VNETs using Direct Connection. The hub will be part of the mesh, but gateway routes from the hub will not propagate to spokes.')
resource connectivityConfigurationMesh 'Microsoft.Network/networkManagers/connectivityConfigurations@2022-09-01' = {
name: 'cc-learn-prod-${location}-mesh001'
parent: networkManager
properties: {
description: 'Mesh connectivity configuration'
appliesToGroups: [
{
networkGroupId: (networkGroupMembershipType == 'static') ? networkGroupSpokesStatic.id : networkGroupSpokesDynamic.id
isGlobal: 'False'
useHubGateway: 'False'
groupConnectivity: 'DirectlyConnected'
}
]
connectivityTopology: 'Mesh'
deleteExistingPeering: 'True'
hubs: []
isGlobal: 'False'
}
}
Script de implantação
Para implantar a configuração no grupo de rede de destino, um Script de Implantação é usado para chamar o Deploy-AzNetworkManagerCommit Comando do PowerShell. O Script de Implantação precisa de uma identidade com permissões suficientes para executar o script do PowerShell no Virtual Network Manager, portanto, o arquivo Bicep cria uma Identidade Gerenciada pelo Usuário e concede a ele a função 'Colaborador' no grupo de recursos de destino. Para obter mais informações sobre Scripts de Implantação e identidades associadas, confira Usar scripts de implantação em modelos do ARM.
@description('Create a Deployment Script resource to perform the commit/deployment of the Network Manager connectivity configuration.')
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: deploymentScriptName
location: location
kind: 'AzurePowerShell'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentityId}': {}
}
}
properties: {
azPowerShellVersion: '8.3'
retentionInterval: 'PT1H'
timeout: 'PT1H'
arguments: '-networkManagerName "${networkManagerName}" -targetLocations ${location} -configIds ${configurationId} -subscriptionId ${subscription().subscriptionId} -configType ${configType} -resourceGroupName ${resourceGroup().name}'
scriptContent: '''
param (
# AVNM subscription id
[parameter(mandatory=$true)][string]$subscriptionId,
# AVNM resource name
[parameter(mandatory=$true)][string]$networkManagerName,
# string with comma-separated list of config ids to deploy. ids must be of the same config type
[parameter(mandatory=$true)][string[]]$configIds,
# string with comma-separated list of deployment target regions
[parameter(mandatory=$true)][string[]]$targetLocations,
# configuration type to deploy. must be either connectivity or securityadmin
[parameter(mandatory=$true)][ValidateSet('Connectivity','SecurityAdmin')][string]$configType,
# AVNM resource group name
[parameter(mandatory=$true)][string]$resourceGroupName
)
$null = Login-AzAccount -Identity -Subscription $subscriptionId
[System.Collections.Generic.List[string]]$configIdList = @()
$configIdList.addRange($configIds)
[System.Collections.Generic.List[string]]$targetLocationList = @() # target locations for deployment
$targetLocationList.addRange($targetLocations)
$deployment = @{
Name = $networkManagerName
ResourceGroupName = $resourceGroupName
ConfigurationId = $configIdList
TargetLocation = $targetLocationList
CommitType = $configType
}
try {
Deploy-AzNetworkManagerCommit @deployment -ErrorAction Stop
}
catch {
Write-Error "Deployment failed with error: $_"
throw "Deployment failed with error: $_"
}
'''
}
}
Política de Associação de Grupo de Rede Dinâmica
Quando a implantação é configurada para usar a associação dynamic de grupo de rede, a solução também implanta uma Definição e Atribuição de Azure Policy. A Definição de Política é mostrada abaixo.
@description('This is a Policy definition for dynamic group membership')
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2021-06-01' = {
name: uniqueString(networkGroupId)
properties: {
description: 'AVNM quickstart dynamic group membership Policy'
displayName: 'AVNM quickstart dynamic group membership Policy'
mode: 'Microsoft.Network.Data'
policyRule: {
if: {
allof: [
{
field: 'type'
equals: 'Microsoft.Network/virtualNetworks'
}
{
// virtual networks must have a tag where the key is '_avnm_quickstart_deployment'
field: 'tags[_avnm_quickstart_deployment]'
exists: true
}
{
// virtual network ids must include this sample's resource group ID - limiting the chance that dynamic membership impacts other vnets in your subscriptions
field: 'id'
like: '${subscription().id}/resourcegroups/${resourceGroupName}/*'
}
]
}
then: {
// 'addToNetworkGroup' is a special effect used by AVNM network groups
effect: 'addToNetworkGroup'
details: {
networkGroupId: networkGroupId
}
}
}
}
}
Implante a solução Bicep
Pré-requisitos de implantação
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Permissões para criar uma Definição de Política e Atribuição de Política no escopo da assinatura de destino (isso é necessário ao usar o parâmetro
networkGroupMembershipType=Dynamicde implantação para implantar os recursos de política necessários para a associação ao Grupo de Rede. O padrão éstatic, que não implanta uma Política.
Baixar a Solução Bicep
- Baixar um arquivo zip do repositório MSPNP neste link
- Extraia o arquivo Zip baixado e, no terminal, navegue até o diretório
solutions/avnm-mesh-connected-group/bicep.
Como alternativa, você pode usar git para clonar o repositório com git clone https://github.com/mspnp/samples.git
Conectar-se ao Azure
Entre na sua conta do Azure e selecione sua assinatura
Para iniciar sua configuração, entrar na sua conta do Azure:
Connect-AzAccount
Em seguida, conecte-se à sua assinatura:
Set-AzContext -Subscription <subscription name or id>
Instalar módulo do Azure PowerShell
Instale o módulo Az.Network mais recente do Azure PowerShell usando este comando:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parâmetros de implantação
- resourceGroupName: [obrigatório] Esse parâmetro especifica o nome do grupo de recursos em que o gerenciador de rede virtual e as redes virtuais de exemplo serão implantadas.
- location: [obrigatório] Esse parâmetro especifica o local dos recursos a serem implantados.
-
networkGroupMembershipType: [opcional] Esse parâmetro especifica o tipo de associação do Grupo de Rede a ser implantado. O padrão é
static, mas a associação de grupo dinâmico pode ser usada especificandodynamic.
Observação
Escolher a associação de grupo dinâmico implanta uma Azure Policy para gerenciar a associação, exigindo mais permissões.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Verificar a implantação da configuração
Use a seção Gerenciador de Rede de cada rede virtual para verificar se você implantou sua configuração:
Acesse a rede virtual vnet-learn-prod-{location}-spoke001.
Em Configurações, selecione Gerenciador de Rede.
Na guia Configurações de conectividade, verifique se cc-learn-prod-{location}-mesh001 aparece na lista.
Repita as etapas anteriores em vnet-learn-prod-{location}-spoke004– você deve ver que vnet-learn-prod-{location}-spoke004 foi excluída da configuração de conectividade.
Limpar os recursos
Se você não precisar mais do Gerenciador de Rede Virtual do Azure e das redes virtuais associadas, poderá removê-lo excluindo o grupo de recursos e seus recursos.
- No portal do Azure, navegue até o grupo de recursos – resource-group.
- Selecione resource-group e selecione Excluir grupo de recursos.
- Na janela Excluir um grupo de recursos, confirme se deseja excluir inserindo resource-group na caixa de texto e selecione Excluir.
- Se você usou a Associação de Grupo de Rede Dinâmica, exclua a Definição e Atribuição da Azure Policy implantados navegando até a Assinatura no Portal e selecionando as Políticas. No Policy, localize a Atribuição chamada
AVNM quickstart dynamic group membership Policye exclua-a. Faça o mesmo para a Definição chamadaAVNM quickstart dynamic group membership Policy.
Próximas etapas
Agora que você criou uma instância do Gerenciador de Rede Virtual do Azure, aprenda como bloquear o tráfego de rede usando uma configuração de administrador de segurança: