Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erste Schritte mit Azure Virtual Network Manager mithilfe von Bicep zum Verwalten der Konnektivität für alle virtuellen Netzwerke.
In dieser Schnellstartanleitung stellen Sie drei virtuelle Netzwerke bereit und erstellen Sie mit Azure Virtual Network Manager eine Mesh-Netzwerktopologie. Anschließend überprüfen Sie, ob die Konnektivitätskonfiguration angewandt wurde.
Die Bicep-Lösung für dieses Beispiel ist in Module unterteilt, um Bereitstellungen sowohl im Ressourcengruppen- als auch im Abonnementbereich zu ermöglichen. Die folgenden Abschnitte beschreiben die Komponenten, die einzigartig für den Azure Virtual Network Manager sind. Zusätzlich zu diesen Komponenten stellt die Lösung virtuelle Netzwerke, eine vom Benutzer zugewiesene Identität und eine Rollenzuweisung bereit.
Definiere die virtuelle Netzwerkmanager-Ressource
Diese Ressource erstellt die Microsoft.Network/networkManagers Instanz in API-Version 2022-09-01, die die verbundene Gruppe für die intervirtuelle Netzwerkverbindung implementiert. Lege networkManagerScopes für die Abonnements oder Verwaltungsgruppen fest, die von der Instanz verwaltet werden, und belasse Connectivity in networkManagerScopeAccesses, damit die Instanz Konnektivitätskonfigurationen bereitstellen kann.
@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: []
}
}
}
Definiere statische und dynamische Netzwerkgruppen
Die Lösung unterstützt entweder eine statische Mitgliedernetzwerkgruppe oder eine dynamische Mitgliedernetzwerkgruppe. Der Parameter networkGroupMembershipType wählt aus, welches bereitgestellt wird; es wird nur eine der beiden Ressourcen erstellt.
Statische Mitgliedernetzwerkgruppe
Die statische Netzwerkgruppen-Ressource Microsoft.Network/networkManagers/networkGroups nennt in der API-Version 2022-09-01explizit ihre Mitglieder. Die verschachtelten staticMembers-Ressourcen fügen die virtuellen Spoke-Netzwerke A, B und C sowie das virtuelle Hub-Netzwerk nach Ressourcen-ID hinzu. Um Ihre eigenen virtuellen Netzwerke gezielt anzusprechen, ändern Sie die Parameter spokeNetworkGroupMembers und 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
}
}
}
Dynamische Mitgliedernetzwerkgruppe
Die Ressource der dynamischen Netzwerkgruppe hat keine Mitglieder. Die Mitgliedschaft wird durch die Azure Policy-Definition ausgefüllt, die in Define the dynamic membership policy beschrieben ist.
@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'
}
}
Definiere die Mesh-Konnektivitätskonfiguration
Die Konnektivitätskonfigurationsressource Microsoft.Network/networkManagers/connectivityConfigurations verknüpft in API-Version 2022-09-01die Netzwerkgruppe mit der Mesh-Netzwerktopologie. Die Eigenschaft appliesToGroups verweist auf die Netzwerkgruppe, die du ausgerollt hast, und du setzt connectivityTopology auf 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'
}
}
Konfiguration mit einem Bereitstellungsskript übertragen
Um die Konfiguration auf die Zielnetzwerkgruppe zu übertragen, verwenden Sie ein Deployment-Skript, das den Deploy-AzNetworkManagerCommit PowerShell-Befehl aufruft. Das Deployment-Skript benötigt eine Identität mit ausreichenden Berechtigungen, um das PowerShell-Skript gegen den virtuellen Netzwerkmanager auszuführen. Die datei Bicep erstellt eine vom Benutzer verwaltete Identität und gewährt ihm die Rolle "Mitwirkender" für die Zielressourcengruppe. Weitere Informationen zu Bereitstellungsskripten und zugehörigen Identitäten finden Sie unter Bereitstellungsskripte in ARM-Vorlagen.
Die folgende Ressource ist eine Microsoft.Resources/deploymentScripts Ressource in API-Version 2020-10-01. Es führt ein inline-PowerShell-Skript aus, das sich mit der vom Benutzer zugewiesenen Identität anmeldet und aufruft Deploy-AzNetworkManagerCommit. Ändere die Eigenschaften azPowerShellVersion, retentionInterval, und timeout für deine eigene Bereitstellung. Ändern Sie die durchgegebenen argumentsWerte: den Namen des Netzwerkmanagers, Zielorte, Konfigurations-IDs, Abonnement-ID, Konfigurationstyp und Name der Ressourcengruppe.
@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: $_"
}
'''
}
}
Definieren Sie die dynamische Mitgliedschaftspolitik
Wenn Sie die Bereitstellung so konfigurieren, dass sie Netzwerkgruppenmitgliedschaft verwendetdynamic, bereitet die Lösung auch eine Azure Policy-Definition und -Zuweisung bereit.
Die folgende Ressource ist eine Microsoft.Authorization/policyDefinitions Ressource in API-Version 2021-06-01. Es verwendet den Microsoft.Network.Data Richtlinienmodus und den Effekt addToNetworkGroup, der übereinstimmende virtuelle Netzwerke der durch networkGroupId identifizierten Netzwerkgruppe hinzufügt. Die Richtlinienregel gilt für virtuelle Netzwerke, die mit dem Tag _avnm_quickstart_deployment versehen sind und sich in der Ressourcengruppe dieses Beispiels befinden. Ändere den Tag-Namen und den Ressourcengruppenfilter in der Bedingung like , damit er zu deiner eigenen Umgebung passt.
@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
}
}
}
}
}
Stellen Sie die Bicep-Lösung bereit
Voraussetzungen für die Bereitstellung
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Berechtigungen zum Erstellen einer Richtliniendefinition und einer Richtlinienzuweisung im Zielabonnementbereich. Sie benötigen diese Berechtigungen, wenn Sie den Bereitstellungsparameter
networkGroupMembershipType=Dynamicverwenden, um die erforderlichen Richtlinienressourcen für die Netzwerkgruppenmitgliedschaft bereitzustellen. Der Standardwert iststatic, wodurch keine Richtlinie bereitgestellt wird. - Alle Ressourcen in dieser Lösung sind im repository Azure Samples GitHub verfügbar. Sie können die Bicep Lösung aus dem Repository herunterladen oder das Repository auf Ihren lokalen Computer klonen.
Bicep-Lösung herunterladen
- Laden Sie ein ZIP-Archiv des Beispiel-Repositorys unter diesem Link herunter.
- Extrahieren Sie die heruntergeladene ZIP-Datei. Wechseln Sie in Ihrem Terminal zum extrahierten
avnm-mesh-connected-groupVerzeichnis. Die Bicep Dateien für diese Lösung befinden sich imbicepUnterverzeichnis.
Alternativ können Sie mit git das Repo klonen:
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Herstellen einer Verbindung mit Azure
Melden Sie sich bei Ihrem Azure-Konto an, und wählen Sie Ihr Abonnement aus.
Um mit der Konfiguration zu beginnen, melden Sie sich bei Ihrem Azure-Konto an:
Connect-AzAccount
Stellen Sie dann eine Verbindung mit Ihrem Abonnement her:
Set-AzContext -Subscription <subscription name or id>
Installieren des Azure PowerShell-Moduls
Installieren Sie das aktuelle Azure PowerShell-Modul Az.Network mithilfe des folgenden Befehls:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Bereitstellungsparameter
- resourceGroupName: [required] Der Name der Ressourcengruppe, in der Sie den virtuellen Netzwerk-Manager bereitstellen möchten, und beispiel für virtuelle Netzwerke.
- location: [required] Der Speicherort für die bereitzustellenden Ressourcen.
-
networkGroupMembershipType: [optional] Der Typ der bereitzustellenden Netzwerkgruppenmitgliedschaft. Der Standardwert ist
static, aber Sie könnendynamicfür die dynamische Gruppenmitgliedschaft verwenden.
Hinweis
Wenn Sie eine dynamische Gruppenmitgliedschaft auswählen, wird eine Azure Policy zum Verwalten der Mitgliedschaft bereitgestellt, was mehr Berechtigungen erfordert.
Standardbereitstellung mit statischer Netzwerkgruppenmitgliedschaft
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Bereitstellung mit dynamischer Netzwerkgruppenmitgliedschaft
Wenn Sie Azure Policy verwenden möchten, um die Mitgliedschaft in der Netzwerkgruppe dynamisch zu verwalten, geben Sie den Bereitstellungsparameter networkGroupMembershipType mit dem Wert dynamic an.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
Bestätigen der Konfigurationsbereitstellung
Überprüfen Sie für jedes virtuelle Netzwerk im Bereich Network Manager, ob Sie Ihre Konfiguration implementiert haben:
Wechseln Sie zum virtuellen Netzwerk vnet-learn-prod-{location}-spoke001.
Wählen Sie unter EinstellungenNetwork Manager aus.
Überprüfen Sie auf der Registerkarte Konnektivitätskonfigurationen, ob cc-learn-prod-{location}-mesh001 in der Liste angezeigt wird.
Wiederholen Sie die vorherigen Schritte unter vnet-learn-prod-{location}-spoke004. Sie sollten sehen, dass vnet-learn-prod-{location}-spoke004 von der Konnektivitätskonfiguration ausgeschlossen ist.
Bereinigen von Ressourcen
Wenn Sie Azure Virtual Network Manager und die zugehörigen virtuellen Netzwerke nicht mehr benötigen, entfernen Sie sie, indem Sie die Ressourcengruppe und die zugehörigen Ressourcen löschen.
- Navigieren Sie im Azure-Portal zu Ihrer Ressourcengruppe resource-Group.
- Wählen Sie resource-group und dann Ressourcengruppe löschen aus.
- Bestätigen Sie in "Löschen einer Ressourcengruppe", dass Sie löschen möchten, indem Sie die Ressourcengruppe in das Textfeld eingeben, und wählen Sie dann "Löschen" aus.
- Wenn Sie die Dynamische Netzwerkgruppenmitgliedschaft verwendet haben, löschen Sie die bereitgestellten Azure Policy Definition und Zuweisung, indem Sie zum Abonnement im Portal navigieren und die Richtlinien auswählen. Suchen Sie in Richtlinien die Zuweisung mit dem Namen
AVNM quickstart dynamic group membership Policy, und löschen Sie sie. Verfahren Sie dann ebenso mit der Definition mit dem NamenAVNM quickstart dynamic group membership Policy.
Nächste Schritte
Nachdem Sie nun eine Azure Virtual Network Manager Instanz erstellt haben, erfahren Sie, wie Sie den Netzwerkdatenverkehr mithilfe einer Sicherheitsadministratorkonfiguration blockieren: