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.
Bicep Dosya Modülleri
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ğıda ayrıntılı olarak sunulan dosya bölümleri Virtual Network Manager için benzersiz bileşenlerdir. Aşağıda ayrıntıları verilen bölümlere ek olarak, çözüm Sanal Ağ, Kullanıcı Tarafından Atanan Kimlik ve Rol Ataması dağıtır.
Sanal Ağ Yöneticisi, Ağ Grupları ve Bağlantı Yapılandırmaları
Sanal Ağ Yöneticisi
@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: []
}
}
}
Ağ Grupları
Çözüm, statik üyelik Ağ Grupları veya dinamik üyelik Ağ Grupları oluşturmayı destekler. Statik üyelik ağ grubu üyelerini Sanal Ağ kimliğine göre belirtir
Statik Üyelik Ağ Grubu
@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
@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'
}
}
Bağlantı Yapılandırması
Bağlantı Yapılandırması, Ağ Grubunu belirtilen ağ topolojisiyle ilişkilendirir.
@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'
}
}
Dağıtım Betiği
Yapılandırmayı hedef ağ grubuna dağıtmak için PowerShell komutunu çağırmak Deploy-AzNetworkManagerCommit için bir Dağıtım Betiği kullanılır. Dağıtım Betiği, PowerShell betiğini Sanal Ağ Yöneticisi'ne karşı yürütmek için yeterli izinlere sahip bir kimliğe ihtiyaç duyar, bu nedenle Bicep dosyası bir Kullanıcı Tarafından Yönetilen Kimlik oluşturur ve hedef kaynak grubunda 'Katkıda Bulunan' rolü verir. Dağıtım Betikleri ve ilişkili kimlikler hakkında daha fazla bilgi için bkz . ARM şablonlarında dağıtım betiklerini kullanma.
@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 Ağ Grubu Üyelik İlkesi
Dağıtım ağ grubu üyeliğini kullanacak dynamic şekilde yapılandırıldığında, çözüm bir Azure İlkesi Tanımı ve Ataması da dağıtır. İlke Tanımı aşağıda gösterilmiştir.
@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ğıtma
Dağıtım Önkoşulları
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Hedef abonelik kapsamında bir İ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 parametresi
networkGroupMembershipType=Dynamickullanılırken bu gereklidir. Varsayılan değer, bir İlke dağıtmayan şeklindedirstatic.
Bicep Çözümünü indirin
- Bu bağlantıdan MSPNP deposunun Zip arşivini indirin
- İndirilen Zip dosyasını ayıklayın ve terminalinizde dizinine
solutions/avnm-mesh-connected-group/bicepgidin.
Alternatif olarak, git depoyu git clone https://github.com/mspnp/samples.git
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] Bu parametre, sanal ağ yöneticisinin ve örnek sanal ağların dağıtılacağı kaynak grubunun adını belirtir.
- location: [required] Bu parametre dağıtılacak kaynakların konumunu belirtir.
-
networkGroupMembershipType: [optional] Bu parametre dağıtılacak Ağ Grubu üyeliğinin türünü belirtir. Varsayılan değerdir
static, ancak dinamik grup üyeliği belirtilerekdynamickullanılabilir.
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.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
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 bağlantı yapılandırmasının dışında bırakılmıştır.
Kaynakları temizleme
Azure Sanal Ağ Yöneticisi'ne ve ilişkili sanal ağlara artık ihtiyacınız yoksa, kaynak grubunu ve kaynaklarını silerek kaldırabilirsiniz.
- Azure portalında kaynak grubunuz olan kaynak grubuna göz atın.
- Kaynak grubunu seçin ve Kaynak grubunu sil'i seçin.
- Kaynak grubunu sil penceresinde, metin kutusuna resource-group yazarak silmek istediğinizi onaylayın ve sil'i seçin.
- Dinamik Ağ Grubu Üyeliği'ni kullandıysanız Portalda Abonelik'e gidip İlkeler'i seçerek dağıtılan Azure İlkesi Tanımı ve Atamasını silin. İlkeler'de, adlı Atamayı
AVNM quickstart dynamic group membership Policybulun ve silin, ardından adlı TanımAVNM quickstart dynamic group membership Policyde aynı işlemi yapın.
Sonraki adımlar
Bir Azure Sanal Ağ Manager örneği oluşturduğunuza göre, güvenlik yöneticisi yapılandırmasını kullanarak ağ trafiğini engellemeyi öğrenin: