Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Ga aan de slag met Azure Virtual Network Manager door Bicep te gebruiken om connectiviteit voor al uw virtuele netwerken te beheren.
In deze quickstart implementeert u drie virtuele netwerken en gebruikt u Azure Virtual Network Manager om een mesh-netwerktopologie te maken. Vervolgens controleert u of de connectiviteitsconfiguratie is toegepast.
Bicep-bestandsmodules
De Bicep-oplossing voor dit voorbeeld is onderverdeeld in modules om implementaties mogelijk te maken voor zowel een resourcegroep als een abonnementsbereik. De onderstaande bestandssecties zijn de unieke onderdelen voor Virtual Network Manager. Naast de onderstaande secties implementeert de oplossing virtuele netwerken, een door de gebruiker toegewezen identiteit en een roltoewijzing.
Configuraties voor Virtual Network Manager, netwerkgroepen en connectiviteit
Virtuele Netwerkbeheerder
@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: []
}
}
}
Netwerkgroepen
De oplossing ondersteunt het maken van statische lidmaatschapsnetwerkgroepen of dynamische lidmaatschapsnetwerkgroepen. De groep statisch lidmaatschapsnetwerk specificeert de leden op basis van de id van het virtuele netwerk
Groep statisch lidmaatschapsnetwerk
@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
}
}
}
Netwerkgroep dynamisch lidmaatschap
@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'
}
}
Connectiviteitsconfiguratie
De connectiviteitsconfiguratie koppelt de netwerkgroep aan de opgegeven netwerktopologie.
@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'
}
}
Implementatiescript
Als u de configuratie wilt implementeren in de doelnetwerkgroep, wordt een implementatiescript gebruikt om de Deploy-AzNetworkManagerCommit PowerShell-opdracht aan te roepen. Het implementatiescript heeft een identiteit met voldoende machtigingen nodig om het PowerShell-script uit te voeren voor Virtual Network Manager, dus het Bicep-bestand maakt een door de gebruiker beheerde identiteit en verleent het de rol Inzender voor de doelresourcegroep. Zie Implementatiescripts gebruiken in ARM-sjablonen voor meer informatie over implementatiescripts en bijbehorende identiteiten.
@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: $_"
}
'''
}
}
Dynamisch groepslidmaatschapsbeleid voor netwerken
Wanneer de implementatie is geconfigureerd voor het gebruik van dynamic netwerkgroepslidmaatschap, implementeert de oplossing ook een Azure Policy-definitie en -toewijzing. De beleidsdefinitie wordt hieronder weergegeven.
@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
}
}
}
}
}
De Bicep-oplossing implementeren
Vereisten voor implementatie
- Een Azure-account met een actief abonnement. Gratis een account maken
- Machtigingen voor het maken van een beleidsdefinitie en beleidstoewijzing op het bereik van het doelabonnement (dit is vereist wanneer u de implementatieparameter
networkGroupMembershipType=Dynamicgebruikt om de vereiste beleidsresources voor het lidmaatschap van de netwerkgroep te implementeren. De standaardwaarde isstatic, waarmee geen beleid wordt geïmplementeerd.
De Bicep-oplossing downloaden
- Download een Zip-archief van de MSPNP-opslagplaats via deze koppeling
- Pak het gedownloade Zip-bestand uit en navigeer in uw terminal naar de
solutions/avnm-mesh-connected-group/bicepmap.
U kunt ook de git opslagplaats klonen met git clone https://github.com/mspnp/samples.git
Verbinding maken met Azure
Aanmelden bij uw Azure-account en uw abonnement selecteren
Meld u aan bij uw Azure-account om uw configuratie te starten:
Connect-AzAccount
Maak vervolgens verbinding met uw abonnement:
Set-AzContext -Subscription <subscription name or id>
De Azure PowerShell-module installeren
Installeer de nieuwste Az.Network Azure PowerShell-module met behulp van deze opdracht:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Implementatieparameters
- resourceGroupName: [vereist] Met deze parameter geeft u de naam op van de resourcegroep waarin de virtuele netwerkbeheerder en voorbeeld van virtuele netwerken worden geïmplementeerd.
- locatie: [vereist] Met deze parameter geeft u de locatie op van de resources die moeten worden geïmplementeerd.
-
networkGroupMembershipType: [optioneel] Met deze parameter geeft u het type lidmaatschap van de netwerkgroep op dat moet worden geïmplementeerd. De standaardwaarde is
static, maar dynamisch groepslidmaatschap kan worden gebruikt door op tedynamicgeven.
Notitie
Als u dynamisch groepslidmaatschap kiest, wordt een Azure Policy geïmplementeerd om het lidmaatschap te beheren, waarvoor meer machtigingen zijn vereist.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Configuratie-implementatie controleren
Gebruik de sectie Netwerkbeheer voor elk virtueel netwerk om te controleren of u uw configuratie hebt geïmplementeerd:
Ga naar het virtuele netwerk vnet-learn-prod-{location}-spoke001 .
Selecteer Netwerkbeheer onder Instellingen.
Controleer op het tabblad Connectiviteitsconfiguraties of cc-learn-prod-{location}-mesh001 wordt weergegeven in de lijst.
Herhaal de vorige stappen op vnet-learn-prod-{location}-spoke004--u ziet dat de vnet-learn-prod-{location}-spoke004 is uitgesloten van de connectiviteitsconfiguratie.
Resources opschonen
Als u Azure Virtual Network Manager en de bijbehorende virtuele netwerken niet meer nodig hebt, kunt u deze verwijderen door de resourcegroep en de bijbehorende resources te verwijderen.
- Blader in Azure Portal naar uw resourcegroep - resourcegroep.
- Selecteer de resourcegroep en selecteer Resourcegroep verwijderen.
- Bevestig in het venster Een resourcegroep verwijderen dat u wilt verwijderen door de resourcegroep in het tekstvak in te voeren en selecteer Vervolgens Verwijderen.
- Als u dynamisch netwerkgroepslidmaatschap hebt gebruikt, verwijdert u de geïmplementeerde Azure Policy-definitie en -toewijzing door naar het abonnement in de portal te navigeren en het beleid te selecteren. Zoek in Beleid de toewijzing met de naam
AVNM quickstart dynamic group membership Policyen verwijder deze en doe hetzelfde voor de definitie met de naamAVNM quickstart dynamic group membership Policy.
Volgende stappen
Nu u een Exemplaar van Azure Virtual Network Manager hebt gemaakt, leert u hoe u netwerkverkeer blokkeert met behulp van een configuratie van een beveiligingsbeheerder: