Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начало работы с диспетчером виртуальная сеть Azure с помощью Bicep для управления подключением ко всем виртуальным сетям.
В этом кратком руководстве описано, как развернуть три виртуальные сети и использовать Диспетчер виртуальная сеть Azure для создания топологии сети сетки. Затем убедитесь, что была применена конфигурация подключения.
Модули файлов Bicep
Решение Bicep для этого примера разбито на модули, чтобы включить развертывания как в группе ресурсов, так и в области подписки. Перечисленные ниже разделы файлов являются уникальными компонентами для диспетчера виртуальных сетей. Помимо разделов, описанных ниже, решение развертывает виртуальная сеть, удостоверение, назначенное пользователем удостоверение и назначение ролей.
виртуальная сеть Manager, сетевые группы и конфигурации подключения
Диспетчер виртуальных сетей
@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: []
}
}
}
Сетевые группы
Решение поддерживает создание статических групп сети членства или динамических групп членства. Статическую группу членства указывает ее члены по идентификатору виртуальная сеть
Статическое членство в группе
@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
}
}
}
Группа сети динамического членства
@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'
}
}
Конфигурация подключения
Конфигурация подключения связывает группу сети с указанной топологией сети.
@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.
@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 определение и назначение. Ниже показано определение политики.
@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, который не развертывает политику.
Скачивание решения Bicep
- Скачивание ZIP-архива репозитория MSPNP по этой ссылке
- Извлеките скачанный ZIP-файл и в терминале перейдите в
solutions/avnm-mesh-connected-group/bicepкаталог.
Кроме того, можно использовать git для клонирования репозитория с помощью git clone https://github.com/mspnp/samples.git
Подключение к 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: [обязательно] Этот параметр указывает имя группы ресурсов, в которой будет развернут диспетчер виртуальных сетей и примеры виртуальных сетей.
- location: [обязательный] Этот параметр указывает расположение ресурсов для развертывания.
-
networkGroupMembershipType: [необязательно] Этот параметр указывает тип членства в группе сети для развертывания. По умолчанию
staticиспользуется динамическое членство в группах, указываяdynamic.
Примечание.
Выбор динамического членства в группах развертывает Политика Azure для управления членством, требуя дополнительных разрешений.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Проверка развертывания конфигурации
Используйте раздел Network Manager для каждой виртуальной сети, чтобы убедиться, что вы развернули конфигурацию:
Перейдите к виртуальной сети vnet-learn-prod-{location}-spoke001 .
В разделе "Параметры" выберите Network Manager.
На вкладке "Конфигурации подключения" убедитесь, что в списке появится cc-learn-prod-{location}-mesh001 .
Повторите предыдущие шаги в vnet-learn-prod-{location}-spoke004-вы увидите, что виртуальная сеть-learn-prod-{location}-spoke004 исключена из конфигурации подключения.
Очистка ресурсов
Если вам больше не нужен диспетчер виртуальная сеть Azure и связанные виртуальные сети, ее можно удалить, удалив группу ресурсов и ее ресурсы.
- В портал Azure перейдите к группе ресурсов — группе ресурсов.
- Выберите группу ресурсов и выберите " Удалить группу ресурсов".
- В окне "Удалить группу ресурсов" убедитесь, что вы хотите удалить, введя группу ресурсов в текстовом поле, а затем нажмите кнопку "Удалить".
- Если вы использовали членство в динамических группах сети, удалите развернутые Политика Azure определение и назначение, перейдя к подписке на портале и выбрав политики. В политиках найдите и удалите его, а затем выполните то же самое для именованного
AVNM quickstart dynamic group membership Policy.
Следующие шаги
Теперь, когда вы создали экземпляр Azure виртуальная сеть Manager, узнайте, как заблокировать сетевой трафик с помощью конфигурации администратора безопасности: