يمكنك استخدام مجموعة أمان شبكة 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 و443 إلى مجموعة أمان تطبيق asg-web .
في صفحة إضافة قاعدة أمان واردة، أدخل المعلومات التالية أو حددها:
الإعداد |
القيمة |
المصدر |
اترك الخيار الافتراضي "Any". |
نطاقات منافذ المصادر |
اترك الخيار الافتراضي (*). |
الوجهة |
حدد "Application security group". |
مجموعة أمان تطبيق الوجهة |
حدد asg-web. |
الخدمة |
اترك الخيار الافتراضي "Custom". |
نطاقات المنفذ الوجهات |
أدخل 80443. |
البروتوكول |
حدد TCP. |
الإجراء |
اترك الخيار الافتراضي "Allow". |
أولوية |
اترك القيمة الافتراضية 100. |
الاسم |
أدخل allow-web-all. |
حدد إضافة.
أكمل الخطوات السابقة بالمعلومات التالية:
الإعداد |
القيمة |
المصدر |
اترك الخيار الافتراضي "Any". |
نطاقات منافذ المصادر |
اترك الخيار الافتراضي (*). |
الوجهة |
حدد "Application security group". |
مجموعة أمان تطبيق الوجهة |
حدد asg-mgmt. |
الخدمة |
حدد RDP. |
الإجراء |
اترك الخيار الافتراضي "Allow". |
أولوية |
اترك القيمة الافتراضية 110. |
الاسم |
أدخل allow-rdp-all. |
حدد إضافة.
تنبيه
في هذه المقالة، يتم عرض RDP (المنفذ 3389) على الإنترنت للجهاز الظاهري الذي تم تعيينه لمجموعة أمان تطبيق asg-mgmt .
بالنسبة لبيئات الإنتاج، بدلاً من تعريض المنفذ 3389 للإنترنت، يوصى بالاتصال بموارد Azure التي تريد إدارتها باستخدام VPN أو اتصال شبكة خاصة أو Azure Bastion.
لمزيد من المعلومات حول Azure Bastion، راجع ما هو Azure Bastion؟.
قم بإنشاء قاعدة أمان باستخدام New-AzNetworkSecurityRuleConfig. ينشئ المثال التالي قاعدة تسمح بحركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-web عبر المنفذين 80 و443:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-Web-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80,443
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
ينشئ المثال التالي قاعدة تسمح بحركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-mgmt عبر المنفذ 3389:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-RDP-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 3389
}
$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
تنبيه
في هذه المقالة، يتم عرض RDP (المنفذ 3389) على الإنترنت للجهاز الظاهري الذي تم تعيينه لمجموعة أمان تطبيق asg-mgmt .
بالنسبة لبيئات الإنتاج، بدلاً من تعريض المنفذ 3389 للإنترنت، يوصى بالاتصال بموارد Azure التي تريد إدارتها باستخدام VPN أو اتصال شبكة خاصة أو Azure Bastion.
لمزيد من المعلومات حول Azure Bastion، راجع ما هو Azure Bastion؟.
أنشئ قاعدة أمان باستخدام az network nsg rule create. ينشئ المثال التالي قاعدة تسمح بحركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-web عبر المنفذين 80 و443:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80 443
ينشئ المثال التالي قاعدة تسمح بحركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-mgmt عبر المنفذ 22:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 22
تنبيه
في هذه المقالة، يتم عرض SSH (المنفذ 22) على الإنترنت للجهاز الظاهري الذي تم تعيينه إلى مجموعة أمان تطبيق asg-mgmt .
بالنسبة لبيئات الإنتاج، بدلا من تعريض المنفذ 22 للإنترنت، يوصى بالاتصال بموارد Azure التي تريد إدارتها باستخدام VPN أو اتصال شبكة خاصة أو Azure Bastion.
لمزيد من المعلومات حول Azure Bastion، راجع ما هو Azure Bastion؟.
أنشئ الأجهزة الظاهرية
إنشاء اثنين من الأجهزة الظاهرية (جهاز ظاهري) في هذه الشبكة الظاهرية.
في المدخل، ابحث عن الأجهزة الظاهرية وحددها.
في الأجهزة الظاهرية، حدد + إنشاء، ثم جهاز Azure الظاهري.
في "Create a virtual machine"، أدخل هذه المعلومات أو حددها في علامة التبويب "Basics":
الإعداد |
القيمة |
تفاصيل المشروع |
|
الاشتراك |
حدد Subscription الخاص بك. |
مجموعة الموارد |
حدد test-rg. |
تفاصيل المثيل |
|
اسم الجهاز الظاهري |
أدخل vm-web. |
المنطقة |
حدد (US) Eeast US 2 |
خيارات التوفر |
اترك القيمة الافتراضية لا يوجد تكرار مطلوب للبنية الأساسية. |
نوع الأمان |
حدد قياسي. |
الصورة |
حدد Windows Server 2022 Datacenter - x64 Gen2. |
مثيل Azure Spot |
اترك التحديد الافتراضي غير مٌحدد. |
الحجم |
تحديد الحجم. |
حساب المسؤول |
|
اسم مستخدم |
أدخل username. |
كلمة المرور |
إدخال «password». |
تأكيد كلمة المرور |
اعادة ادخال كلمة السر. |
قواعد المنفذ الوارد |
|
حدد المنافذ الداخلية |
حدد لا شيء. |
حدد Next: Disks ثم Next: Networking.
في علامة التبويب شبكة الاتصال، أدخل أو حدد المعلومات التالية:
الإعداد |
القيمة |
واجهة الشبكة |
|
الشبكة الظاهرية |
حدد vnet-1. |
الشبكة الفرعية |
حدد subnet-1 (10.0.0.0/24). |
عنوان IP عام |
اترك الإعداد الافتراضي لعنوان IP عام جديد. |
المجموعة الأمنية للشبكة NIC |
حدد لا شيء. |
حدد علامة التبويب "Review + create"، أو حدد الزر الأزرق "Review + create" أسفل الصفحة.
حدد إنشاء. قد يستغرق توزيع الجهاز الظاهري بضع دقائق.
كرر الخطوات السابقة لإنشاء جهاز ظاهري ثان يسمى vm-mgmt.
قبل إنشاء الأجهزة الظاهرية، قم باسترداد كائن الشبكة الظاهرية مع الشبكة الفرعية باستخدام 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
قم بإنشاء جهازين ظاهريين في الشبكة الظاهرية حتى يمكنك التحقق من صحة تصفية حركة المرور لاحقاً.
قم بإنشاء تكوين جهاز ظاهري باستخدام New-AzVMConfig، ثم قم بإنشاء الجهاز الظاهري باستخدام New-AzVM. ينشئ المثال التالي جهازا ظاهريا يعمل كخادم ويب. ينشئ الخيار -AsJob
الجهاز الظاهري في الخلفية، حتى يمكنك المتابعة إلى الخطوة التالية:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-web"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $webNic.Id
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
إنشاء جهاز ظاهري ليعمل كخادم إدارة:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-mgmt"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $mgmtNic.Id
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
يستغرق إنشاء الجهاز الظاهري بضع دقائق. لا تتابع إلى الخطوة التالية حتى يستكمل Azure إنشاء الجهاز الظاهري.
قم بإنشاء جهازين ظاهريين في الشبكة الظاهرية حتى يمكنك التحقق من صحة تصفية حركة المرور لاحقاً.
قم بإنشاء جهاز ظاهري VM باستخدام "az vm إنشاء". ينشئ المثال التالي جهازا ظاهريا يعمل كخادم ويب. يتم تحديد خيار --nsg ""
لمنع Azure من إنشاء مجموعة أمان شبكة افتراضية لواجهة الشبكة التي ينشئها Azure عند إنشاء الجهاز الظاهري. يطالبك الأمر بإنشاء كلمة مرور للجهاز الظاهري. لا يتم استخدام مفاتيح SSH في هذا المثال لتسهيل الخطوات اللاحقة في هذه المقالة. في بيئة الإنتاج، استخدم مفاتيح SSH للأمان.
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--authentication-type password \
--assign-identity
ويستغرق إنشاء جهاز ظاهري بضع دقائق. بعد إنشاء الجهاز الظاهري، يتم إرجاع ناتج مشابه للمثال التالي:
{
"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 إنشاء". ينشئ المثال التالي جهازا ظاهريا يعمل كخادم إدارة.
ينشئ المثال التالي جهازا ظاهريا ويضيف حساب مستخدم.
--generate-ssh-keys
تتسبب المعلمة في أن يبحث CLI عن مفتاح ssh متوفر في ~/.ssh
. إذا تم العثور على أحدها، يتم استخدام هذا المفتاح. إذا لم يكن الأمر كما هو، يتم إنشاء واحد وتخزينه في ~/.ssh
. وأخيرا، ننشر أحدث Ubuntu 22.04
صورة.
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity
ويستغرق إنشاء جهاز ظاهري بضع دقائق. لا تتابع إلى الخطوة التالية حتى يستكمل 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-mgmt.
في صفحة Overview ، حدد الزر Connect ثم حدد Native RDP.
حدد Download RDP file.
افتح ملف rdp الذي تم تنزيله وحدد "Connect". أدخل اسم المستخدم ورمز الوصول اللذين حددتهما عند إنشاء الجهاز الظاهري.
حدد موافق.
قد تتلقى تحذير شهادة أثناء عملية الاتصال. إذا تلقيت التحذير، فحدد "Yes" أو "Continue"، لمتابعة الاتصال.
ينجح الاتصال، لأن نسبة استخدام الشبكة الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-mgmt مسموح بها من خلال المنفذ 3389.
ترتبط واجهة الشبكة ل vm-mgmt بمجموعة أمان تطبيق asg-mgmt وتسمح بالاتصال.
افتح جلسة PowerShell على vm-mgmt. الاتصال ب vm-web باستخدام ما يلي:
mstsc /v:vm-web
ينجح اتصال RDP من vm-mgmt إلى vm-web لأن الأجهزة الظاهرية في نفس الشبكة يمكن أن تتواصل مع بعضها البعض عبر أي منفذ بشكل افتراضي.
لا يمكنك إنشاء اتصال RDP بالجهاز الظاهري vm-web من الإنترنت. تمنع قاعدة الأمان الخاصة ب asg-web الاتصالات بالمنفذ 3389 الوارد من الإنترنت. تُرفض نسبة استخدام الشبكة الواردة من الإنترنت إلى كافة الموارد بشكل افتراضي.
لتثبيت Microsoft IIS على الجهاز الظاهري vm-web ، أدخل الأمر التالي من جلسة PowerShell على الجهاز الظاهري vm-web :
Install-WindowsFeature -name Web-Server -IncludeManagementTools
بعد اكتمال تثبيت IIS، اقطع الاتصال بالجهاز الظاهري vm-web ، مما يتركك في اتصال سطح المكتب البعيد للجهاز الظاهري vm-mgmt .
قطع الاتصال من vm-mgmt VM.
ابحث عن vm-web في مربع بحث المدخل.
في صفحة نظرة عامة على vm-web، لاحظ عنوان IP العام لجهازك الظاهري. العنوان الموضح في المثال التالي هو 203.0.113.103. عنوانك مختلف:
للتأكد من أنه يمكنك الوصول إلى خادم ويب vm-web من الإنترنت، افتح مستعرض إنترنت على الكمبيوتر واستعرض للوصول إلى http://<public-ip-address-from-previous-step>
.
ترى الصفحة الافتراضية IIS، لأنه يسمح بنسبة استخدام الشبكة الواردة من الإنترنت إلى مجموعة أمان تطبيق asg-web من خلال المنفذ 80.
ترتبط واجهة الشبكة المرفقة ل vm-web بمجموعة أمان تطبيق asg-web وتسمح بالاتصال.
استخدم Get-AzPublicIpAddress لعرض عنوان IP العام الخاص بجهاز ظاهري. يرجع المثال التالي عنوان IP العام للجهاز الظاهري vm-mgmt :
$params = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$publicIP = Get-AzPublicIpAddress @params | Select IpAddress
استخدم الأمر التالي لإنشاء جلسة عمل سطح مكتب بعيدة باستخدام vm-mgmt VM من الكمبيوتر المحلي.
mstsc /v:$publicIP
أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري (قد تحتاج إلى تحديد المزيد من الخيارات، ثم استخدام حساب مختلف، لتحديد بيانات الاعتماد التي أدخلتها عند إنشاء الجهاز الظاهري)، ثم حدد موافق. قد تتلقى تحذيرًا بشأن الشهادة أثناء عملية تسجيل الدخول. حدد نعم لمتابعة الاتصال.
ينجح الاتصال. يسمح بالمنفذ 3389 الوارد من الإنترنت إلى مجموعة أمان تطبيق asg-mgmt . واجهة الشبكة المرفقة بالجهاز الظاهري vm-mgmt موجودة في هذه المجموعة.
استخدم الأمر التالي لإنشاء اتصال سطح مكتب بعيد إلى vm-web VM، من vm-mgmt VM، مع الأمر التالي، من PowerShell:
mstsc /v:vm-web
ينجح الاتصال لأن قاعدة الأمان الظاهرية الموجودة داخل كل مجموعة أمان شبكة تسمح بحركة المرور عبر جميع المنافذ بين جميع عناوين IP داخل الشبكة الظاهرية. لا يمكنك إنشاء اتصال سطح مكتب بعيد بالجهاز الظاهري vm-web من الإنترنت لأن قاعدة الأمان ل asg-web لا تسمح بالمنفذ 3389 الوارد من الإنترنت.
استخدم الأمر التالي لتثبيت Microsoft IIS على vm-web VM من PowerShell:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
بعد اكتمال تثبيت IIS، اقطع الاتصال بالجهاز الظاهري vm-web ، مما يتركك في اتصال سطح المكتب البعيد vm-mgmt VM. لعرض شاشة ترحيب IIS، افتح متصفح الإنترنت وتصفح للوصول إلى http://vm-web.
قطع الاتصال من vm-mgmt VM.
على جهاز الكمبيوتر الخاص بك، أدخل الأمر التالي من PowerShell لاسترداد عنوان IP العام لخادم vm-web :
$params = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
Get-AzPublicIpAddress @params | Select IpAddress
للتأكد من أنه يمكنك الوصول إلى خادم ويب vm-web من خارج Azure، افتح مستعرض إنترنت على جهاز الكمبيوتر الخاص بك واستعرض للوصول إلى http://<public-ip-address-from-previous-step>
. ينجح الاتصال. يسمح بالمنفذ 80 الوارد من الإنترنت إلى مجموعة أمان تطبيق asg-web . واجهة الشبكة المرفقة بالجهاز الظاهري vm-web موجودة في هذه المجموعة.
باستخدام عميل SSH من اختيارك، اتصل بالأجهزة الظاهرية التي تم إنشاؤها مسبقا. على سبيل المثال، يمكن استخدام الأمر التالي من واجهة سطر الأوامر مثل نظام Windows الفرعي لـ Linux لإنشاء جلسة SSH مع vm-mgmt VM. يمكنك تسجيل الدخول إلى الأجهزة الظاهرية باستخدام بيانات اعتماد معرف Microsoft Entra أو يمكنك استخدام مفتاح SSH الذي استخدمته لإنشاء الأجهزة الظاهرية. في المثال التالي، نستخدم مفتاح SSH لتسجيل الدخول إلى إدارة الجهاز الظاهري ثم تسجيل الدخول إلى الجهاز الظاهري للويب من الجهاز الظاهري للإدارة باستخدام كلمة مرور.
لمزيد من المعلومات حول كيفية SSH إلى Linux VM وتسجيل الدخول باستخدام معرف Microsoft Entra، راجع تسجيل الدخول إلى جهاز ظاهري Linux في Azure باستخدام معرف Microsoft Entra وOpenSSH.
تخزين عنوان IP للجهاز الظاهري من أجل SSH
قم بتشغيل الأمر التالي لتخزين عنوان IP للجهاز الظاهري كمتغير بيئة:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
ينجح الاتصال لأن واجهة الشبكة المرفقة بالجهاز الظاهري vm-mgmt موجودة في مجموعة أمان تطبيق asg-mgmt ، والتي تسمح للمنفذ 22 الوارد من الإنترنت.
استخدم الأمر التالي إلى SSH إلى vm-web VM من vm-mgmt VM:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
ينجح الاتصال لأن قاعدة الأمان الظاهرية الموجودة داخل كل مجموعة أمان شبكة تسمح بحركة المرور عبر جميع المنافذ بين جميع عناوين IP داخل الشبكة الظاهرية. لا يمكنك SSH إلى vm-web VM من الإنترنت لأن قاعدة الأمان ل asg-web لا تسمح بالمنفذ 22 الوارد من الإنترنت.
استخدم الأوامر التالية لتثبيت خادم ويب nginx على vm-web VM:
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
يسمح للجهاز الظاهري vm-web الصادر إلى الإنترنت باسترداد nginx لأن قاعدة الأمان الافتراضية تسمح لجميع نسبة استخدام الشبكة الصادرة إلى الإنترنت. قم بإنهاء جلسة عمل vm-web SSH، مما يتركك في username@vm-mgmt:~$
مطالبة الجهاز الظاهري vm-mgmt . لاسترداد شاشة الترحيب nginx من vm-web VM، أدخل الأمر التالي:
curl vm-web
تسجيل الخروج من vm-mgmt VM. للتأكد من أنه يمكنك الوصول إلى خادم ويب vm-web من خارج Azure، أدخل curl <publicIpAddress>
من الكمبيوتر الخاص بك. ينجح الاتصال لأن مجموعة أمان تطبيق asg-web ، التي توجد بها واجهة الشبكة المرفقة بالجهاز الظاهري vm-web ، تسمح بالمنفذ 80 الوارد من الإنترنت.
عند الانتهاء من استخدام الموارد التي قمت بإنشائها، يمكنك حذف مجموعة الموارد وجميع مواردها.
في مدخل 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
الخطوات التالية
في هذا البرنامج التعليمي، سوف تتعلّم:
- إنشاء مجموعة أمان للشبكة وربطها بشبكة فرعية افتراضية.
- تم إنشاء مجموعات أمان التطبيق للويب والإدارة.
- إنشاء جهازين ظاهريين وربط واجهات الشبكة الخاصة بهما بمجموعات أمان التطبيق.
- اختبر تصفية شبكة مجموعة أمان التطبيق.
لمعرفة المزيد حول مجموعات أمان الشبكة، راجع "Network security group overview" و"Manage a network security group".
يقوم Azure بتوجيه حركة المرور بين الشبكات الفرعية افتراضياً. يمكنك بدلا من ذلك، اختيار توجيه نسبة استخدام الشبكة بين الشبكات الفرعية من خلال جهاز ظاهري، يعمل كجدار حماية، على سبيل المثال.
لمعرفة كيفية إنشاء جدول توجيه، انتقل إلى البرنامج التعليمي التالي.