Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начните работу с Диспетчер виртуальных сетей Azure, используя Bicep для управления сетевой связностью всех ваших виртуальных сетей.
В этом кратком руководстве вы развернете три виртуальные сети и используете Диспетчер виртуальных сетей Azure для создания топологии ячеистой сети. Затем убедитесь, что была применена конфигурация подключения.
Решение Bicep для этого примера разбито на модули для поддержки развертывания как на уровне группы ресурсов, так и на уровне подписки. В следующих разделах описываются компоненты, уникальные для Диспетчер виртуальных сетей Azure. Кроме этих компонентов, решение разворачивает виртуальные сети, присваиваемый пользователю идентификатор и назначение ролей.
Определите ресурс менеджера виртуальной сети
Этот ресурс создаёт экземпляр Microsoft.Network/networkManagers с версией API 2022-09-01, который реализует подключённую группу для обеспечения связи между виртуальными сетями. Задайте для networkManagerScopes подписки или группы управления, которыми управляет экземпляр, и оставьте Connectivity в networkManagerScopeAccesses, чтобы экземпляр мог развернуть конфигурации подключения.
@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: []
}
}
}
Определить статические и динамические сетевые группы
Решение поддерживает либо статическую группу сети членства, либо динамическую группу сети членства. Параметр networkGroupMembershipType определяет, какой из них будет развернут; создается только один из двух ресурсов.
Сетевая группа со статическим членством
Статический сетевой групповой ресурс в Microsoft.Network/networkManagers/networkGroups версии 2022-09-01API явно называет своих членов. Вложенные ресурсы staticMembers добавляют виртуальные сети spoke A, B и C, а также виртуальную сеть hub, используя идентификатор ресурса. Чтобы указать собственные виртуальные сети, измените параметры spokeNetworkGroupMembers и 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
}
}
}
Сетевая группа с динамическим членством
Ресурс группы динамической сети объявляет отсутствие участников. Членство заполняется определением Политика Azure, описанным в разделе Define the dynamic membership policy.
@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'
}
}
Определите конфигурацию связности сетки
Ресурс конфигурации подключения Microsoft.Network/networkManagers/connectivityConfigurations в версии API 2022-09-01 связывает сетевую группу с топологией ячеистой сети. Свойство appliesToGroups ссылается на развернутую вами сетевую группу, а connectivityTopology вы установили в значение 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'
}
}
Зафиксируйте конфигурацию с помощью скрипта развертывания
Для развертывания конфигурации в целевой сетевой группе используйте скрипт развертывания, вызывающий Deploy-AzNetworkManagerCommit команду PowerShell. Скрипт развертывания требует идентичности с достаточными правами для запуска скрипта PowerShell на виртуальном сетевом менеджере. Файл Bicep создает управляемое пользователем удостоверение и предоставляет ей роль участника в целевой группе ресурсов. Для получения дополнительной информации о скриптах развертывания и связанных идентичностях см. раздел «Использование скриптов развертывания в шаблонах ARM».
Следующий ресурс является ресурсом Microsoft.Resources/deploymentScripts версии API 2020-10-01. Он запускает встроенный скрипт PowerShell, который входит в систему с идентификатором, назначенным пользователем, и вызывает Deploy-AzNetworkManagerCommit. Измените свойства azPowerShellVersion, retentionIntervalи timeout для вашего собственного развертывания. Измените значения, передаваемые через arguments: имя диспетчера сети, целевые расположения, идентификаторы конфигурации, идентификатор подписки, тип конфигурации и имя группы ресурсов.
@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: $_"
}
'''
}
}
Определите политику динамического членства
Когда вы настраиваете развертывание для использования членства в группе сети dynamic, решение также развертывает определение политики Политика Azure и ее назначение.
Следующий ресурс является ресурсом Microsoft.Authorization/policyDefinitions версии API 2021-06-01. Он использует режим политики Microsoft.Network.Data и эффект addToNetworkGroup, который добавляет соответствующие виртуальные сети в сетевую группу, определённую с помощью networkGroupId. Правило политики применяется к виртуальным сетям, которые имеют тег _avnm_quickstart_deployment и находятся в группе ресурсов этого примера. Измените название тега и фильтр группы ресурсов в like состоянии, чтобы они соответствовали вашей среде.
@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
}
}
}
}
}
Развертывание решения Bicep
Предварительные требования к развертыванию
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Разрешения на создание определения политики и назначения политик в целевой области подписки. Эти разрешения необходимы при использовании параметра развертывания
networkGroupMembershipType=Dynamicдля развертывания необходимых ресурсов политики для членства в сетевой группе. По умолчанию используетсяstatic, что не развертывает политику. - Все ресурсы этого решения доступны в репозитории GitHub Azure Samples. Вы можете скачать решение Bicep из репозитория или клонировать репозиторий на локальный компьютер.
Скачайте решение Bicep
- Скачайте ZIP-архив примера репозитория по этой ссылке.
- Извлеките скачанный ZIP-файл. В терминале перейдите в извлеченный
avnm-mesh-connected-groupкаталог. Файлы Bicep для этого решения находятся в подкаталогеbicep.
Кроме того, можно использовать git для клонирования репозитория:
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Подключение к Azure
Войдите в учетную запись Azure и выберите подписку.
Чтобы начать настройку, войдите в учетную запись Azure:
Connect-AzAccount
Затем подключитесь к подписке:
Set-AzContext -Subscription <subscription name or id>
Установка модуля Azure PowerShell
Установите последний модуль Az.Network Azure PowerShell с помощью следующей команды:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Параметры развертывания
- resourceGroupName: [обязательно] Имя группы ресурсов, в которой требуется развернуть диспетчер виртуальных сетей и примеры виртуальных сетей.
- местоположение: [обязательный] Местоположение для развертывания ресурсов.
-
networkGroupMembershipType: [необязательно] Тип членства в группе сети для развертывания. Значение по умолчанию
static— но вы можете использоватьdynamicдля динамического членства в группах.
Примечание.
Выбор динамического членства в группах развертывает Политика Azure для управления членством, что требует дополнительных разрешений.
Развертывание по умолчанию с членством в статической группе сети
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Развертывание с членством в динамической группе сети
Чтобы использовать Политика Azure для динамического управления составом сетевой группы, включите в параметры развертывания параметр networkGroupMembershipType со значением dynamic.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
Проверка развертывания конфигурации
Используйте раздел Network Manager для каждой виртуальной сети, чтобы убедиться, что вы развернули конфигурацию:
Перейдите к виртуальной сети vnet-learn-prod-{location}-spoke001 .
В разделе "Параметры" выберите Network Manager.
На вкладке "Конфигурации подключения" убедитесь, что в списке появится cc-learn-prod-{location}-mesh001 .
Повторите предыдущие шаги для vnet-learn-prod-{location}-spoke004 — вы должны увидеть, что vnet-learn-prod-{location}-spoke004 исключена из конфигурации связности.
Очистка ресурсов
Если вам больше не нужно Диспетчер виртуальных сетей Azure и связанных виртуальных сетей, удалите их, удалив группу ресурсов и ее ресурсы.
- На портале Azure перейдите к группе ресурсов — resource-group.
- Выберите группу ресурсов и выберите " Удалить группу ресурсов".
- В разделе "Удаление группы ресурсов" убедитесь, что вы хотите удалить, введя группу ресурсов в текстовом поле, а затем нажмите кнопку "Удалить".
- Если вы использовали динамическое членство в сетевой группе, удалите развёрнутые определение и назначение политики Azure, перейдите к подписке в портале и выберите раздел Политики. В Политиках найдите назначение с именем
AVNM quickstart dynamic group membership Policyи удалите его, затем сделайте то же самое для определения с именемAVNM quickstart dynamic group membership Policy.
Следующие шаги
Теперь, когда вы создали экземпляр Диспетчер виртуальных сетей Azure, узнайте, как заблокировать сетевой трафик с помощью конфигурации администратора безопасности: