Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozpocznij pracę z usługą Azure Virtual Network Manager przy użyciu rozwiązania Bicep, aby zarządzać łącznością dla wszystkich sieci wirtualnych.
W tym przewodniku Szybki start wdrożysz trzy sieci wirtualne i użyjesz usługi Azure Virtual Network Manager, aby utworzyć topologię sieci siatki. Następnie sprawdź, czy konfiguracja łączności została zastosowana.
Moduły plików Bicep
Rozwiązanie Bicep dla tego przykładu jest podzielone na moduły, aby umożliwić wdrożenia zarówno w grupie zasobów, jak i w zakresie subskrypcji. Sekcje plików opisane poniżej to unikatowe składniki menedżera sieci wirtualnej. Oprócz poniższych sekcji rozwiązanie wdraża sieci wirtualne, tożsamość przypisaną przez użytkownika i przypisanie roli.
Menedżer sieci wirtualnej, grupy sieci i konfiguracje łączności
Menedżer sieci wirtualnej
@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: []
}
}
}
Grupy sieciowe
Rozwiązanie obsługuje tworzenie statycznych grup sieciowych członkostwa lub dynamicznych grup sieciowych członkostwa. Statyczna grupa sieci członkostwa określa jej elementy członkowskie według identyfikatora sieci wirtualnej
Grupa sieci członkostwa statycznego
@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
}
}
}
Grupa sieci członkostwa dynamicznego
@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'
}
}
Konfiguracja łączności
Konfiguracja łączności kojarzy grupę sieci z określoną topologią sieci.
@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'
}
}
Skrypt wdrażania
Aby wdrożyć konfigurację w docelowej grupie sieci, skrypt wdrożenia służy do wywoływania Deploy-AzNetworkManagerCommit polecenia programu PowerShell. Skrypt wdrażania wymaga tożsamości z wystarczającymi uprawnieniami do wykonania skryptu programu PowerShell względem menedżera sieci wirtualnej, więc plik Bicep tworzy tożsamość zarządzaną użytkownika i przyznaje mu rolę "Współautor" w docelowej grupie zasobów. Aby uzyskać więcej informacji na temat skryptów wdrażania i skojarzonych tożsamości, zobacz Używanie skryptów wdrażania w szablonach usługi 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: $_"
}
'''
}
}
Dynamiczne zasady członkostwa w grupie sieci
Gdy wdrożenie jest skonfigurowane do korzystania z dynamic członkostwa w grupie sieci, rozwiązanie wdraża również definicję i przypisanie usługi Azure Policy. Poniżej przedstawiono definicję zasad.
@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
}
}
}
}
}
Wdrażanie rozwiązania Bicep
Wymagania wstępne dotyczące wdrożenia
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Uprawnienia do tworzenia definicji zasad i przypisania zasad w zakresie subskrypcji docelowej (jest to wymagane w przypadku użycia parametru
networkGroupMembershipType=Dynamicwdrożenia w celu wdrożenia wymaganych zasobów zasad dla członkostwa w grupie sieciowej. Wartość domyślna tostatic, która nie wdraża zasad.
Pobieranie rozwiązania Bicep
- Pobierz archiwum zip repozytorium MSPNP pod tym linkiem
- Wyodrębnij pobrany plik Zip i w terminalu
solutions/avnm-mesh-connected-group/bicepprzejdź do katalogu.
Alternatywnie możesz użyć polecenia , aby sklonować repozytorium za pomocą polecenia gitgit clone https://github.com/mspnp/samples.git
Łączenie się z platformą Azure
Zaloguj się do konta platformy Azure i wybierz swoją subskrypcję
Aby rozpocząć konfigurację, zaloguj się do konta platformy Azure:
Connect-AzAccount
Następnie połącz się z subskrypcją:
Set-AzContext -Subscription <subscription name or id>
Instalowanie modułu Azure PowerShell
Zainstaluj najnowszy moduł Az.Network programu Azure PowerShell przy użyciu tego polecenia:
Install-Module -Name Az.Network -RequiredVersion 5.3.0
Parametry wdrożenia
- resourceGroupName: [wymagane] Ten parametr określa nazwę grupy zasobów, w której zostanie wdrożony menedżer sieci wirtualnej i przykładowe sieci wirtualne.
- location: [required] Ten parametr określa lokalizację zasobów do wdrożenia.
-
networkGroupMembershipType: [opcjonalnie] Ten parametr określa typ członkostwa grupy sieciowej do wdrożenia. Wartość domyślna to
static, ale dynamiczne członkostwo w grupie może być używane przez określenie .dynamic
Uwaga
Wybranie członkostwa w grupie dynamicznej umożliwia wdrożenie usługi Azure Policy w celu zarządzania członkostwem, co wymaga większej liczby uprawnień.
$templateParameterObject = @{
'location' = '<resourceLocation>'
'resourceGroupName' = '<newOrExistingResourceGroup>'
}
New-AzSubscriptionDeployment -TemplateFile ./main.bicep -Location <deploymentLocation> -TemplateParameterObject $templateParameterObject
Weryfikowanie wdrożenia konfiguracji
Użyj sekcji Menedżer sieci dla każdej sieci wirtualnej, aby sprawdzić, czy wdrożono konfigurację:
Przejdź do sieci wirtualnej vnet-learn-prod-{location}-spoke001 .
W obszarze Ustawienia wybierz pozycję Menedżer sieci.
Na karcie Konfiguracje łączności sprawdź, czy na liście jest wyświetlana opcja cc-learn-prod-{location}-mesh001.
Powtórz poprzednie kroki w sieci wirtualnej vnet-learn-prod-{location}-spoke004-- powinna zostać wyświetlona sieć wirtualna-learn-prod-{location}-spoke004 została wykluczona z konfiguracji łączności.
Czyszczenie zasobów
Jeśli nie potrzebujesz już usługi Azure Virtual Network Manager i skojarzonych sieci wirtualnych, możesz usunąć ją, usuwając grupę zasobów i jej zasoby.
- W witrynie Azure Portal przejdź do grupy zasobów — grupa zasobów.
- Wybierz pozycję Grupa zasobów i wybierz pozycję Usuń grupę zasobów.
- W oknie Usuwanie grupy zasobów upewnij się, że chcesz usunąć, wprowadzając grupę zasobów w polu tekstowym, a następnie wybierz pozycję Usuń.
- Jeśli użyto dynamicznego członkostwa w grupie sieci, usuń wdrożone definicje i przypisanie usługi Azure Policy, przechodząc do subskrypcji w portalu i wybierając zasady. W obszarze Zasady znajdź przypisanieo nazwie
AVNM quickstart dynamic group membership Policyi usuń je, a następnie wykonaj to samo dla definicji o nazwieAVNM quickstart dynamic group membership Policy.
Następne kroki
Po utworzeniu wystąpienia usługi Azure Virtual Network Manager dowiedz się, jak blokować ruch sieciowy przy użyciu konfiguracji administratora zabezpieczeń: