Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mulai menggunakan Azure Virtual Network Manager dengan menggunakan Bicep untuk mengelola konektivitas untuk semua jaringan virtual Anda.
Dalam mulai cepat ini, Anda menyebarkan tiga jaringan virtual dan menggunakan Azure Virtual Network Manager untuk membuat topologi jaringan jala. Kemudian Anda memverifikasi bahwa konfigurasi konektivitas diterapkan.
Modul Berkas Bicep
Solusi Bicep untuk sampel ini dipecah menjadi modul untuk mengaktifkan penyebaran di grup sumber daya dan cakupan langganan. Bagian file yang dirinci di bawah ini adalah komponen unik untuk Virtual Network Manager. Selain bagian yang dirinci di bawah ini, solusi menyebarkan Virtual Networks, Identitas yang Ditetapkan Pengguna, dan Penetapan Peran.
Virtual Network Manager, Grup Jaringan, dan Konfigurasi Konektivitas
Pengelola Virtual Network
@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: []
}
}
}
Grup Jaringan
Solusi ini mendukung pembuatan Grup Jaringan keanggotaan statis atau Grup Jaringan keanggotaan dinamis. Grup jaringan keanggotaan statis menentukan anggotanya berdasarkan ID Virtual Network
Grup Jaringan Keanggotaan Statis
@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
}
}
}
Grup Jaringan Keanggotaan Dinamis
@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'
}
}
Konfigurasi Konektivitas
Konfigurasi Konektivitas mengaitkan Grup Jaringan dengan topologi jaringan yang ditentukan.
@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'
}
}
Skrip Penyebaran
Untuk menyebarkan konfigurasi ke grup jaringan target, Skrip Penyebaran digunakan untuk memanggil Deploy-AzNetworkManagerCommit perintah PowerShell. Skrip Penyebaran memerlukan identitas dengan izin yang memadai untuk menjalankan skrip PowerShell terhadap Virtual Network Manager, sehingga file Bicep membuat Identitas Terkelola Pengguna dan memberinya peran 'Kontributor' pada grup sumber daya target. Untuk informasi selengkapnya tentang Skrip Penyebaran dan identitas terkait, lihat Menggunakan skrip penyebaran di templat 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: $_"
}
'''
}
}
Kebijakan Keanggotaan Grup Jaringan Dinamis
Saat penyebaran dikonfigurasi untuk menggunakan dynamic keanggotaan grup jaringan, solusi juga menyebarkan Definisi dan Penugasan Azure Policy. Definisi Kebijakan ditunjukkan di bawah ini.
@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
}
}
}
}
}
Menyebarkan Solusi Bicep
Prasyarat Penyebaran
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Izin untuk membuat Definisi Kebijakan dan Penetapan Kebijakan pada cakupan langganan target (ini diperlukan saat menggunakan parameter
networkGroupMembershipType=Dynamicpenyebaran untuk menyebarkan sumber daya Kebijakan yang diperlukan untuk keanggotaan Grup Jaringan. Defaultnya adalahstatic, yang tidak menyebarkan Kebijakan.
Unduh Solusi Bicep
- Unduh arsip Zip dari repositori MSPNP di tautan ini
- Ekstrak file Zip yang diunduh dan di terminal Anda, navigasikan ke
solutions/avnm-mesh-connected-group/bicepdirektori.
Atau, Anda dapat menggunakan git untuk mengkloning repositori dengan git clone https://github.com/mspnp/samples.git
Hubungkan ke Azure
Masuk ke akun Azure Anda dan pilih langganan Anda
Untuk memulai konfigurasi Anda, masuk ke akun Azure Anda:
Connect-AzAccount
Kemudian, sambungkan ke langganan Anda:
Set-AzContext -Subscription <subscription name or id>
Menginstal modul Azure PowerShell
Instal modul Az.Network Azure PowerShell terbaru dengan menggunakan perintah ini:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parameter Penyebaran
- resourceGroupName: [required] Parameter ini menentukan nama grup sumber daya tempat manajer jaringan virtual dan jaringan virtual sampel akan disebarkan.
- location: [required] Parameter ini menentukan lokasi sumber daya yang akan disebarkan.
-
networkGroupMembershipType: [opsional] Parameter ini menentukan jenis keanggotaan Grup Jaringan yang akan disebarkan. Defaultnya adalah
static, tetapi keanggotaan grup dinamis dapat digunakan dengan menentukandynamic.
Catatan
Memilih keanggotaan grup dinamis menyebarkan Azure Policy untuk mengelola keanggotaan, membutuhkan lebih banyak izin.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Memverifikasi penyebaran konfigurasi
Gunakan bagian Pengelola Jaringan untuk setiap jaringan virtual untuk memverifikasi bahwa Anda menyebarkan konfigurasi:
Buka jaringan virtual vnet-learn-prod-{location}-spoke001.
Di bawah Pengaturan, pilih Pengelola Jaringan.
Pada tab Konfigurasi Konektivitas, verifikasi bahwa cc-learn-prod-{location}-mesh001 muncul dalam daftar.
Ulangi langkah-langkah sebelumnya pada vnet-learn-prod-{location}-spoke004--Anda akan melihat vnet-learn-prod-{location}-spoke004 dikecualikan dari konfigurasi konektivitas.
Membersihkan sumber daya
Jika Anda tidak lagi memerlukan Azure Virtual Network Manager dan jaringan virtual terkait, Anda dapat menghapusnya dengan menghapus grup sumber daya dan sumber dayanya.
- Di portal Azure, telusuri ke grup sumber daya Anda - grup sumber daya.
- Pilih grup sumber daya dan pilih Hapus grup sumber daya.
- Di jendela Hapus grup sumber daya, konfirmasikan bahwa Anda ingin menghapus dengan memasukkan grup sumber daya di kotak teks, lalu pilih Hapus.
- Jika Anda menggunakan Keanggotaan Grup Jaringan Dinamis, hapus Definisi dan Penugasan Azure Policy yang disebarkan dengan menavigasi ke Langganan di Portal dan memilih Kebijakan. Di Kebijakan, temukan Penugasan bernama
AVNM quickstart dynamic group membership Policydan hapus, lalu lakukan hal yang sama untuk Definisi bernamaAVNM quickstart dynamic group membership Policy.
Langkah berikutnya
Sekarang setelah Anda membuat instans Azure Virtual Network Manager, pelajari cara memblokir lalu lintas jaringan dengan menggunakan konfigurasi admin keamanan: