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 diesem Schnellstart stellen Sie drei virtuelle Netzwerke bereit und erstellen mit Azure Virtual Network Manager eine Cloudnetzwerktopologie. Anschließend überprüfen Sie, ob die Konnektivitätskonfiguration angewandt wurde.
Bicep-Dateimodule
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 unten beschriebenen Dateiabschnitte sind die eindeutigen Komponenten für Virtual Network Manager. Zusätzlich zu den unten aufgeführten Abschnitten stellt die Lösung virtuelle Netzwerke, eine vom Benutzer zugewiesene Identität und eine Rollenzuweisung bereit.
Virtual Network-Manager, Netzwerkgruppen und Konnektivitätskonfigurationen
Virtueller Netzwerkmanager
@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: []
}
}
}
Netzwerkgruppen
Die Lösung unterstützt das Erstellen statischer Mitgliedschaftsnetzwerkgruppen oder dynamischer Mitgliedschaftsnetzwerkgruppen. Die Netzwerkgruppe der statischen Mitgliedschaft gibt ihre Mitglieder nach Virtual Network-ID an.
Netzwerkgruppe für statische Mitgliedschaft
@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
}
}
}
Netzwerkgruppe für dynamische Mitgliedschaft
@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'
}
}
Konfiguration der Konnektivität
Die Konnektivitätskonfiguration ordnet die Netzwerkgruppe der angegebenen Netzwerktopologie zu.
@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'
}
}
Bereitstellungsskript
Um die Konfiguration für die Zielnetzwerkgruppe bereitzustellen, wird ein Bereitstellungsskript verwendet, um den PowerShell-Befehl Deploy-AzNetworkManagerCommit
aufzurufen. Das Bereitstellungsskript benötigt eine Identität mit ausreichenden Berechtigungen zum Ausführen des PowerShell-Skripts für den Virtuellen Netzwerk-Manager, sodass die Bicep-Datei eine vom Benutzer verwaltete Identität erstellt und ihm die Rolle "Mitwirkender" für die Zielressourcengruppe gewährt. Weitere Informationen zu Bereitstellungsskripts und zugehörigen Identitäten finden Sie unter Verwenden von Bereitstellungsskripts in ARM-Vorlagen.
@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: $_"
}
'''
}
}
Richtlinie für dynamische Netzwerkgruppenmitglied
Wenn die Bereitstellung für die Verwendung der dynamic
-Netzwerkgruppenmitgliedschaft konfiguriert ist, stellt die Lösung auch eine Azure Policy-Definition und Zuweisung bereit. Die Richtliniendefinition wird unten gezeigt.
@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
}
}
}
}
}
Bereitstellen der Bicep-Datei
Bereitstellungsvoraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Berechtigungen zum Erstellen einer Richtliniendefinition und Richtlinienzuweisung im Zielabonnementbereich (dies ist erforderlich, wenn der Bereitstellungsparameter
networkGroupMembershipType=Dynamic
zum Bereitstellen der erforderlichen Richtlinienressourcen für die Netzwerkgruppenmitgliedschaft verwendet wird. Der Standardwert iststatic
, wodurch keine Richtlinie bereitgestellt wird.
Herunterladen der Bicep-Lösung
- Laden Sie unter diesem Link ein Zip-Archiv des MSPNP-Repositorys herunter.
- Extrahieren Sie die heruntergeladene ZIP-Datei, und navigieren Sie in Ihrem Terminal zum Verzeichnis
solutions/avnm-mesh-connected-group/bicep
.
Alternativ können Sie git
verwenden, um das Repository mit git clone https://github.com/mspnp/samples.git
zu klonen.
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: [erforderlich] Dieser Parameter gibt den Namen der Ressourcengruppe an, in der der Virtuelle Netzwerk-Manager und die virtuellen Beispielnetzwerke bereitgestellt werden.
- location: [erforderlich] Dieser Parameter gibt den Speicherort der bereitzustellenden Ressourcen an.
-
networkGroupMembershipType: [optional] Dieser Parameter gibt den Typ der Netzwerkgruppenmitgliedschaft an, die bereitgestellt werden soll. Der Standardwert ist
static
, aber die dynamische Gruppenmitgliedschaft kann verwendet werden, indemdynamic
angegeben wird.
Hinweis
Wenn Sie die dynamische Gruppenmitgliedschaft auswählen, wird Azure Policy zum Verwalten der Mitgliedschaft bereitgestellt, sodass weitere Berechtigungen erforderlich sind.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
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, können Sie sie entfernen, 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 im Fenster Ressourcengruppe löschen, dass Sie die Gruppe löschen möchten, indem Sie die in das Textfeld eingeben resource-group eingeben und dann Löschen auswählen.
- Wenn Sie die Dynamische Netzwerkgruppenmitgliedschaft verwendet haben, löschen Sie die bereitgestellten Azure Policy-Definition und Zuweisung, indem Sie im Portal zum Abonnement navigieren und die Richtlinien auswählen. Suchen Sie unter Richtlinien nach der Zuweisung
AVNM quickstart dynamic group membership Policy
und löschen Sie sie, und führen Sie denselben Vorgang für die Definition namensAVNM quickstart dynamic group membership Policy
aus.
Nächste Schritte
Nachdem Sie die Azure Virtual Network Manager-Instanz erstellt haben, informieren Sie sich, wie Sie den Netzwerkdatenverkehr mithilfe einer Sicherheitsadministratorkonfiguration blockieren: