Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
A solução Bicep para este exemplo está dividida em módulos para permitir implementações ao nível do grupo de recursos e da subscrição. As secções seguintes descrevem os componentes que são únicos do Azure Virtual Network Manager. Para além destes componentes, a solução implementa redes virtuais, uma identidade atribuída pelo utilizador e uma atribuição de papéis.
Defina o recurso de gestor de rede virtual
Este recurso cria a instância Microsoft.Network/networkManagers, na versão 2022-09-01 da API, que implementa o grupo conectado para conectividade entre redes virtuais. Defina networkManagerScopes para as subscrições ou grupos de gestão que a instância gere e mantenha Connectivity em networkManagerScopeAccesses para que a instância possa implementar configurações de conectividade.
@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: []
}
}
}
Definir grupos de redes estáticos e dinâmicos
A solução suporta um grupo de rede de membros estático ou um grupo de rede de membros dinâmico. O networkGroupMembershipType parâmetro seleciona qual é implementado; apenas um dos dois recursos é criado.
Grupo de rede de membros estáticos
O recurso estático do grupo de rede, Microsoft.Network/networkManagers/networkGroups na versão 2022-09-01da API, nomeia explicitamente os seus membros. Os recursos aninhados staticMembers adicionam redes virtuais spoke A, B e C, além da rede virtual hub, por ID de recurso. Para direcionar as suas próprias redes virtuais, altere os parâmetros spokeNetworkGroupMembers e hubVnetId.
@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 dinâmico de rede de membros
O recurso de grupo de rede dinâmica declara que não há membros. A associação é determinada pela definição de Azure Policy descrita em Definir a política 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'
}
}
Defina a configuração da conectividade em malha
O recurso de configuração de conectividade, Microsoft.Network/networkManagers/connectivityConfigurations na versão 2022-09-01da API , associa o grupo de rede à topologia da rede em malha. A appliesToGroups propriedade refere-se ao grupo de rede que implementou, e define connectivityTopology para Mesh.
@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'
}
}
Submeta a configuração utilizando um script de implantação
Para implantar a configuração no grupo de rede alvo, utilize um script de deployment que chame o Deploy-AzNetworkManagerCommit comando PowerShell. O script de implementação precisa de uma identidade com permissões suficientes para executar o script PowerShell contra o gestor de rede virtual. O ficheiro Bicep cria uma identidade gerida pelo utilizador e concede-lhe o papel de Contribuidor no grupo de recursos alvo. Para mais informações sobre scripts de implementação e identidades associadas, consulte Usar scripts de implementação em templates ARM.
O recurso seguinte é um recurso Microsoft.Resources/deploymentScripts na versão da API 2020-10-01. Executa um script PowerShell inline que inicia sessão com a identidade atribuída pelo utilizador e chama Deploy-AzNetworkManagerCommit. Altere as propriedades azPowerShellVersion, retentionInterval e timeout para a sua própria implementação. Altere os valores passados através de arguments: o nome do gestor de redes, as localizações de destino, os IDs de configuração, o ID da subscrição, o tipo de configuração e o nome do grupo de recursos.
@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: $_"
}
'''
}
}
Defina a política dinâmica de adesão
Quando configura a implementação para utilizar a pertença a grupos de rede dynamic, a solução também implementa uma definição e uma atribuição de Política do Azure.
O recurso seguinte é um recurso Microsoft.Authorization/policyDefinitions na versão da API 2021-06-01. Utiliza o Microsoft.Network.Data modo de política e o addToNetworkGroup efeito, que adiciona redes virtuais correspondentes ao grupo de redes identificado por networkGroupId. A regra de política aplica-se a redes virtuais que têm a etiqueta _avnm_quickstart_deployment e que se encontram no grupo de recursos deste exemplo. Muda o nome da etiqueta e o filtro do grupo de recursos na like condição para corresponder ao teu próprio ambiente.
@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
}
}
}
}
}
Implementar a solução Bicep
Pré-requisitos de implementaçã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 uma Atribuição de Política no âmbito de subscrição alvo. Precisa destas permissões ao usar o parâmetro
networkGroupMembershipType=Dynamicde implementação para implementar os recursos de políticas necessários para a pertença a um Grupo de Rede. O padrão éstatic, que não implementa uma Política. - Todos os recursos desta solução estão disponíveis no repositório Azure Samples GitHub. Pode descarregar a solução Bicep a partir do repositório ou clonar o repositório para a sua máquina local.
Descarregue a solução Bicep
- Descarregue um arquivo ZIP do repositório de exemplo neste link.
- Extrai o ficheiro ZIP descarregado. No teu terminal, vai ao diretório extraído
avnm-mesh-connected-group. Os ficheiros Bicep desta solução encontram-se nobicepsubdiretório.
Alternativamente, podes usar git para clonar o repositório:
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Ligar ao Azure
- PowerShell
- CLI do 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: [obrigatório] O nome do grupo de recursos onde pretende implementar o gestor de redes virtuais e redes virtuais de exemplo.
- Localização: [obrigatório] O local para os recursos a serem implantados.
-
networkGroupMembershipType: [opcional] O tipo de membro do Grupo de Rede a implementar. O padrão é
static, mas podes usardynamicpara pertença dinâmica a grupos.
Nota
Escolher a adesão dinâmica ao grupo implementa uma Azure Policy para gerir a membresia, o que requer mais permissões.
- PowerShell
- CLI do Azure
Implementação por defeito com pertença estática a grupos de rede
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Implementação com pertença a grupos de rede dinâmica
Para usar o Azure Policy para gerir dinamicamente a pertença ao grupo de rede, inclua o parâmetro networkGroupMembershipType de implementação com um valor de dynamic.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
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:
Aceda à 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.
Limpar recursos
Se já não precisar do Azure Virtual Network Manager e das redes virtuais associadas, remova-as eliminando o grupo de recursos e os 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.
- Em Eliminar um grupo de recursos, confirme que quer eliminar introduzindo grupo de recursos na caixa de texto e depois selecione Eliminar.
- Se usou Dynamic Network Group Membership, elimine a Azure Policy Definition and Assignment implementada navegando até à Subscrição no portal e selecionando as Políticas.
Em Políticas, encontre a Atribuição nomeada
AVNM quickstart dynamic group membership Policye apague-a, depois faça o mesmo para a Definição chamadaAVNM quickstart dynamic group membership Policy.
Próximos passos
Agora que criou uma instância do Azure Virtual Network Manager, aprenda a bloquear o tráfego de rede usando uma configuração de administrador de segurança: