في هذه المقالة، ستتعلم كيفية استخدام تشخيصات NSG ل Azure Network Watcher للتحقق من قواعد الأمان المطبقة على حركة مرور Azure واستكشاف الأخطاء وإصلاحها من خلال مجموعات أمان الشبكة وAzure Virtual Network Manager. تتحقق تشخيصات NSG من السماح بنسبة استخدام الشبكة أو رفضها بواسطة قواعد الأمان المطبقة.
يوضح لك المثال في هذه المقالة كيف يمكن لمجموعة أمان شبكة تم تكوينها بشكل خاطئ منعك من استخدام Azure Bastion للاتصال بجهاز ظاهري.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط.
أنشئ حساباً مجاناً.
Azure Cloud Shell أو Azure PowerShell.
تعمل الخطوات الواردة في هذه المقالة على تشغيل أوامر Cmdlets Azure PowerShell بشكل تفاعلي في Azure Cloud Shell. لتشغيل الأوامر في Cloud Shell، حدد Open Cloud Shell في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. حدد نسخ لنسخ التعليمات البرمجية ثم لصقها في Cloud Shell لتشغيلها. يمكنك أيضا تشغيل Cloud Shell من داخل مدخل Microsoft Azure.
يمكنك أيضا تثبيت Azure PowerShell محليا لتشغيل cmdlets. تتطلب هذه المقالة الوحدة النمطية Az PowerShell. لمزيد من المعلومات، راجع كيفية تثبيت Azure PowerShell. للعثور على الإصدار المثبت، قم بتشغيل Get-InstalledModule -Name Az. إذا قمت بتشغيل PowerShell محليا، فقم بتسجيل الدخول إلى Azure باستخدام Connect-AzAccount cmdlet.
حساب Azure مع اشتراك نشط.
أنشئ حساباً مجاناً.
Azure Cloud ShellأوAzure CLI.
تعمل الخطوات الواردة في هذه المقالة على تشغيل أوامر Azure CLI بشكل تفاعلي في Azure Cloud Shell. لتشغيل الأوامر في Cloud Shell، حدد Open Cloud Shell في الزاوية العلوية اليسرى من كتلة التعليمات البرمجية. حدد نسخ لنسخ التعليمات البرمجية، ولصقها في Cloud Shell لتشغيلها. يمكنك أيضا تشغيل Cloud Shell من داخل مدخل Microsoft Azure.
يمكنك أيضا تثبيت Azure CLI محليا لتشغيل الأوامر. إذا قمت بتشغيل Azure CLI محليا، فقم بتسجيل الدخول إلى Azure باستخدام الأمر az login .
إنشاء شبكة ظاهرية ومضيف Bastion
في هذا القسم، يمكنك إنشاء شبكة ظاهرية مع شبكتين فرعيتين ومضيف Azure Bastion. يتم استخدام الشبكة الفرعية الأولى للجهاز الظاهري، ويتم استخدام الشبكة الفرعية الثانية لمضيف Bastion. يمكنك أيضا إنشاء مجموعة أمان شبكة وتطبيقها على الشبكة الفرعية الأولى.
في مربع البحث أعلى المدخل، أدخل الشبكات الظاهرية. حدد Virtual networks من نتائج البحث.
حدد + إنشاء. في Create virtual network، أدخل القيم التالية أو حددها في علامة التبويب Basics :
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد اشتراك Azure الخاص بك. |
| مجموعة الموارد |
حدد إنشاء جديد.
أدخِل myResourceGroup في الاسم.
حدد موافق. |
|
تفاصيل المثيل |
|
| اسم الشبكة الظاهرية |
أدخل «myVNet» |
| المنطقة |
حدد (US) East US. |
حدد علامة التبويب الأمان، أو حدد الزر التالي في أسفل الصفحة.
ضمن Azure Bastion، حدد Enable Azure Bastion واقبل القيم الافتراضية:
| الإعداد |
القيمة |
| اسم مضيف Azure Bastion |
myVNet-Bastion. |
| عنوان IP العام ل Azure Bastion |
(جديد) myVNet-bastion-publicIpAddress. |
حدد علامة التبويب عناوين IP، أو حدد الزر التالي في أسفل الصفحة.
اقبل مساحة عنوان IP الافتراضية 10.0.0.0/16 وقم بتحرير الشبكة الفرعية الافتراضية عن طريق تحديد أيقونة القلم الرصاص. في صفحة تحرير الشبكة الفرعية، أدخل القيم التالية:
| الإعداد |
القيمة |
|
تفاصيل الشبكة الفرعية |
|
| الاسم |
أدخل mySubnet. |
|
الأمان |
|
| مجموعة أمان الشبكة |
حدد إنشاء جديد.
أدخل mySubnet-nsg في Name.
حدد موافق. |
حدد Review + create.
راجع الإعدادات، ثم حدّد "إنشاء".
أنشئ مجموعة موارد باستخدام New-AzResourceGroup. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.
# Create a resource group.
New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus'
إنشاء مجموعة أمان شبكة افتراضية باستخدام New-AzNetworkSecurityGroup.
# Create a network security group.
$networkSecurityGroup = New-AzNetworkSecurityGroup -Name 'mySubnet-nsg' -ResourceGroupName 'myResourceGroup' -Location 'eastus'
إنشاء تكوين شبكة فرعية للشبكة الفرعية للجهاز الظاهري والشبكة الفرعية لمضيف Bastion باستخدام New-AzVirtualNetworkSubnetConfig.
# Create subnets configuration.
$firstSubnet = New-AzVirtualNetworkSubnetConfig -Name 'mySubnet' -AddressPrefix '10.0.0.0/24' -NetworkSecurityGroup $networkSecurityGroup
$secondSubnet = New-AzVirtualNetworkSubnetConfig -Name 'AzureBastionSubnet' -AddressPrefix '10.0.1.0/26'
إنشاء شبكة ظاهرية باستخدام New-AzVirtualNetwork.
# Create a virtual network.
$vnet = New-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup' -Location 'eastus' -AddressPrefix '10.0.0.0/16' -Subnet $firstSubnet, $secondSubnet
إنشاء مورد عنوان IP العام المطلوب لمضيف Bastion باستخدام New-AzPublicIpAddress.
# Create a public IP address for Azure Bastion.
New-AzPublicIpAddress -ResourceGroupName 'myResourceGroup' -Name 'myBastionIp' -Location 'eastus' -AllocationMethod 'Static' -Sku 'Standard'
إنشاء مضيف Bastion باستخدام New-AzBastion.
# Create an Azure Bastion host.
New-AzBastion -ResourceGroupName 'myResourceGroup' -Name 'myVNet-Bastion' -PublicIpAddressRgName 'myResourceGroup' -PublicIpAddressName 'myBastionIp' -VirtualNetwork $vnet
قم بإنشاء مجموعة موارد باستخدام az group create. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها.
# Create a resource group.
az group create --name 'myResourceGroup' --location 'eastus'
إنشاء مجموعة أمان شبكة افتراضية باستخدام az network nsg create.
# Create a network security group.
az network nsg create --name 'mySubnet-nsg' --resource-group 'myResourceGroup' --location 'eastus'
أنشئ شبكة ظاهرية باستخدام az network vnet create.
az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 --network-security-group 'mySubnet-nsg'
إنشاء شبكة فرعية ل Azure Bastion باستخدام az network vnet subnet create.
# Create AzureBastionSubnet.
az network vnet subnet create --name 'AzureBastionSubnet' --resource-group 'myResourceGroup' --vnet-name 'myVNet' --address-prefixes '10.0.1.0/26'
إنشاء عنوان IP عام لمضيف Bastion باستخدام az network public-ip create.
# Create a public IP address resource.
az network public-ip create --resource-group 'myResourceGroup' --name 'myBastionIp' --sku Standard
إنشاء مضيف Bastion باستخدام az network bastion create.
az network bastion create --name 'myVNet-Bastion' --public-ip-address 'myBastionIp' --resource-group 'myResourceGroup' --vnet-name 'myVNet'
هام
يبدأ التسعير بالساعة من لحظة نشر مضيف Bastion، بغض النظر عن استخدام البيانات الصادرة. لمزيد من المعلومات، راجع الأسعار. نوصي بحذف هذا المورد بمجرد الانتهاء من استخدامه.
إنشاء جهاز ظاهري
في هذا القسم، يمكنك إنشاء جهاز ظاهري ومجموعة أمان شبكة مطبقة على واجهة الشبكة الخاصة به.
في مربع البحث أعلى المدخل، أدخل الأجهزة الظاهرية. حدد الأجهزة الظاهرية من نتائج البحث.
حدد + Create ثم حدد Azure virtual machine.
في إنشاء جهاز ظاهري، أدخل القيم التالية في علامة التبويب الأساسيات أو حدّدها:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد اشتراك Azure الخاص بك. |
| مجموعة الموارد |
حدّد myResourceGroup. |
|
تفاصيل المثيل |
|
| اسم الجهاز الظاهري |
أدخل myVM . |
| المنطقة |
حدد (US) East US. |
| خيارات التوفر |
حدد No infrastructure redundancy required. |
| نوع الأمان |
حدد قياسي. |
| الصورة |
حدد Windows Server 2022 Datacenter: Azure Edition - x64 Gen2. |
| الحجم |
اختر حجما أو اترك الإعداد الافتراضي. |
|
حساب المسؤول |
|
| اسم مستخدم |
أدخل username. |
| كلمة المرور |
إدخال «password». |
| تأكيد كلمة المرور |
اعادة ادخال كلمة السر. |
حدد علامة التبويب Networking، أو حدد Next: Disks، ثم Next: Networking.
في علامة التبويب Networking، حدد القيم التالية:
| الإعداد |
القيمة |
|
واجهة الشبكة |
|
| الشبكة الظاهرية |
حدّد «myVNet». |
| الشبكة الفرعية |
حدد Default. |
| عنوان IP عام |
حدد لا شيء. |
| المجموعة الأمنية للشبكة NIC |
حدد أساسي. |
| المنافذ العامة الواردة |
حدد لا شيء. |
حدد "Review + create".
راجع الإعدادات، ثم حدّد "إنشاء".
إنشاء مجموعة أمان شبكة افتراضية باستخدام New-AzNetworkSecurityGroup.
# Create a default network security group.
New-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup' -Location eastus
إنشاء جهاز ظاهري باستخدام New-AzVM. عند المطالبة، أدخل اسم مستخدم وكلمة مرور.
# Create a virtual machine using the latest Windows Server 2022 image.
New-AzVm -ResourceGroupName 'myResourceGroup' -Name 'myVM' -Location 'eastus' -VirtualNetworkName 'myVNet' -SubnetName 'mySubnet' -SecurityGroupName 'myVM-nsg' -ImageName 'MicrosoftWindowsServer:WindowsServer:2022-Datacenter-azure-edition:latest'
إنشاء مجموعة أمان شبكة افتراضية باستخدام az network nsg create.
# Create a default network security group.
az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
إنشاء جهاز ظاهري باستخدام az vm create. عند المطالبة، أدخل اسم مستخدم وكلمة مرور.
# Create a virtual machine using the latest Windows Server 2022 image.
az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Win2022AzureEditionCore'
إضافة قاعدة أمان إلى مجموعة أمان الشبكة
في هذا القسم، يمكنك إضافة قاعدة أمان إلى مجموعة أمان الشبكة المقترنة بواجهة شبكة myVM. ترفض القاعدة أي حركة مرور واردة من الشبكة الظاهرية.
في مربع البحث أعلى المدخل، أدخل مجموعات أمان الشبكة. حدد مجموعات أمان الشبكة من نتائج البحث.
من قائمة مجموعات أمان الشبكة، حدد myVM-nsg.
ضمن Settings، حدد Inbound security rules.
حدد + إضافة. في علامة التبويب Networking، أدخل القيم التالية أو حددها:
| الإعداد |
القيمة |
| المصدر |
حدد علامة الخدمة. |
| علامة خدمة المصدر |
حدد VirtualNetwork. |
| نطاقات منافذ المصادر |
دخل*. |
| الوجهة |
حدد "Any". |
| الخدمة |
حدد مخصص. |
| نطاقات المنفذ الوجهات |
دخل*. |
| البروتوكول |
حدد "Any". |
| الإجراء |
حدد Deny. |
| أولوية |
أدخل 1000. |
| الاسم |
أدخل DenyVnetInBound. |
حدد إضافة.
استخدم Add-AzNetworkSecurityRuleConfig لإنشاء قاعدة أمان ترفض نسبة استخدام الشبكة من الشبكة الظاهرية. ثم استخدم Set-AzNetworkSecurityGroup لتحديث مجموعة أمان الشبكة بقاعدة الأمان الجديدة.
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule that denies inbound traffic from the virtual network service tag.
Add-AzNetworkSecurityRuleConfig -Name 'DenyVnetInBound' -NetworkSecurityGroup $networkSecurityGroup `
-Access 'Deny' -Protocol '*' -Direction 'Inbound' -Priority '1000' `
-SourceAddressPrefix 'virtualNetwork' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
استخدم az network nsg rule create لإضافة قاعدة أمان إلى مجموعة أمان الشبكة التي ترفض نسبة استخدام الشبكة من الشبكة الظاهرية.
# Add to the network security group a security rule that denies inbound traffic from the virtual network service tag.
az network nsg rule create --name 'DenyVnetInBound' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '1000' \
--access 'Deny' --protocol '*' --direction 'Inbound' --source-address-prefixes 'virtualNetwork' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
إشعار
تمثل علامة خدمة VirtualNetwork مساحة عنوان الشبكة الظاهرية، وجميع مساحات العناوين المحلية المتصلة، والشبكات الظاهرية النظيرة، والشبكات الظاهرية المتصلة ببوابة شبكة ظاهرية، وعنوان IP الظاهري للمضيف، وبادئات العناوين المستخدمة في المسارات المعرفة من قبل المستخدم. لمزيد من المعلومات، راجع علامات الخدمة.
التحقق من قواعد الأمان المطبقة على حركة مرور الجهاز الظاهري
استخدم تشخيصات NSG للتحقق من قواعد الأمان المطبقة على حركة المرور التي نشأت من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
في مربع البحث أعلى المدخل، ابحث عن Network Watcher وحدده.
ضمن أدوات تشخيص الشبكة، حدد تشخيصات NSG.
في صفحة تشخيصات NSG، أدخل القيم التالية أو حددها:
| الإعداد |
القيمة |
|
المورد الهدف |
|
| نوع المورد المستهدف |
حدد الأجهزة الظاهرية. |
| الجهاز الظاهري |
حدد الجهاز الظاهري myVM . |
|
تفاصيل حركة المرور |
|
| البروتوكول |
حدد TCP. الخيارات الأخرى المتاحة هي: أي، UDP وICMP. |
| الاتجاه |
حدد الوارد. الخيار المتوفر الآخر هو: الصادر. |
| نوع المصدر |
حدد عنوان IPv4/CIDR. الخيار الآخر المتاح هو: علامة الخدمة. |
| عنوان IPv4/CIDR |
أدخل 10.0.1.0/26، وهو نطاق عناوين IP للشبكة الفرعية Bastion. القيم المقبولة هي: عنوان IP واحد، وعناوين IP متعددة، وبادئة IP واحدة، وبادئات IP متعددة. |
| عنوان IP الوجهة |
اترك الإعداد الافتراضي 10.0.0.4، وهو عنوان IP الخاص ب myVM. |
| منفذ الوجهة |
أدخل * لتضمين جميع المنافذ. |
حدد Run NSG diagnostics لتشغيل الاختبار. بمجرد اكتمال تشخيص NSG للتحقق من جميع قواعد الأمان، فإنه يعرض النتيجة.
تظهر النتيجة أن هناك ثلاث قواعد أمان تم تقييمها للاتصال الوارد من الشبكة الفرعية Bastion:
-
GlobalRules: يتم تطبيق قاعدة مسؤول الأمان هذه على مستوى الشبكة الظاهرية باستخدام Azure Virtual Network Manage. تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
mySubnet-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى الشبكة الفرعية (الشبكة الفرعية للجهاز الظاهري). تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
myVM-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى واجهة الشبكة (NIC). ترفض القاعدة حركة مرور TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
حدد عرض تفاصيلmyVM-nsg للاطلاع على تفاصيل حول قواعد الأمان التي تحتوي عليها مجموعة أمان الشبكة هذه والقاعدة التي ترفض حركة المرور.
في مجموعة أمان شبكة myVM-nsg ، ترفض قاعدة الأمان DenyVnetInBound أي حركة مرور قادمة من مساحة العنوان لعلامة خدمة VirtualNetwork إلى الجهاز الظاهري. يستخدم مضيف Bastion عناوين IP من نطاق العنوان: 10.0.1.0/26، المضمنة في علامة خدمة VirtualNetwork ، للاتصال بالجهاز الظاهري. لذلك، يتم رفض الاتصال من مضيف Bastion بواسطة قاعدة الأمان DenyVnetInBound .
استخدم Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic لبدء جلسة تشخيص NSG.
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction Inbound -Protocol Tcp -Source 10.0.1.0/26 -Destination 10.0.0.4 -DestinationPort *
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the the NSG diagnostics session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
يتم عرض إخراج مشابه لإخراج المثال التالي:
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Deny",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_DenyVnetInBound",
"Action": "Deny"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_DenyVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
تظهر النتيجة أن هناك ثلاث قواعد أمان تم تقييمها للاتصال الوارد من الشبكة الفرعية Bastion:
-
GlobalRules: يتم تطبيق قاعدة مسؤول الأمان هذه على مستوى الشبكة الظاهرية باستخدام Azure Virtual Network Manage. تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
mySubnet-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى الشبكة الفرعية (الشبكة الفرعية للجهاز الظاهري). تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
myVM-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى واجهة الشبكة (NIC). ترفض القاعدة حركة مرور TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
في مجموعة أمان شبكة myVM-nsg ، ترفض قاعدة الأمان DenyVnetInBound أي حركة مرور قادمة من مساحة العنوان لعلامة خدمة VirtualNetwork إلى الجهاز الظاهري. يستخدم مضيف Bastion عناوين IP من 10.0.1.0/26، والتي تم تضمينها علامة خدمة VirtualNetwork ، للاتصال بالجهاز الظاهري. لذلك، يتم رفض الاتصال من مضيف Bastion بواسطة قاعدة الأمان DenyVnetInBound .
استخدم az network watcher run-configuration-diagnostic لبدء جلسة تشخيص NSG.
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
يتم عرض إخراج مشابه لإخراج المثال التالي:
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Deny",
"ruleName": "UserRule_DenyVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_DenyVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Deny"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
تظهر النتيجة أن هناك ثلاث قواعد أمان تم تقييمها للاتصال الوارد من الشبكة الفرعية Bastion:
-
GlobalRules: يتم تطبيق قاعدة مسؤول الأمان هذه على مستوى الشبكة الظاهرية باستخدام Azure Virtual Network Manage. تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
mySubnet-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى الشبكة الفرعية (الشبكة الفرعية للجهاز الظاهري). تسمح القاعدة بنسبة استخدام الشبكة TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
-
myVM-nsg: يتم تطبيق مجموعة أمان الشبكة هذه على مستوى واجهة الشبكة (NIC). ترفض القاعدة حركة مرور TCP الواردة من الشبكة الفرعية Bastion إلى الجهاز الظاهري.
في مجموعة أمان شبكة myVM-nsg ، ترفض قاعدة الأمان DenyVnetInBound أي حركة مرور قادمة من مساحة العنوان لعلامة خدمة VirtualNetwork إلى الجهاز الظاهري. يستخدم مضيف Bastion عناوين IP من 10.0.1.0/26، والتي تم تضمينها علامة خدمة VirtualNetwork ، للاتصال بالجهاز الظاهري. لذلك، يتم رفض الاتصال من مضيف Bastion بواسطة قاعدة الأمان DenyVnetInBound .
إضافة قاعدة أمان للسماح بنسبة استخدام الشبكة من الشبكة الفرعية Bastion
للاتصال ب myVM باستخدام Azure Bastion، يجب السماح بنسبة استخدام الشبكة من الشبكة الفرعية Bastion بواسطة مجموعة أمان الشبكة. للسماح بنسبة استخدام الشبكة من 10.0.1.0/26، أضف قاعدة أمان ذات أولوية أعلى (رقم أولوية أقل) من قاعدة DenyVnetInBound أو قم بتحرير قاعدة DenyVnetInBound للسماح بنسبة استخدام الشبكة من الشبكة الفرعية Bastion.
يمكنك إضافة قاعدة الأمان إلى مجموعة أمان الشبكة من صفحة Network Watcher التي أظهرت لك تفاصيل حول قاعدة الأمان التي ترفض حركة المرور إلى الجهاز الظاهري.
لإضافة قاعدة الأمان من داخل Network Watcher، حدد + Add security rule، ثم أدخل القيم التالية أو حددها:
| الإعداد |
القيمة |
| المصدر |
حدد IP Addresses. |
| عناوين IP المصدر/نطاقات CIDR |
أدخل 10.0.1.0/26، وهو نطاق عناوين IP للشبكة الفرعية Bastion. |
| نطاقات منافذ المصادر |
دخل*. |
| الوجهة |
حدد "Any". |
| الخدمة |
حدد مخصص. |
| نطاقات المنفذ الوجهات |
دخل*. |
| البروتوكول |
حدد "Any". |
| الإجراء |
حدد السماح. |
| أولوية |
أدخل 900، وهو أولوية أعلى من 1000 مستخدم لقاعدة DenyVnetInBound. |
| الاسم |
أدخل AllowBastionConnections. |
حدد إعادة التحقق لتشغيل جلسة التشخيص مرة أخرى. يجب أن تظهر جلسة التشخيص الآن أن نسبة استخدام الشبكة من الشبكة الفرعية Bastion مسموح بها.
تسمح قاعدة الأمان AllowBastionConnections بنسبة استخدام الشبكة من أي عنوان IP في 10.0.1.0/26 إلى الجهاز الظاهري. لأن مضيف Bastion يستخدم عناوين IP من 10.0.1.0/26، يسمح باتصاله بالجهاز الظاهري بواسطة قاعدة أمان AllowBastionConnections .
استخدم Add-AzNetworkSecurityRuleConfig لإنشاء قاعدة أمان تسمح بحركة المرور من الشبكة الفرعية Bastion. ثم استخدم Set-AzNetworkSecurityGroup لتحديث مجموعة أمان الشبكة بقاعدة الأمان الجديدة.
# Place the network security group configuration into a variable.
$networkSecurityGroup = Get-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup'
# Create a security rule.
Add-AzNetworkSecurityRuleConfig -Name 'AllowBastionConnections' -NetworkSecurityGroup $networkSecurityGroup -Priority '900' -Access 'Allow' `
-Protocol '*' -Direction 'Inbound' -SourceAddressPrefix '10.0.1.0/26' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*'
# Updates the network security group.
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $networkSecurityGroup
استخدم Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic لإعادة التحقق باستخدام جلسة تشخيص NSG جديدة.
# Create a profile for the diagnostic session.
$profile = New-AzNetworkWatcherNetworkConfigurationDiagnosticProfile -Direction 'Inbound' -Protocol 'Tcp' -Source '10.0.1.0/26' -Destination '10.0.0.4' -DestinationPort '*'
# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -Name 'myVM' -ResourceGroupName 'myResourceGroup'
# Start the diagnostic session.
Invoke-AzNetworkWatcherNetworkConfigurationDiagnostic -Location 'eastus' -TargetResourceId $vm.Id -Profile $profile | Format-List
يتم عرض إخراج مشابه لإخراج المثال التالي:
Results : {Microsoft.Azure.Commands.Network.Models.PSNetworkConfigurationDiagnosticResult}
ResultsText : [
{
"Profile": {
"Direction": "Inbound",
"Protocol": "Tcp",
"Source": "10.0.1.0/26",
"Destination": "10.0.0.4",
"DestinationPort": "*"
},
"NetworkSecurityGroupResult": {
"SecurityRuleAccessResult": "Allow",
"EvaluatedNetworkSecurityGroups": [
{
"NetworkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"MatchedRule": {
"RuleName": "VirtualNetwork",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "VirtualNetwork",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"MatchedRule": {
"RuleName": "DefaultRule_AllowVnetInBound",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "DefaultRule_AllowVnetInBound",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
},
{
"NetworkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"MatchedRule": {
"RuleName": "UserRule_AllowBastionConnections",
"Action": "Allow"
},
"RulesEvaluationResult": [
{
"Name": "UserRule_AllowBastionConnections",
"ProtocolMatched": true,
"SourceMatched": true,
"SourcePortMatched": true,
"DestinationMatched": true,
"DestinationPortMatched": true
}
]
}
]
}
}
]
تسمح قاعدة الأمان AllowBastionConnections بنسبة استخدام الشبكة من أي عنوان IP في 10.0.1.0/26 إلى الجهاز الظاهري. لأن مضيف Bastion يستخدم عناوين IP من 10.0.1.0/26، يسمح باتصاله بالجهاز الظاهري بواسطة قاعدة أمان AllowBastionConnections .
استخدم az network nsg rule create لإضافة قاعدة أمان إلى مجموعة أمان الشبكة تسمح بحركة المرور من الشبكة الفرعية Bastion.
# Add a security rule to the network security group.
az network nsg rule create --name 'AllowBastionConnections' --resource-group 'myResourceGroup' --nsg-name 'myVM-nsg' --priority '900' \
--access 'Allow' --protocol '*' --direction 'Inbound' --source-address-prefixes '10.0.1.0/26' --source-port-ranges '*' \
--destination-address-prefixes '*' --destination-port-ranges '*'
استخدم az network watcher run-configuration-diagnostic لإعادة التحقق باستخدام جلسة تشخيص NSG جديدة.
# Start the the NSG diagnostics session.
az network watcher run-configuration-diagnostic --resource 'myVM' --resource-group 'myResourceGroup' --resource-type 'virtualMachines' --direction 'Inbound' --protocol 'TCP' --source '10.0.1.0/26' --destination '10.0.0.4' --port '*'
يتم عرض إخراج مشابه لإخراج المثال التالي:
{
"results": [
{
"networkSecurityGroupResult": {
"evaluatedNetworkSecurityGroups": [
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet",
"matchedRule": {
"action": "Allow",
"ruleName": "VirtualNetwork"
},
"networkSecurityGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkAdmin/providers/Microsoft.Network/networkManagers/GlobalRules",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "VirtualNetwork",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
"matchedRule": {
"action": "Allow",
"ruleName": "DefaultRule_AllowVnetInBound"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/mySubnet-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "DefaultRule_AllowVnetInBound",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
},
{
"appliedTo": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myvm36",
"matchedRule": {
"action": "Allow",
"ruleName": "UserRule_AllowBastionConnections"
},
"networkSecurityGroupId": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myVM-nsg",
"rulesEvaluationResult": [
{
"destinationMatched": true,
"destinationPortMatched": true,
"name": "UserRule_AllowBastionConnections",
"protocolMatched": true,
"sourceMatched": true,
"sourcePortMatched": true
}
]
}
],
"securityRuleAccessResult": "Allow"
},
"profile": {
"destination": "10.0.0.4",
"destinationPort": "*",
"direction": "Inbound",
"protocol": "TCP",
"source": "10.0.1.0/26"
}
}
]
}
تسمح قاعدة الأمان AllowBastionConnections بنسبة استخدام الشبكة من أي عنوان IP في 10.0.1.0/26 إلى الجهاز الظاهري. لأن مضيف Bastion يستخدم عناوين IP من 10.0.1.0/26، يسمح باتصاله بالجهاز الظاهري بواسطة قاعدة أمان AllowBastionConnections .
تنظيف الموارد
عندما لم تعد هناك حاجة، احذف مجموعة الموارد وجميع الموارد التي تحتوي عليها:
في مربع البحث أعلى المدخل، أدخل myResourceGroup. حدد myResourceGroup من نتائج البحث.
حدد Delete resource group.
في حذف مجموعة موارد، أدخل myResourceGroup، ثم حدد حذف.
حدد حذف لتأكيد حذف مجموعة الموارد وجميع مواردها.
استخدم Remove-AzResourceGroup لحذف مجموعة الموارد وجميع الموارد التي تحتوي عليها.
# Delete the resource group and all the resources it contains.
Remove-AzResourceGroup -Name 'myResourceGroup' -Force
استخدام az group delete لإزالة مجموعة الموارد وجميع الموارد التي تحتوي عليها
# Delete the resource group and all the resources it contains.
az group delete --name 'myResourceGroup' --yes --no-wait
المحتوى ذو الصلة