Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tüm sanal ağlarınızın bağlantısını yönetmek için Bicep'i kullanarak Azure Sanal Ağ Manager'ı kullanmaya başlayın.
Bu hızlı başlangıçta üç sanal ağ dağıtacak ve ağ topolojisi oluşturmak için Azure Sanal Ağ Manager'ı kullanacaksınız. Ardından bağlantı yapılandırmasının uygulandığını doğrularsınız.
Bu örneğin Bicep çözümü, hem kaynak grubu hem de abonelik kapsamında dağıtımları etkinleştirmek için modüllere ayrılmıştır. Aşağıdaki bölümler, Azure Sanal Ağ Yöneticisi'a özgü bileşenleri tanımlar. Bu bileşenlere ek olarak, çözüm sanal ağlar, kullanıcı tarafından atanan bir kimlik ve bir rol ataması da sunar.
Sanal ağ yöneticisi kaynağını tanımlayın
Bu kaynak, sanal ağlar arası bağlantı için bağlantılı grubu uygulayan Microsoft.Network/networkManagers örneğini 2022-09-01 API sürümünde oluşturur.
networkManagerScopes öğesini örneğin yönettiği aboneliklere veya yönetim gruplarına ayarlayın ve örneğin bağlantı yapılandırmalarını dağıtabilmesi için Connectivity öğesini networkManagerScopeAccesses içinde tutun.
@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: []
}
}
}
Statik ve dinamik ağ gruplarını tanımlayın
Çözüm ya statik bir üyelik ağı grubunu ya da dinamik bir üyelik ağı grubunu destekler.
networkGroupMembershipType parametresi, ikisinden hangisinin dağıtılacağını seçer; iki kaynaktan yalnızca biri oluşturulur.
Statik üyelik ağı grubu
Statik ağ grubu kaynağı, Microsoft.Network/networkManagers/networkGroups API sürümünde 2022-09-01üyelerini açıkça adlandırır. İç içe geçmiş staticMembers kaynaklar, A, B ve C uç sanal ağlarını ve merkez sanal ağını kaynak kimliklerine göre ekler. Kendi sanal ağlarınızı hedeflemek için spokeNetworkGroupMembers ve hubVnetId parametrelerini değiştirin.
@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
}
}
}
Dinamik üyelik ağı grubu
Dinamik ağ grubu kaynağı, hiçbir üyesi olmadığını belirtir. Üyelik, Define the dynamic membership policy'de tanımlanan Azure İlkesi tanımıyla doldurulur.
@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'
}
}
Mesh bağlantı yapılandırmasını tanımlayın
API sürümünde Microsoft.Network/networkManagers/connectivityConfigurationsbağlantı yapılandırma kaynağı2022-09-01, ağ grubunu mesh ağ topolojisiyle ilişkilendirir.
appliesToGroups özelliği, dağıttığınız ağ grubunu referans alır ve connectivityTopology değerini Mesh olarak ayarladınız.
@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'
}
}
Yapılandırmayı bir dağıtım betiği kullanarak kaydedin
Konfigürasyonu hedef ağ grubuna dağıtmak için, PowerShell komutunu Deploy-AzNetworkManagerCommit çağıran bir dağıtım betiği kullanın. Dağıtım betikleri, PowerShell betikini sanal ağ yöneticisine karşı çalıştırmak için yeterli izinlere sahip bir kimlik gerektirir. Bicep dosyası kullanıcı tarafından yönetilen bir kimlik oluşturur ve hedef kaynak grubunda Katkıda Bulunan rolü verir. Dağıtım betikleri ve ilgili kimlikler hakkında daha fazla bilgi için ARM şablonlarında dağıtım betiklerini kullan bölümüne bakınız.
Aşağıdaki kaynak, API sürümü Microsoft.Resources/deploymentScripts olan bir 2020-10-01 kaynağıdır. Kullanıcı tarafından atanan kimlikle oturum açan ve Deploy-AzNetworkManagerCommit çağıran satır içi bir PowerShell betiği çalıştırır. Kendi dağıtımınız için , azPowerShellVersion, ve retentionInterval özelliklerini timeoutdeğiştirin. Geçilen argumentsdeğerleri değiştirin: ağ yöneticisi adı, hedef konumlar, yapılandırma kimlikleri, abonelik kimliği, yapılandırma türü ve kaynak grubu adı.
@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: $_"
}
'''
}
}
Dinamik üyelik politikasını tanımlayın
Dağıtımı ağ grup üyeliği kullanacak dynamic şekilde yapılandırdığınızda, çözüm ayrıca Azure İlkesi tanımı ve atamasını da dağıtır.
Aşağıdaki kaynak, API sürümü Microsoft.Authorization/policyDefinitions olan bir 2021-06-01 kaynağıdır.
Microsoft.Network.Data ilke modunu ve addToNetworkGroup etkisini kullanır; bu etki, networkGroupId tarafından tanımlanan ağ grubuna eşleşen sanal ağları ekler. Politika kuralı, etiketi _avnm_quickstart_deployment taşıyan ve bu örneklemin kaynak grubunda yaşayan sanal ağlarla eşleşiyor. Etiket adını ve kaynak grubu filtresini koşulda like kendi ortamınıza uyacak şekilde değiştirin.
@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
}
}
}
}
}
Bicep çözümünü dağıtın
Dağıtım önkoşulları
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Hedef abonelik kapsamında İlke Tanımı ve İlke Ataması oluşturma izinleri. Ağ Grubu üyeliği için gerekli İlke kaynaklarını dağıtmak için dağıtım parametresini
networkGroupMembershipType=Dynamickullanırken bu izinlere ihtiyacınız vardır. Varsayılan değerstatic’dir; bu, bir İlke dağıtmaz. - Bu çözümdeki tüm kaynaklar Azure Örnekleri GitHub deposunda kullanılabilir. Bicep çözümünü depodan indirebilir veya depoyu yerel makinenize kopyalayabilirsiniz.
Bicep çözümünü indirin
- Bu bağlantıdan örnek deponun ZIP arşivini indirin.
- İndirilen ZIP dosyasını ayıklayın. Terminalinizde ayıklanan
avnm-mesh-connected-groupdizine gidin. Bu çözümün Bicep dosyaları,bicepalt dizininde bulunur.
Alternatif olarak, depoyu kopyalamak için kullanabilirsiniz git :
git clone https://github.com/Azure-Samples/avnm-mesh-connected-group
cd avnm-mesh-connected-group
Azure'a bağlanma
Azure hesabınızda oturum açın ve aboneliğinizi seçin
Yapılandırmanıza başlamak için Azure hesabınızda oturum açın:
Connect-AzAccount
Ardından aboneliğinize bağlanın:
Set-AzContext -Subscription <subscription name or id>
Azure PowerShell modülünü yükleme
Şu komutu kullanarak en son Az.Network Azure PowerShell modülünü yükleyin:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Dağıtım parametreleri
- resourceGroupName: [required] Sanal ağ yöneticisini ve örnek sanal ağları dağıtmak istediğiniz kaynak grubunun adı.
- location: [required] Dağıtılacak kaynakların konumu.
-
networkGroupMembershipType: [isteğe bağlı] Dağıtılacak Ağ Grubu üyeliğinin türü. Varsayılan değerdir
static, ancak dinamik grup üyeliği için kullanabilirsinizdynamic.
Not
Dinamik grup üyeliği seçildiğinde, üyeliği yönetmek için daha fazla izin gerektiren bir Azure İlkesi dağıtılır.
Statik ağ grubu üyeliğiyle varsayılan dağıtım
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup>
Dinamik ağ grubu üyeliği ile dağıtım
Ağ grubunun üyeliğini dinamik olarak yönetmek için Azure İlkesi kullanmak için dağıtım parametresini networkGroupMembershipType değeriyle dynamicekleyin.
New-AzSubscriptionDeployment -Name avnm-mesh-connected-group -Location <deploymentLocation> -TemplateFile ./bicep/main.bicep -resourceGroupName <newOrExistingResourceGroup> -networkGroupMembershipType dynamic
Yapılandırma dağıtımlarını doğrulama
Yapılandırmanızı dağıttığınız doğrulamak için her sanal ağın Ağ Yöneticisi bölümünü kullanın:
vnet-learn-prod-{location}-spoke001 sanal ağına gidin.
Ayarlar'ın altında Ağ Yöneticisi'ne tıklayın.
Bağlantı Yapılandırmaları sekmesinde, listede cc-learn-prod-{location}-mesh001 görüntülendiğini doğrulayın.
Önceki adımları vnet-learn-prod-{location}-spoke004 üzerinde yineleyin — vnet-learn-prod-{location}-spoke004 öğesinin bağlantı yapılandırmasına dahil edilmediğini görmelisiniz.
Kaynakları temizleme
artık Azure Sanal Ağ Yöneticisi ve ilişkili sanal ağlara ihtiyacınız yoksa, kaynak grubunu ve kaynaklarını silerek bunları kaldırın.
- Azure portalında kaynak grubunuz olan kaynak grubuna göz atın.
- resource-group'i seçin ve Kaynak grubunu sil'i seçin.
- Kaynak grubunu sil bölümünde, metin kutusuna resource-group yazarak silmek istediğinizi onaylayın ve sil'i seçin.
-
Dinamik Ağ Grubu Üyeliği'ni kullandıysanız, portaldaki Abonelik bölümüne gidip İlkeler'i seçerek dağıtılmış Azure İlkesi Tanımı ve Atamasını silin.
İlkeler'de, adlı
AVNM quickstart dynamic group membership Policy'yı bulun ve silin, ardından adlıAVNM quickstart dynamic group membership Policyiçin de aynısını yapın.
Sonraki adımlar
Artık bir Azure Sanal Ağ Yöneticisi örneği oluşturduğunuza göre, bir güvenlik yöneticisi yapılandırması kullanarak ağ trafiğini engellemeyi öğrenin: