Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Démarrez avec Azure Virtual Network Manager en utilisant Bicep pour gérer la connectivité de tous vos réseaux virtuels.
Dans ce guide de démarrage rapide, vous déployez trois réseaux virtuels et utiliser le gestionnaire de réseau virtuel Azure pour créer une topologie de réseau maillé. Vous vérifiez ensuite que la configuration de la connectivité a été appliquée.
Modules de fichier Bicep
La solution Bicep pour cet échantillon est divisée en modules pour activer les déploiements à la fois au niveau d’un groupe de ressources et à l’échelle d’un abonnement. Les sections de fichier détaillées ci-dessous sont les composants uniques du Gestionnaire de réseau virtuel. En plus des sections détaillées ci-dessous, la solution déploie les Réseaux virtuels (VN), une Identité Attribuée à l’Utilisateur (UAI) et une Attribution de Rôle.
Virtual Network Manager, groupes réseau et configuration de la connectivité
Gestionnaire de réseau virtuel
@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: []
}
}
}
Groupes réseau
La solution prend en charge la création de groupes réseau permanents ou de groupes réseau dynamiques. Le groupe réseau permanent spécifie ses membres par ID de réseau virtuel
Appartenance à un groupe réseau permanent
@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
}
}
}
Appartenance à un groupe réseau dynamique
@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'
}
}
Configuration de la connectivité
La configuration de connectivité associe le groupe réseau à la topologie de réseau spécifiée.
@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'
}
}
Script de déploiement
Pour déployer la configuration sur le groupe réseau cible, un script de déploiement est utilisé pour appeler la commande PowerShell Deploy-AzNetworkManagerCommit. Le script de déploiement a besoin d’une identité disposant d’autorisations suffisantes pour exécuter le script PowerShell sur le Gestionnaire de réseaux virtuels. Par conséquent, le fichier Bicep crée une identité managée par l’utilisateur et lui accorde le rôle « Contributeur » sur le groupe de ressources cible. Pour plus d’informations sur les scripts de déploiement et les identités associées, consultez Utiliser des scripts de déploiement dans des modèles 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: $_"
}
'''
}
}
Stratégie d’appartenance à un groupe réseau dynamique
Lorsque le déploiement est configuré pour utiliser dynamic l’appartenance au groupe réseau, la solution déploie également une définition et une affectation Azure Policy. La définition de Azure Policy est illustrée ci-dessous.
@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
}
}
}
}
}
Déployer la solution Bicep
Prérequis pour le déploiement
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Autorisations de créer une définition de stratégie et une attribution de stratégie ciblant l’abonnement (obligatoire avec l’utilisation du paramètre
networkGroupMembershipType=Dynamicde déploiement des ressources de stratégie requises pour l’appartenance au groupe réseau. La valeur par défaut eststatic, elle ne déploie aucune stratégie.
Télécharger la solution Bicep
- Téléchargez une archive Zip du référentiel MSPNP à partir de ce lien
- Extrayez le fichier Zip téléchargé et, dans votre terminal, accédez au répertoire
solutions/avnm-mesh-connected-group/bicep.
Vous pouvez également utiliser git pour cloner le répertoire avec git clone https://github.com/mspnp/samples.git
Connexion à Azure
Vous connecter à votre compte Azure et sélectionner votre abonnement
Pour commencer votre configuration, connectez-vous à votre compte Azure :
Connect-AzAccount
Puis, connectez-vous à votre abonnement :
Set-AzContext -Subscription <subscription name or id>
Installer le module Azure PowerShell
Installez la version la plus récente du module Azure PowerShell Az.Network à l’aide de cette commande :
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Paramètres de déploiement
- resourceGroupName : [obligatoire] ce paramètre spécifie le nom du groupe de ressources dans lequel le gestionnaire de réseau virtuel et les exemples de réseaux virtuels seront déployés.
- location : [obligatoire] ce paramètre spécifie l’emplacement des ressources à déployer.
-
networkGroupMembershipType : [facultatif] ce paramètre spécifie le type d’appartenance au groupe réseau à déployer. La valeur par défaut est
static, mais l’appartenance dynamique au groupe peut être utilisée en spécifiantdynamic.
Remarque
Si vous choisissez l’appartenance dynamique à un groupe, cela déploie une stratégie Azure Policy de gestion de l’appartenance, qui nécessite davantage d’autorisations.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Vérifier le déploiement de la configuration
Utilisez la section Gestionnaire de réseau de chaque réseau virtuel pour vérifier que vous avez déployé votre configuration :
Accédez au réseau virtuel vnet-learn-prod-{location}-spoke001.
Sous Paramètres, sélectionnez Gestionnaire de réseau.
Sous l’onglet Configurations de connectivité, vérifiez que cc-learn-prod-{location}-mesh001 apparaît dans la liste.
Répétez les étapes précédentes sur vnet-learn-prod-{location}-spoke004. Vous devriez voir que vnet-learn-prod-{location}-spoke004 est exclu de la configuration de connectivité.
Nettoyer les ressources
Si vous n’avez plus besoin d’Azure Virtual Network Manager et des réseaux virtuels associés, vous pouvez les enlever en supprimant le groupe de ressources et ses ressources.
- Dans le portail Azure, accédez à votre groupe de ressources – groupe-ressources.
- Sélectionnez groupe-ressources, puis Supprimer un groupe de ressources.
- Dans la fenêtre Supprimer un groupe de ressources, confirmez que vous souhaitez supprimer en entrant groupe-ressources dans la zone de texte, puis sélectionnez Supprimer.
- Si vous avez utilisé Appartenance au groupe de réseau dynamique, supprimez la définition et l’affectation de la stratégie Azure déployées en accédant à l’Abonnement dans le portail et en sélectionnant Stratégies. Dans Stratégies, recherchez l’Affectation nommée
AVNM quickstart dynamic group membership Policyet supprimez-la, puis faites de même pour la Définition nomméeAVNM quickstart dynamic group membership Policy.
Étapes suivantes
Maintenant que vous avez créé une instance Azure Virtual Network Manager, découvrez comment bloquer le trafic réseau à l’aide d’une configuration d’administrateur de sécurité :