يمكنك استخدام مجموعة أمان شبكة Azure لتصفية نسبة استخدام الشبكة من موارد Azure وإليها في الشبكة الظاهرية لـ Azure.
تحتوي مجموعات أمان الشبكة على قواعد أمان تقوم بتصفية نسبة استخدام الشبكة حسب عنوان IP والمنفذ والبروتوكول. عندما تكون مجموعة أمان الشبكة مقترنة بشبكة فرعية، يتم تطبيق قواعد الأمان على الموارد الموزعة في تلك الشبكة الفرعية.
في هذا البرنامج التعليمي، تتعلم كيفية:
- قم بإنشاء مجموعة أمان الشبكة وقواعد الأمان
- إنشاء مجموعات أمان التطبيق
- قم بإنشاء شبكة افتراضية وربط مجموعة أمان الشبكة بشبكة فرعية
- توزيع الأجهزة الظاهرية وربط واجهات الشبكة الخاصة بها إلى مجموعات أمان التطبيق
المتطلبات الأساسية
Azure Cloud Shell
Azure يستضيف Azure Cloud Shell، بيئة تفاعلية يمكن استخدامها من خلال المستعرض. يمكنك استخدام Bash أو PowerShell مع Cloud Shell للعمل مع خدمات Azure. يمكنك استخدام أوامر Cloud Shell المثبتة مسبقًا لتشغيل التعليمات البرمجية في هذه المقالة دون الحاجة إلى تثبيت أي شيء على البيئة المحلية.
لبدء Azure Cloud Shell:
| خيار |
مثال/ رابط |
| انقر فوق جربه في الزاوية العلوية اليسرى من التعليمة البرمجية أو كتلة الأمر. تحديد جربه لا يقوم بنسخ التعليمة البرمجية أو الأمر تلقائيًا إلى Cloud Shell. |
|
| انتقل إلى https://shell.azure.com، أو حدد زر تشغيل Cloud Shell لفتح Cloud Shell في المتصفح لديك. |
|
|
حدد زر Cloud Shell على شريط القوائم في أعلى اليمين في مدخل Microsoft Azure. |
|
لاستخدام Azure Cloud Shell:
ابدأ تشغيل Cloud Shell.
حدد الزر نسخ على كتلة التعليمات البرمجية (أو كتلة الأوامر) لنسخ التعليمات البرمجية أو الأمر.
ألصق التعليمة البرمجية أو الأمر في جلسة Cloud Shell بتحديد Ctrl+Shift+Vعلى Windows وLunix، أو بتحديد Cmd+Shift+Vعلى macOS.
حدد Enter لتشغيل التعليمات البرمجية أو الأمر.
إذا اخترت تثبيت PowerShell واستخدامه محليًا، فهذه المقالة تتطلب إصدار الوحدة النمطية 1.0.0 من Azure PowerShell، أو إصدارًا أحدث. بادر بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار المثبت. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. في حالة تشغيل PowerShell محليًا، فأنت بحاجة أيضًا إلى تشغيل Connect-AzAccount لإنشاء اتصال مع Azure.
إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
- تتطلب هذه المقالة الإصدار 2.0.28 أو إصدارًا أحدث من واجهة سطر الأوامر من Azure. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.
ينشئ الإجراء التالي شبكة ظاهرية مع شبكة فرعية للمورد.
في المدخل، ابحث عن Virtual networks وحددها.
في صفحة الشبكة الظاهرية، حدد + إنشاء.
في علامة التبويب أساسياتلـ إنشاء شبكة ظاهرية، أدخل أو حدد المعلومات التالية:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد إنشاء جديد.
أدخل test-rg في Name.
حدد موافق. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل vnet-1. |
| المنطقة |
حدد شرق الولايات المتحدة 2. |
حدد التالي للمتابعة إلى علامة التبويب الأمان .
حدد التالي للمتابعة إلى علامة التبويب عناوين IP.
في مربع مساحة العنوان ضمن الشبكات الفرعية، حدد الشبكة الفرعية الافتراضية.
في جزء تحرير الشبكة الفرعية، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
|
تفاصيل الشبكة الفرعية |
|
| قالب الشبكة الفرعية |
اترك الإعداد الافتراضي كافتراضي. |
| الاسم |
أدخل subnet-1. |
| عنوان البدء |
اترك الإعداد الافتراضي 10.0.0.0. |
| حجم الشبكة الفرعية |
اترك الإعداد الافتراضي ل /24(256 عنوانا). |
حدد حفظ.
حدد Review + create في أسفل الشاشة. بعد تجاوز التحقق من الصحة، حدد إنشاء.
قم أولاً بإنشاء مجموعة موارد لجميع الموارد التي تم إنشاؤها في هذه المقالة باستخدام New-AzResourceGroup. ينشئ المثال التالي مجموعة موارد في موقع westus2 :
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
أنشئ شبكة افتراضية باستخدام New-AzVirtualNetwork. ينشئ المثال التالي ظاهري يسمى vnet-1:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
قم بإنشاء تكوين شبكة فرعية باستخدام New-AzVirtualNetworkSubnetConfig، ثم اكتب تكوين الشبكة الفرعية إلى الشبكة الظاهرية باستخدام Set-AzVirtualNetwork. يضيف المثال التالي شبكة فرعية تسمى subnet-1 إلى الشبكة الظاهرية ويربط مجموعة أمان الشبكة nsg-1 بها:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
قم أولاً بإنشاء مجموعة موارد لجميع الموارد التي تم إنشاؤها في هذه المقالة باستخدام az group create. ينشئ المثال التالي مجموعة موارد في موقع westus2 :
az group create \
--name test-rg \
--location westus2
قم بإنشاء شبكة ظاهرية باستخدام az network vnet create. ينشئ المثال التالي ظاهري يسمى vnet-1:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
أضف شبكة فرعية إلى شبكة ظاهرية باستخدام az network vnet create. يضيف المثال التالي شبكة فرعية تسمى subnet-1 إلى الشبكة الظاهرية ويربط مجموعة أمان الشبكة nsg-1 بها:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
إنشاء مجموعات أمان التطبيق
تتيح لك مجموعة أمان التطبيقات (ASGs) تجميع الخوادم معًا بوظائف مماثلة، مثل خوادم الويب.
في مربع البحث أعلى المدخل، أدخل مجموعة أمان التطبيق. حدد مجموعات أمان التطبيق في نتائج البحث.
حدد + إنشاء.
في علامة التبويب Basics في Create an application security group، أدخل هذه المعلومات أو حددها:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل asg-web. |
| المنطقة |
حدد غرب الولايات المتحدة 2. |
حدد "Review + create".
حدد + إنشاء.
كرر الخطوات السابقة، مع تحديد القيم التالية:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل asg-mgmt. |
| المنطقة |
حدد غرب الولايات المتحدة 2. |
حدد "Review + create".
حدد إنشاء.
قم بإنشاء مجموعة أمان تطبيق باستخدام New-AzApplicationSecurityGroup. تُمكِّنك مجموعة أمان التطبيق من تجميع الخوادم ذات متطلبات تصفية المنافذ المماثلة. ينشئ المثال التالي مجموعتين من مجموعات أمان التطبيق.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
قم بإنشاء مجموعة أمان تطبيق باستخدام az network asg create. تُمكِّنك مجموعة أمان التطبيق من تجميع الخوادم ذات متطلبات تصفية المنافذ المماثلة. ينشئ المثال التالي مجموعتين من مجموعات أمان التطبيق.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
إنشاء مجموعة أمان الشبكة
تقوم مجموعة أمان الشبكة (NSG) بتأمين حركة مرور الشبكة في شبكتك الافتراضية.
في مربع البحث أعلى المدخل، أدخل Network security group. حدد "Network security group" في نتائج البحث.
إشعار
في نتائج البحث عن مجموعات أمان الشبكة، قد ترى مجموعات أمان الشبكة (الكلاسيكية). حدد مجموعات أمان الشبكة.
حدد + إنشاء.
في علامة التبويب Basics في Create network security group، أدخل هذه المعلومات أو حددها:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل nsg-1. |
| الموقع |
حدد غرب الولايات المتحدة 2. |
حدد "Review + create".
حدد إنشاء.
إنشاء مجموعة أمان شبكة باستخدام New-AzNetworkSecurityGroup. ينشئ المثال التالي مجموعة أمان شبكة تسمى nsg-1:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
إنشاء مجموعة أمان الشبكة باستخدام az network nsg create. ينشئ المثال التالي مجموعة أمان شبكة تسمى nsg-1:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
إقران مجموعة أمان الشبكة بالشبكة الفرعية
في هذا القسم، يمكنك إقران مجموعة أمان الشبكة بالشبكة الفرعية للشبكة الظاهرية التي أنشأتها سابقا.
في مربع البحث أعلى المدخل، أدخل Network security group. حدد "Network security group" في نتائج البحث.
حدد nsg-1.
حدد الشبكات الفرعيةمن قسم الإعدادات في nsg-1.
في صفحة Subnets، حدد + Associate:
ضمن Associate subnet، حدد vnet-1 (test-rg) للشبكة الظاهرية.
حدد subnet-1 للشبكة الفرعية، ثم حدد OK.
استخدم Get-AzVirtualNetwork لاسترداد كائن الشبكة الظاهرية، ثم استخدم Set-AzVirtualNetworkSubnetConfig لربط مجموعة أمان الشبكة بالشبكة الفرعية. يسترد المثال التالي كائن الشبكة الظاهرية ويحدث تكوين الشبكة الفرعية لإقران مجموعة أمان الشبكة:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
استخدم az network vnet subnet update لربط مجموعة أمان الشبكة بالشبكة الفرعية. يربط المثال التالي مجموعة أمان شبكة nsg-1 بالشبكة الفرعية subnet-1 :
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
إنشاء قواعد الأمان
حدد Inbound security rules من قسم Settings في nsg-1.
في صفحة قواعد الأمان الواردة، حدد + إضافة.
أنشئ قاعدة أمان تسمح بالمنفذ 80 إلى مجموعة أمان تطبيقات ASG-web .
في صفحة إضافة قاعدة أمان واردة، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
| المصدر |
اترك الخيار الافتراضي "Any". |
| نطاقات منافذ المصادر |
اترك الخيار الافتراضي (*). |
| الوجهة |
حدد "Application security group". |
| مجموعة أمان تطبيق الوجهة |
حدد asg-web. |
| الخدمة |
اترك الخيار الافتراضي "Custom". |
| نطاقات المنفذ الوجهات |
أدخِل 80. |
| البروتوكول |
حدد TCP. |
| الإجراء |
اترك الخيار الافتراضي "Allow". |
| أولوية |
اترك القيمة الافتراضية 100. |
| الاسم |
هنا يأتي دور موقع السماح ب-http-web. |
حدد إضافة.
أكمل الخطوات السابقة بالمعلومات التالية:
| الإعداد |
القيمة |
| المصدر |
اترك الخيار الافتراضي "Any". |
| نطاقات منافذ المصادر |
اترك الخيار الافتراضي (*). |
| الوجهة |
حدد "Application security group". |
| مجموعة أمان تطبيق الوجهة |
حدد asg-mgmt. |
| الخدمة |
اترك الخيار الافتراضي "Custom". |
| نطاقات المنفذ الوجهات |
أدخل 8080. |
| البروتوكول |
حدد TCP. |
| الإجراء |
اترك الخيار الافتراضي "Allow". |
| أولوية |
اترك القيمة الافتراضية 110. |
| الاسم |
ادخل إلى ال allow 8080-mgmt. |
حدد إضافة.
قم بإنشاء قاعدة أمان باستخدام New-AzNetworkSecurityRuleConfig. المثال التالي ينشئ قاعدة تسمح بتدفق حركة المرور القادمة من الإنترنت إلى مجموعة أمان تطبيقات asg-web عبر المنفذ 80:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-HTTP-Web"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
المثال التالي ينشئ قاعدة تسمح بمرور حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات asg-mgmt عبر المنفذ 8080:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-8080-Mgmt"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 8080
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
استخدم Get-AzNetworkSecurityGroup لاسترداد مجموعة أمان الشبكة الموجودة، ثم أضف القواعد الجديدة مع += عامل التشغيل. وأخيرا، قم بتحديث مجموعة أمان الشبكة باستخدام Set-AzNetworkSecurityGroup:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
أنشئ قاعدة أمان باستخدام az network nsg rule create. المثال التالي ينشئ قاعدة تسمح بتدفق حركة المرور القادمة من الإنترنت إلى مجموعة أمان تطبيقات asg-web عبر المنفذ 80:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-HTTP-Web \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80
المثال التالي ينشئ قاعدة تسمح بمرور حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات asg-mgmt عبر المنفذ 8080:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-8080-Mgmt \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 8080
أنشئ الأجهزة الظاهرية
إنشاء اثنين من الأجهزة الظاهرية (جهاز ظاهري) في هذه الشبكة الظاهرية.
في المدخل، ابحث عن الأجهزة الظاهرية وحددها.
في الآلات الافتراضية، اختر + إنشائ، ثم الآلة الافتراضية.
في "Create a virtual machine"، أدخل هذه المعلومات أو حددها في علامة التبويب "Basics":
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| اسم الجهاز الظاهري |
أدخل vm-web. |
| المنطقة |
حدد (الولايات المتحدة) غرب الولايات المتحدة 2. |
| خيارات التوفر |
اترك القيمة الافتراضية لا يوجد تكرار مطلوب للبنية الأساسية. |
| نوع الأمان |
حدد قياسي. |
| الصورة |
حدد Ubuntu Server 24.04 LTS - x64 Gen2. |
| مثيل Azure Spot |
اترك التحديد الافتراضي غير مٌحدد. |
| الحجم |
تحديد الحجم. |
|
حساب المسؤول |
|
| نوع المصادقة |
حدد المفتاح العمومي SSH. |
| اسم مستخدم |
أدخل azureuser. |
| مصدر المفتاح العام SSH |
حدد إنشاء زوج مفاتيح جديد. |
| اسم زوج المفاتيح |
هنا يأتي دور vm-web-key. |
|
قواعد المنفذ الوارد |
|
| حدد المنافذ الداخلية |
حدد لا شيء. |
حدد Next: Disks ثم Next: Networking.
في علامة التبويب شبكة الاتصال، أدخل أو حدد المعلومات التالية:
| الإعداد |
القيمة |
|
واجهة الشبكة |
|
| الشبكة الظاهرية |
حدد vnet-1. |
| الشبكة الفرعية |
حدد subnet-1 (10.0.0.0/24). |
| عنوان IP عام |
اترك الإعداد الافتراضي لعنوان IP عام جديد. |
| المجموعة الأمنية للشبكة NIC |
حدد لا شيء. |
حدد علامة التبويب "Review + create"، أو حدد الزر الأزرق "Review + create" أسفل الصفحة.
حدد إنشاء.
عند طلب إنشاء زوج مفاتيح جديد، اختر تحميل المفتاح الخاص وإنشاء مورد. يتم تحميل المفتاح الخاص إلى جهاز الكمبيوتر المحلي الخاص بك. قد يستغرق توزيع الجهاز الظاهري بضع دقائق.
كرر الخطوات السابقة لإنشاء آلة افتراضية ثانية باسم vm-mgmt باسم زوج المفاتيح vm-mgmt-key.
قبل إنشاء الأجهزة الظاهرية، قم باسترداد كائن الشبكة الظاهرية مع الشبكة الفرعية باستخدام Get-AzVirtualNetwork:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
قم بإنشاء عنوان IP عام لكل جهاز ظاهري باستخدام New-AzPublicIpAddress:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
قم بإنشاء واجهتي شبكة باستخدام New-AzNetworkInterface، وقم بتعيين عنوان IP عام لواجهة الشبكة. ينشئ المثال التالي واجهة شبكة اتصال، ويربط عنوان IP العام العام ip-vm-web به.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
ينشئ المثال التالي واجهة شبكة اتصال، ويربط عنوان IP العام public-ip-vm-mgmt به.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
قم بإنشاء جهازين ظاهريين في الشبكة الظاهرية حتى يمكنك التحقق من صحة تصفية حركة المرور لاحقاً.
توليد مفاتيح SSH في Azure باستخدام New-AzSshKey. المثال التالي ينشئ موارد أساسية SSH لكل آلة افتراضية:
# Create SSH key for vm-web
$webSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-web-key"
}
New-AzSshKey @webSshKeyParams
# Create SSH key for vm-mgmt
$mgmtSshKeyParams = @{
ResourceGroupName = "test-rg"
Name = "vm-mgmt-key"
}
New-AzSshKey @mgmtSshKeyParams
قم بإنشاء تكوين جهاز ظاهري باستخدام New-AzVMConfig، ثم قم بإنشاء الجهاز الظاهري باستخدام New-AzVM. ينشئ المثال التالي جهازا ظاهريا يعمل كخادم ويب. ينشئ الخيار -AsJob الجهاز الظاهري في الخلفية، حتى يمكنك المتابعة إلى الخطوة التالية:
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-web-key" -ResourceGroupName "test-rg"
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-web" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $webNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
إنشاء جهاز ظاهري ليعمل كخادم إدارة:
# Get the SSH public key
$sshKey = Get-AzSshKey -Name "vm-mgmt-key" -ResourceGroupName "test-rg"
$mgmtVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmImageParams = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @mgmtVmConfigParams | `
Set-AzVMOperatingSystem -Linux -ComputerName "vm-mgmt" -Credential (New-Object System.Management.Automation.PSCredential("azureuser", (ConvertTo-SecureString "DummyP@ssw0rd" -AsPlainText -Force))) -DisablePasswordAuthentication | `
Set-AzVMSourceImage @vmImageParams | `
Add-AzVMNetworkInterface -Id $mgmtNic.Id | `
Set-AzVMOSDisk -CreateOption FromImage | `
Set-AzVMBootDiagnostic -Disable | `
Add-AzVMSshPublicKey -KeyData $sshKey.publicKey -Path "/home/azureuser/.ssh/authorized_keys"
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
يستغرق إنشاء الجهاز الظاهري بضع دقائق. لا تتابع إلى الخطوة التالية حتى يستكمل Azure إنشاء الجهاز الظاهري.
قم بإنشاء جهازين ظاهريين في الشبكة الظاهرية حتى يمكنك التحقق من صحة تصفية حركة المرور لاحقاً.
قم بإنشاء جهاز ظاهري VM باستخدام "az vm إنشاء". ينشئ المثال التالي جهازا ظاهريا يعمل كخادم ويب. يتم تحديد خيار --nsg "" لمنع Azure من إنشاء مجموعة أمان شبكة افتراضية لواجهة الشبكة التي ينشئها Azure عند إنشاء الجهاز الظاهري.
--generate-ssh-keys تتسبب المعلمة في أن يبحث CLI عن مفتاح ssh متوفر في ~/.ssh. إذا تم العثور على أحدها، يتم استخدام هذا المفتاح. إذا لم يكن كذلك، يتم توليد واحد وتخزينه في ~/.ssh:
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
ويستغرق إنشاء جهاز ظاهري بضع دقائق. بعد إنشاء الجهاز الظاهري، يتم إرجاع ناتج مشابه للمثال التالي:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
قم بإنشاء جهاز ظاهري VM باستخدام "az vm إنشاء". المثال التالي ينشئ آلة افتراضية تعمل كخادم إدارة:
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2404 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys
ويستغرق إنشاء جهاز ظاهري بضع دقائق. لا تتابع إلى الخطوة التالية حتى يستكمل Azure إنشاء الجهاز الظاهري.
ربط واجهات الشبكة بـ ASG
عندما أنشأت الأجهزة الظاهرية، أنشأ Azure واجهة شبكة لكل جهاز افتراضي، وأرفقها بالجهاز الظاهري.
أضف واجهة الشبكة لكل جهاز ظاهري إلى إحدى مجموعات أمان التطبيقات التي قمت بإنشائها مسبقًا:
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد الأجهزة الظاهرية في نتائج البحث، ثم حدد vm-web.
حدد Application security groups من قسم Networking في vm-web.
حدد Add application security groups، ثم في علامة التبويب Add application security groups ، حدد asg-web. أخيراً، حدد Add.
كرر الخطوات السابقة ل vm-mgmt، وتحديد asg-mgmt في علامة التبويب Add application security groups.
استخدم Get-AzNetworkInterface لاسترداد واجهة الشبكة للجهاز الظاهري، ثم استخدم Get-AzApplicationSecurityGroup لاسترداد مجموعة أمان التطبيق. وأخيرا، استخدم Set-AzNetworkInterface لربط مجموعة أمان التطبيق بواجهة الشبكة. يربط المثال التالي مجموعة أمان تطبيق asg-web بواجهة الشبكة vm-web-nic :
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
كرر الأمر لربط مجموعة أمان تطبيق asg-mgmt بواجهة الشبكة vm-mgmt-nic .
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
استخدم az network nic update لربط واجهة الشبكة بمجموعة أمان التطبيق. يربط المثال التالي مجموعة أمان تطبيق asg-web بواجهة الشبكة vm-web-nic :
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
كرر الأمر لربط مجموعة أمان تطبيق asg-mgmt بواجهة الشبكة vm-mgmt-nic .
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
اختبار عوامل تصفية حركة مرور البيانات
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.
اختر vm-web.
اختر أمر تشغيل من قسم العمليات .
اختر RunShellScript.
في صفحة تشغيل أوامر السكريبت ، أدخل الأوامر التالية:
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
حدد تشغيل. انتظر حتى يكتمل النص بنجاح.
في صفحة نظرة عامة على vm-web، لاحظ عنوان IP العام لجهازك الظاهري.
للتأكد من إمكانية الوصول إلى خادم الويب الخاص بالوين الافتراضي من الإنترنت على المنفذ 80، افتح متصفح الإنترنت على جهازك وتصفح إلى http://<public-ip-address-from-previous-step>.
ترى صفحة nginx الافتراضية، لأن حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات ASG-web مسموح بها عبر المنفذ 80.
ترتبط واجهة الشبكة المرفقة ل vm-web بمجموعة أمان تطبيق asg-web وتسمح بالاتصال.
حاول الوصول إلى vm-web على المنفذ 443 من خلال التصفح في https://<public-ip-address-vm-web> متصفحك. الاتصال يفشل أو ينتهي لأن قاعدة الأمان في شبكة ASG لا تسمح بدخول المنفذ 443 من الإنترنت.
الآن قم بتكوين vm-mgmt مع nginx على المنفذ 8080. اختر vm-mgmt من صفحة الآلات الافتراضية .
اختر أمر تشغيل من قسم العمليات .
اختر RunShellScript.
في قسم تشغيل سكريبت الأوامر ، أدخل الأوامر التالية لتثبيت nginx على المنفذ 8080:
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
حدد تشغيل. انتظر حتى يكتمل النص بنجاح.
في صفحة النظرة العامة على vm-mgmt، اذكر عنوان IP العام لجهازك الافتراضي.
للتأكد من إمكانية الوصول إلى خادم الويب VM-MGMT من الإنترنت على المنفذ 8080، افتح متصفح الإنترنت على جهازك وتصفح إلى http://<public-ip-address-vm-mgmt>:8080.
ترى صفحة nginx الافتراضية لأن حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات asg-mgmt مسموح بها عبر المنفذ 8080.
حاول الوصول إلى VM-MGMT على المنفذ 80 عن طريق التصفح إلى في http://<public-ip-address-vm-mgmt> متصفحك. يفشل الاتصال أو ينتهي بسبب عدم وجود قاعدة أمان تسمح بدخول المنفذ 80 إلى مجموعة أمان تطبيقات asg-mgmt .
ترتبط واجهة الشبكة المرفقة ل vm-web بمجموعة أمان تطبيق asg-web وتسمح بالاتصال.
تثبيت nginx على vm-web باستخدام Invoke-AzVMRunCommand:
$webInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-web"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
"@
}
Invoke-AzVMRunCommand @webInstallParams
قد يستغرق الأمر بضع دقائق حتى يكتمل. بعد الانتهاء، قم بتجربة الوصول إلى الويب على vm-web.
احصل على عنوان IP العام ل vm-web:
$webIPParams = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
$webIP = Get-AzPublicIpAddress @webIPParams
Write-Host "vm-web IP: $($webIP.IpAddress)"
للتأكد من إمكانية الوصول إلى خادم الويب الخاص بالوين الافتراضي من الإنترنت على المنفذ 80، افتح متصفح الإنترنت على جهازك وتصفح إلى http://<vm-web-ip-address>.
ترى صفحة nginx الافتراضية لأن حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات ASG-web مسموح بها عبر المنفذ 80. واجهة الشبكة المرفقة بالجهاز الظاهري vm-web موجودة في هذه المجموعة.
حاول الوصول إلى vm-web على المنفذ 443 من خلال التصفح في https://<vm-web-ip-address> متصفحك. الاتصال يفشل أو ينتهي لأن قاعدة الأمان في شبكة ASG لا تسمح بدخول المنفذ 443 من الإنترنت.
الآن قم بتثبيت nginx على المنفذ 8080 على vm-mgmt:
$mgmtInstallParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-mgmt"
CommandId = "RunShellScript"
ScriptString = @"
sudo apt-get update -y
sudo apt-get install -y nginx
# Configure nginx to listen on port 8080
sudo tee /etc/nginx/sites-available/default > /dev/null <<'EOF'
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
}
EOF
sudo systemctl restart nginx
"@
}
Invoke-AzVMRunCommand @mgmtInstallParams
احصل على عنوان IP العام ل vm-mgmt:
$mgmtIPParams = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtIP = Get-AzPublicIpAddress @mgmtIPParams
Write-Host "vm-mgmt IP: $($mgmtIP.IpAddress)"
للتأكد من إمكانية الوصول إلى خادم الويب VM-MGMT من الإنترنت على المنفذ 8080، افتح متصفح الإنترنت على جهازك وتصفح إلى http://<vm-mgmt-ip-address>:8080.
ترى صفحة nginx الافتراضية لأن حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات asg-mgmt مسموح بها عبر المنفذ 8080.
حاول الوصول إلى VM-MGMT على المنفذ 80 عن طريق التصفح إلى في http://<vm-mgmt-ip-address> متصفحك. يفشل الاتصال أو ينتهي بسبب عدم وجود قاعدة أمان تسمح بدخول المنفذ 80 إلى مجموعة أمان تطبيقات asg-mgmt .
تثبيت nginx على vm-web باستخدام az vm run-command invoke:
az vm run-command invoke \
--resource-group test-rg \
--name vm-web \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && sudo apt-get install -y nginx && sudo systemctl enable nginx && sudo systemctl start nginx"
احصل على عنوان IP العام ل vm-web:
webIP=$(az vm show --show-details --resource-group test-rg --name vm-web --query publicIps --output tsv)
echo "vm-web IP: $webIP"
للتأكد من إمكانية الوصول إلى خادم الويب الخاص بالويب الخاص ب VM من الإنترنت على المنفذ 80، استخدم Curl:
curl http://$webIP
ينجح الاتصال لأن مجموعة أمان تطبيق asg-web ، التي توجد بها واجهة الشبكة المرفقة بالجهاز الظاهري vm-web ، تسمح بالمنفذ 80 الوارد من الإنترنت.
حاول الوصول إلى الويب الافتراضي على المنفذ 443:
curl -k https://$webIP
الاتصال يفشل أو ينتهي لأن قاعدة الأمان في شبكة ASG لا تسمح بدخول المنفذ 443 من الإنترنت.
الآن قم بتثبيت nginx على المنفذ 8080 على vm-mgmt:
az vm run-command invoke \
--resource-group test-rg \
--name vm-mgmt \
--command-id RunShellScript \
--scripts "sudo apt-get update -y && \
sudo apt-get install -y nginx && \
sudo bash -c 'cat > /etc/nginx/sites-available/default <<EOF
server {
listen 8080 default_server;
listen [::]:8080 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files \\\$uri \\\$uri/ =404;
}
}
EOF' && \
sudo systemctl restart nginx"
احصل على عنوان IP العام ل vm-mgmt:
mgmtIP=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
echo "vm-mgmt IP: $mgmtIP"
للتأكد من إمكانية الوصول إلى خادم الويب VM-MGMT من الإنترنت على المنفذ 8080، استخدم Curl:
curl http://$mgmtIP:8080
ينجح الاتصال لأن حركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيقات asg-mgmt مسموح بها عبر المنفذ 8080.
حاول الوصول إلى VM-MGMT على المنفذ 80:
curl http://$mgmtIP
يفشل الاتصال أو ينتهي بسبب عدم وجود قاعدة أمان تسمح بدخول المنفذ 80 إلى مجموعة أمان تطبيقات asg-mgmt .
عند الانتهاء من استخدام الموارد التي قمت بإنشائها، يمكنك حذف مجموعة الموارد وجميع مواردها.
في مدخل Azure، ابحث عن مجموعة المواردوحددها.
في صفحة Resource groups ، حدد مجموعة موارد test-rg .
في صفحة test-rg ، حدد Delete resource group.
أدخل test-rg في Enter resource group name لتأكيد الحذف، ثم حدد Delete.
عند عدم الحاجة إليها، يمكنك استخدام Remove-AzResourceGroup لإزالة مجموعة الموارد وجميع الموارد ذات الصلة:
$params = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @params
عندما لم تعد هناك حاجة، استخدم حذف المجموعة من الألف إلى الياء لإزالة مجموعة الموارد وجميع الموارد التي تحتوي عليها.
az group delete \
--name test-rg \
--yes \
--no-wait
الخطوات التالية
في هذا البرنامج التعليمي، سوف تتعلّم:
- إنشاء مجموعة أمان للشبكة وربطها بشبكة فرعية افتراضية.
- أنشأت مجموعات أمان التطبيقات لحركة المرور على الويب والإدارة.
- أنشأت جهازين افتراضيين في لينكس مع مصادقة مفاتيح SSH وربطت واجهات الشبكة الخاصة بهما بمجموعات أمان التطبيقات.
- قمت بتثبيت خوادم ويب nginx على كلا الجهازين الافتراضيين بتكوينات منافذ مختلفة.
- اختبرت مجموعة أمان التطبيقات تصفية الشبكة من خلال إثبات أن vm-web يسمح بالمنفذ 80 (HTTP) لكنه يمنع المنفذ 443، بينما vm-mgmt يسمح بالمنفذ 8080 لكنه يمنع المنفذ 80 (HTTP).
لمعرفة المزيد حول مجموعات أمان الشبكة، راجع "Network security group overview" و"Manage a network security group".
يقوم Azure بتوجيه حركة المرور بين الشبكات الفرعية افتراضياً. يمكنك بدلا من ذلك، اختيار توجيه نسبة استخدام الشبكة بين الشبكات الفرعية من خلال جهاز ظاهري، يعمل كجدار حماية، على سبيل المثال.
لمعرفة كيفية إنشاء جدول توجيه، انتقل إلى البرنامج التعليمي التالي.