Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Comece a usar o 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 Azure Virtual Network Manager para criar uma topologia de rede mesh. Em seguida, verifique se a configuração de conectividade foi aplicada.
Módulos de arquivo Bicep
A solução Bicep para este exemplo é dividida em módulos para permitir implantações em um grupo de recursos e escopo de assinatura. As seções de arquivo detalhadas abaixo são os componentes exclusivos para o Virtual Network Manager. Além das seções detalhadas abaixo, a solução implanta Redes Virtuais, uma Identidade Atribuída ao Usuário e uma Atribuição de Função.
Gerenciador de rede virtual, grupos de rede e configurações de conectividade
Gestor 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 suporta a 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 por ID de Rede Virtual
Grupo de Rede de Membros Estáticos
@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 da Rede de Membros Dinâmicos
@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 PowerShell. O Script de Implantação precisa de uma identidade com permissões suficientes para executar o script do PowerShell no Gerenciador de Rede Virtual, 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, consulte Usar scripts de implantação em modelos 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 dynamic a associação a grupos de rede, a solução também implanta uma Definição e Atribuição de Política do Azure. 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
}
}
}
}
}
Implantar a solução Bicep
Pré-requisitos de implantação
- Uma conta do Azure com uma subscrição 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 associação ao Grupo de Rede. O padrão éstatic, que não implanta uma política.
Faça o download da Solução Bicep
- Faça o download de um arquivo Zip do repositório MSPNP neste link
- Extraia o arquivo Zip baixado e, no seu terminal, navegue até o
solutions/avnm-mesh-connected-group/bicepdiretório.
Como alternativa, você pode usar git para clonar o repositório com git clone https://github.com/mspnp/samples.git
Ligar ao Azure
Inicie sessão na sua conta do Azure e selecione a sua subscrição
Para iniciar a configuração, inicie sessão na sua conta do Azure:
Connect-AzAccount
Em seguida, conecte-se à sua assinatura:
Set-AzContext -Subscription <subscription name or id>
Instalar o módulo do Azure PowerShell
Instale o módulo Az.Network Azure PowerShell mais recente usando este comando:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parâmetros de implantação
- resourceGroupName: [required] Este parâmetro especifica o nome do grupo de recursos onde o gerenciador de rede virtual e as redes virtuais de exemplo serão implantadas.
- location: [required] Este parâmetro especifica o local dos recursos a serem implantados.
-
networkGroupMembershipType: [optional] Este parâmetro especifica o tipo de associação ao Grupo de Rede a ser implantado. O padrão é
static, mas a associação ao grupo dinâmico pode ser usada especificandodynamic.
Nota
Escolher a associação de grupo dinâmico implanta uma Política do Azure 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 Network Manager para cada rede virtual para verificar se você implantou sua configuração:
Vá para a rede virtual vnet-learn-prod-{location}-spoke001 .
Em Definições, selecione Gestor 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 o vnet-learn-prod-{location}-spoke004 está excluído da configuração de conectividade.
Clean up resources (Limpar 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é seu grupo de recursos - grupo de recursos.
- Selecione grupo de recursos e selecione Excluir grupo de recursos.
- Na janela Excluir um grupo de recursos, confirme se deseja excluir inserindo grupo de recursos 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 de Política do Azure implantada navegando até a Assinatura no Portal e selecionando as Políticas. Em Políticas, localize a Atribuição nomeada
AVNM quickstart dynamic group membership Policye exclua-a e, em seguida, faça o mesmo para a Definição nomeadaAVNM quickstart dynamic group membership Policy.
Próximos passos
Agora que você criou uma instância do Gerenciador de Rede Virtual do Azure, saiba como bloquear o tráfego de rede usando uma configuração de administrador de segurança: