تمكنك نقاط تقديم خدمة الشبكة الظاهرية من تقييد الوصول إلى الشبكة إلى بعض موارد خدمة Azure إلى شبكة فرعية لشبكة ظاهرية. يمكنك أيضًا إزالة وصول الإنترنت إلى الموارد. توفر نقاط تقديم الخدمة اتصالاً مباشرًا من الشبكة الظاهرية بخدمات Azure المدعومة، مما يسمح لك باستخدام مساحة العنوان الخاصة بالشبكة الظاهرية للوصول إلى خدمات Azure. تظل دائمًا نسبة استخدام الشبكة الموجهة إلى موارد Azure من خلال نقاط نهاية الخدمة على شبكة Microsoft Azure الأساسية.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء شبكة افتراضية باستخدام شبكة فرعية
- إضافة شبكة فرعية لتمكين نقطة نهاية خدمة
- إنشاء مورد Azure والسماح للشبكة بالوصول إليه من شبكة فرعية فقط
- توزيع جهاز ظاهري (VM) على كل شبكة فرعية
- تأكيد الوصول إلى مورد من شبكة فرعية
- تأكيد رفض الوصول إلى مورد من شبكة فرعية والإنترنت
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
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، يتم تثبيت أحدث إصدار بالفعل.
تمكين نقطة نهاية خدمة
إنشاء شبكة ظاهرية ومضيف Azure Bastion
ينشئ الإجراء التالي شبكة ظاهرية مع شبكة فرعية لمورد وشبكة فرعية Azure Bastion ومضيف Bastion:
في المدخل، ابحث عن Virtual networks وحددها.
في صفحة الشبكة الظاهرية، حدد + إنشاء.
في علامة التبويب Basics في Create virtual network، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد إنشاء جديد.
أدخل test-rg للاسم.
حدد موافق. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل vnet-1. |
| المنطقة |
حدد شرق الولايات المتحدة 2. |
حدد التالي للمتابعة إلى علامة التبويب الأمان .
في قسم Azure Bastion ، حدد Enable Azure Bastion.
يستخدم Bastion المستعرض للاتصال بالأجهزة الظاهرية في شبكتك الظاهرية عبر Secure Shell (SSH) أو بروتوكول سطح المكتب البعيد (RDP) باستخدام عناوين IP الخاصة بها. لا تحتاج الأجهزة الظاهرية إلى عناوين IP عامة أو برامج عميل أو تكوين خاص. لمزيد من المعلومات، راجع ما هو Azure Bastion؟.
إشعار
يبدأ التسعير بالساعة من اللحظة التي يتم فيها نشر Bastion، بغض النظر عن استخدام البيانات الصادرة. لمزيد من المعلومات، راجع التسعير ووحدات SKU. إذا كنت تقوم بنشر Bastion كجزء من برنامج تعليمي أو اختبار، نوصي بحذف هذا المورد بعد الانتهاء من استخدامه.
في Azure Bastion، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
| اسم مضيف Azure Bastion |
أدخل bastion. |
| عنوان IP العام ل Azure Bastion |
حدد إنشاء عنوان IP عام.
أدخل public-ip-bastion في Name.
حدد موافق. |
حدد التالي للمتابعة إلى علامة التبويب عناوين IP.
في مربع مساحة العنوان في الشبكات الفرعية، حدد الشبكة الفرعية الافتراضية.
في تحرير الشبكة الفرعية، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
| الغرض من الشبكة الفرعية |
اترك الإعداد الافتراضي الافتراضي. |
| الاسم |
أدخل subnet-1. |
|
IPv4 |
|
| نطاق عناوين IPv4 |
اترك الإعداد الافتراضي 10.0.0.0/16. |
| عنوان البدء |
اترك الإعداد الافتراضي 10.0.0.0. |
| الحجم |
اترك القيمة الافتراضية ل /24 (256 عنوانا) . |
حدد حفظ.
حدد Review + create في أسفل النافذة. بعد تجاوز التحقق من الصحة، حدد Create.
يتم تمكين نقاط تقديم الخدمة لكل خدمة، لكل شبكة فرعية.
في مربع البحث في أعلى صفحة المدخل، ابحث عن الشبكة الظاهرية. حدد الشبكات الظاهرية في نتائج البحث.
في الشبكات الظاهرية، حدد vnet-1.
في قسم Settings في vnet-1، حدد Subnets.
حدد + الشبكة الفرعية.
في صفحة إضافة شبكة فرعية، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
| الاسم |
الشبكة الفرعية الخاصة |
| نطاق عنوان الشبكة الفرعية |
اترك الإعداد الافتراضي 10.0.2.0/24. |
|
نقاط نهاية الخدمة |
|
| الخدمات |
اختر Microsoft.Storage |
حدد حفظ.
إنشاء شبكة ظاهرية
قبل إنشاء شبكة ظاهرية، يجب عليك إنشاء مجموعة موارد للشبكة الظاهرية، وجميع الموارد الأخرى التي تم إنشاؤها في هذه المقالة. قم بإنشاء مجموعة موارد باستخدام New-AzResourceGroup. ينشئ المثال التالي مجموعة موارد تسمى test-rg:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
أنشئ شبكة افتراضية باستخدام New-AzVirtualNetwork. ينشئ المثال التالي شبكة ظاهرية تسمى vnet-1 مع بادئة العنوان 10.0.0.0/16.
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
إنشاء تكوين شبكة فرعية باستخدام New-AzVirtualNetworkSubnetConfig. ينشئ المثال التالي تكوين شبكة فرعية لشبكة فرعية تسمى subnet-public:
$subpub = @{
Name = "subnet-public"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subpub
قم بإنشاء الشبكة الفرعية في الشبكة الظاهرية عن طريق كتابة تكوين الشبكة الفرعية في الشبكة الظاهرية باستخدام Set-AzVirtualNetwork:
$virtualNetwork | Set-AzVirtualNetwork
إنشاء شبكة فرعية أخرى في الشبكة الظاهرية. في هذا المثال، يتم إنشاء شبكة فرعية تسمى subnet-private مع نقطة نهاية خدمة ل Microsoft.Storage:
$subpriv = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
ServiceEndpoint = "Microsoft.Storage"
}
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subpriv
$virtualNetwork | Set-AzVirtualNetwork
نشر Azure Bastion
يستخدم Azure Bastion المستعرض للاتصال بالأجهزة الظاهرية في شبكتك الظاهرية عبر Secure Shell (SSH) أو بروتوكول سطح المكتب البعيد (RDP) باستخدام عناوين IP الخاصة بها. لا تحتاج الأجهزة الظاهرية إلى عناوين IP عامة أو برامج عميل أو تكوين خاص. لمزيد من المعلومات حول Bastion، راجع ما هو Azure Bastion؟.
يبدأ التسعير بالساعة من اللحظة التي يتم فيها نشر Bastion، بغض النظر عن استخدام البيانات الصادرة. لمزيد من المعلومات، راجع التسعير ووحدات SKU. إذا كنت تقوم بنشر Bastion كجزء من برنامج تعليمي أو اختبار، نوصي بحذف هذا المورد بعد الانتهاء من استخدامه.
تكوين شبكة فرعية Bastion لشبكتك الظاهرية. هذه الشبكة الفرعية محجوزة حصريا لموارد Bastion ويجب تسميتها AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
تعيين التكوين:
$virtualNetwork | Set-AzVirtualNetwork
إنشاء عنوان IP عام ل Bastion. يستخدم مضيف Bastion عنوان IP العام للوصول إلى SSH وRDP عبر المنفذ 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'westus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
استخدم الأمر New-AzBastion لإنشاء مضيف Bastion قياسي جديد في AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion -AsJob
يستغرق نشر موارد Bastion حوالي 10 دقائق. يمكنك إنشاء أجهزة ظاهرية في القسم التالي أثناء توزيع Bastion على شبكتك الظاهرية.
إنشاء شبكة ظاهرية
قبل إنشاء شبكة ظاهرية، يجب عليك إنشاء مجموعة موارد للشبكة الظاهرية، وجميع الموارد الأخرى التي تم إنشاؤها في هذه المقالة. أنشئ مجموعة موارد باستخدام إنشاء مجموعة az. ينشئ المثال التالي مجموعة موارد تسمى test-rg في موقع westus2 .
az group create \
--name test-rg \
--location westus2
قم بإنشاء شبكة ظاهرية بشبكة فرعية واحدة باستخدام الأمر az network vnet create.
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-public \
--subnet-prefix 10.0.0.0/24
يمكنك تمكين نقاط تقديم الخدمة فقط للخدمات التي تدعم نقاط تقديم الخدمة. اعرض الخدمات المجهزة بنقطة تقديم الخدمة المتوفرة في موقع Azure باستخدام az network vnet list-endpoint-services. يقوم المثال التالي بإرجاع قائمة بالخدمات الممكنة لنقطة نهاية الخدمة المتوفرة في منطقة westus2 . ستزداد قائمة الخدمات التي يتم عرضها بمرور الوقت كلما تم تمكين المزيد من خدمات Azure لنقطة تقديم الخدمة.
az network vnet list-endpoint-services \
--location westus2 \
--out table
إنشاء شبكة فرعية أخرى في الشبكة الظاهرية باستخدام az network vnet subnet create. في هذا المثال، يتم إنشاء نقطة نهاية خدمة للشبكة Microsoft.Storage الفرعية:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.1.0/24 \
--service-endpoints Microsoft.Storage
تقييد وصول شبكة فرعية إلى الشبكة
بشكل افتراضي، يمكن لجميع مثيلات الجهاز الظاهري في الشبكة الفرعية الاتصال بأي موارد. يمكنك تقييد الاتصال من وإلى كافة الموارد في شبكة فرعية عن طريق إنشاء مجموعة أمان شبكة اتصال وربطها بالشبكة الفرعية.
في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.
في مجموعات أمان الشبكة، حدد + إنشاء.
في علامة التبويب "Basics""Create network security group"، أدخل أو حدد المعلومات التالية:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| الاسم |
أدخل nsg-storage. |
| المنطقة |
حدد شرق الولايات المتحدة 2. |
حدد Review + create، ثم حدد Create.
إنشاء مجموعة أمان شبكة باستخدام New-AzNetworkSecurityGroup. ينشئ المثال التالي مجموعة أمان شبكة تسمى nsg-private.
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Location = 'westus2'
Name = 'nsg-private'
}
$nsg = New-AzNetworkSecurityGroup @nsgpriv
إنشاء مجموعة أمان الشبكة باستخدام az network nsg create. ينشئ المثال التالي مجموعة أمان شبكة تسمى nsg-private.
az network nsg create \
--resource-group test-rg \
--name nsg-private
إنشاء قواعد مجموعة أمان الشبكة الصادرة (NSG)
في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.
حدد nsg-storage.
حدد "Outbound security rules" في "Settings".
حدد + إضافة.
أنشئ قاعدة تسمح بالاتصال الصادر بخدمة Azure Storage. أدخل المعلومات التالية أو حددها في إضافة قاعدة أمان صادرة:
| الإعداد |
القيمة |
| المصدر |
حدد علامة الخدمة. |
| علامة خدمة المصدر |
حدد VirtualNetwork. |
| نطاقات منافذ المصادر |
اترك الإعداد الافتراضي الخاص بـ *. |
| الوجهة |
حدد علامة الخدمة. |
| علامة خدمة الوجهة |
اختار التخزين . |
| الخدمة |
اترك الإعداد الافتراضي مخصص. |
| نطاقات المنفذ الوجهات |
أدخل 445. |
| البروتوكول |
حدد "Any". |
| الإجراء |
حدد السماح. |
| أولوية |
اترك القيمة الافتراضية 100. |
| الاسم |
أدخل allow-storage-all. |
حدد + إضافة.
إنشاء قاعدة أمان صادرة أخرى تمنع الاتصال بالإنترنت. تتجاوز هذه القاعدة قاعدة افتراضية في كل مجموعات أمان الشبكة تسمح بالاتصال بالإنترنت الصادر. أكمل الخطوات السابقة بالقيم التالية في إضافة قاعدة أمان صادرة:
| الإعداد |
القيمة |
| المصدر |
حدد علامة الخدمة. |
| علامة خدمة المصدر |
حدد VirtualNetwork. |
| نطاقات منافذ المصادر |
اترك الإعداد الافتراضي الخاص بـ *. |
| الوجهة |
حدد علامة الخدمة. |
| علامة خدمة الوجهة |
حدد Internet. |
| الخدمة |
اترك الإعداد الافتراضي مخصص. |
| نطاقات المنفذ الوجهات |
أدخل *. |
| البروتوكول |
حدد "Any". |
| الإجراء |
حدد Deny. |
| أولوية |
اترك القيمة الافتراضية 110. |
| الاسم |
أدخل deny-internet-all. |
حدد إضافة.
في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.
حدد nsg-storage.
حدد الشبكات الفرعية في الإعدادات.
حدد + مساعد .
في Associate subnet، حدد vnet-1 في Virtual network. حدد subnet-private في الشبكة الفرعية.
حدد موافق.
قم بإنشاء قاعدة مجموعة أمان الشبكة باستخدام New-AzNetworkSecurityRuleConfig. تسمح القاعدة التالية بالوصول الصادر إلى عناوين IP العامة المعينة لخدمة Azure Storage:
$r1 = @{
Name = "Allow-Storage-All"
Access = "Allow"
DestinationAddressPrefix = "Storage"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 100
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule1 = New-AzNetworkSecurityRuleConfig @r1
تمنع القاعدة التالية الوصول إلى جميع عناوين IP العامة. تتجاوز القاعدة السابقة هذه القاعدة، نظراً لأولويتها العليا، والتي تسمح بالوصول إلى عناوين IP العامة لـ Azure Storage.
$r2 = @{
Name = "Deny-Internet-All"
Access = "Deny"
DestinationAddressPrefix = "Internet"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 110
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule2 = New-AzNetworkSecurityRuleConfig @r2
استخدم Get-AzNetworkSecurityGroup لاسترداد كائن مجموعة أمان الشبكة إلى متغير. استخدم Set-AzNetworkSecurityRuleConfig لإضافة القواعد إلى مجموعة أمان الشبكة.
# Retrieve the existing network security group
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Name = 'nsg-private'
}
$nsg = Get-AzNetworkSecurityGroup @nsgpriv
# Add the new rules to the security group
$nsg.SecurityRules += $rule1
$nsg.SecurityRules += $rule2
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
قم بإقران مجموعة أمان الشبكة بالشبكة الفرعية الخاصة بالشبكة الفرعية مع Set-AzVirtualNetworkSubnetConfig ثم اكتب تكوين الشبكة الفرعية إلى الشبكة الظاهرية. يربط المثال التالي مجموعة أمان الشبكة nsg-private بالشبكة الفرعية الخاصة بالشبكة الفرعية:
$subnet = @{
VirtualNetwork = $VirtualNetwork
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
ServiceEndpoint = "Microsoft.Storage"
NetworkSecurityGroup = $nsg
}
Set-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
أنشئ قواعد أمان باستخدام az network nsg rule create. تسمح القاعدة التالية بالوصول الصادر إلى عناوين IP العامة المعينة لخدمة Azure Storage:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-Storage-All \
--access Allow \
--protocol "*" \
--direction Outbound \
--priority 100 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Storage" \
--destination-port-range "*"
تحتوي كل مجموعة أمان شبكة على العديد من قواعد الأمان الافتراضية. تمنع القاعدة التالية قاعدة أمان افتراضية تسمح بالوصول الصادر إلى كل عناوين IP العامة. يرفض الخيار destination-address-prefix "Internet" الوصول الصادر إلى كل عناوين IP العامة. تتجاوز القاعدة السابقة هذه القاعدة، نظراً لأولويتها العليا، والتي تسمح بالوصول إلى عناوين IP العامة لـ Azure Storage.
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Deny-Internet-All \
--access Deny \
--protocol "*" \
--direction Outbound \
--priority 110 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Internet" \
--destination-port-range "*"
تسمح القاعدة التالية بنسبة استخدام الشبكة SSH الواردة إلى الشبكة الفرعية من أي مكان. تتجاوز القاعدة قاعدة أمان افتراضية تمنع جميع زيارات الشبكة الواردة من الإنترنت. يتم السماح لـSSH بالوصول إلى الشبكة الفرعية بحيث يمكن اختبار الاتصال في خطوة لاحقة.
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 120 \
--source-address-prefix "*" \
--source-port-range "*" \
--destination-address-prefix "VirtualNetwork" \
--destination-port-range "22"
إقران مجموعة أمان الشبكة بالشبكة الفرعية الخاصة بالشبكة الفرعية مع تحديث الشبكة الفرعية لشبكة az network vnet. يربط المثال التالي مجموعة أمان الشبكة nsg-private بالشبكة الفرعية الخاصة بالشبكة الفرعية:
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-private \
--resource-group test-rg \
--network-security-group nsg-private
تقييد وصول الشبكة إلى مورد
تختلف الخطوات المطلوبة لتقييد وصول الشبكة إلى الموارد التي تم إنشاؤها من خلال خدمات Azure، والتي تم تمكينها لنقاط نهاية الخدمة عبر الخدمات. راجع الوثائق الخاصة بالخدمات الفردية للحصول على خطوات محددة لكل خدمة. يتضمن الجزء المتبقي من هذا البرنامج التعليمي خطوات لتقييد وصول الشبكة لحساب Azure Storage، كمثال.
إنشاء حساب تخزين
إنشاء حساب Azure Storage للخطوات الواردة في هذه المقالة. إذا كان لديك حساب تخزين بالفعل، يمكنك استخدامه بدلا من ذلك.
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
حدد + إنشاء.
في علامة التبويب Basics في Create a storage account، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد اشتراك Azure الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| اسم حساب التخزين |
أدخل storage1. إذا كان الاسم غير متوفر، فأدخِل اسمًا فريدًا. |
| الموقع |
حدد (US) Eeast US 2 |
| الأداء |
اترك Standardالافتراضي. |
| التكرار |
حدد التخزين المتكرر محليًا (LRS). |
حدد "Review".
حدد إنشاء.
قم بإنشاء حساب تخزين في Azure باستخدام New-AzStorageAccount. استبدل <replace-with-your-unique-storage-account-name> باسم فريد عبر جميع مواقع Azure بعدد احرف يتراوح بين 3-24 حرفاً في الطول، باستخدام الأرقام والأحرف الصغيرة فقط.
$storageAcctName = '<replace-with-your-unique-storage-account-name>'
$storage = @{
Location = 'westus2'
Name = $storageAcctName
ResourceGroupName = 'test-rg'
SkuName = 'Standard_LRS'
Kind = 'StorageV2'
}
New-AzStorageAccount @storage
بعد إنشاء حساب التخزين، قم باسترداد مفتاح حساب التخزين إلى متغير باستخدام Get-AzStorageAccountKey:
$storagekey = @{
ResourceGroupName = 'test-rg'
AccountName = $storageAcctName
}
$storageAcctKey = (Get-AzStorageAccountKey @storagekey).Value[0]
يتم استخدام المفتاح لإنشاء مشاركة ملف في خطوة لاحقة. أدخل $storageAcctKey القيمة ولاحظها. يمكنك إدخاله يدويا في خطوة لاحقة عند تعيين مشاركة الملف إلى محرك أقراص في جهاز ظاهري.
تختلف الخطوات الضرورية لتقييد الوصول إلى الشبكة إلى الموارد التي تم إنشاؤها من خلال خدمات Azure الممكنة لنقاط تقديم الخدمة عبر الخدمات. راجع الوثائق الخاصة بالخدمات الفردية للحصول على خطوات محددة لكل خدمة. يتضمن الجزء المتبقي من هذه المقالة خطوات لتقييد الوصول إلى الشبكة لحساب Azure Storage، كمثال.
إنشاء حساب تخزين
قم بإنشاء حساب Azure Sorage باستخدام az storage account create. استبدل <replace-with-your-unique-storage-account-name> باسم فريد عبر جميع مواقع Azure بعدد احرف يتراوح بين 3-24 حرفاً في الطول، باستخدام الأرقام والأحرف الصغيرة فقط.
storageAcctName="<replace-with-your-unique-storage-account-name>"
az storage account create \
--name $storageAcctName \
--resource-group test-rg \
--sku Standard_LRS \
--kind StorageV2
بعد إنشاء حساب التخزين، استرد سلسلة الاتصال لحساب التخزين إلى متغير باستخدام az storage account show-connection-string. يتم استخدام سلسلة الاتصال لإنشاء مشاركة ملف في خطوة لاحقة.
saConnectionString=$(az storage account show-connection-string \
--name $storageAcctName \
--resource-group test-rg \
--query 'connectionString' \
--out tsv)
هام
توصي Microsoft باستخدام تدفق المصادقة الأكثر أمانا المتوفر. يتطلب تدفق المصادقة الموضح في هذا الإجراء درجة عالية جدا من الثقة في التطبيق، ويحمل مخاطر غير موجودة في تدفقات أخرى. يجب عليك استخدام هذا التدفق فقط عندما لا تكون التدفقات الأخرى الأكثر أمانا، مثل الهويات المدارة، قابلة للتطبيق.
لمزيد من المعلومات حول الاتصال بحساب تخزين باستخدام هوية مدارة، راجع استخدام هوية مدارة للوصول إلى Azure Storage.
إنشاء مشاركة ملف في حساب التخزين
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
في حسابات التخزين، حدد حساب التخزين الذي أنشأته في الخطوة السابقة.
في Data storage، حدد File shares.
اختر + File share.
أدخل المعلومات التالية أو حددها في مشاركة ملف جديد:
| الإعداد |
القيمة |
| الاسم |
أدخل file-share. |
| المستوى |
اترك الإعداد الافتراضي للمعاملات المحسنة. |
حدد Next: Backup.
إلغاء تحديد تمكين النسخ الاحتياطي.
حدد Review + create، ثم حدد Create.
قم بإنشاء سياق لحساب التخزين والمفتاح الخاص بك باستخدام New-AzStorageContext. يُلخص السياق اسم حساب التخزين ومفتاح الحساب:
$storagecontext = @{
StorageAccountName = $storageAcctName
StorageAccountKey = $storageAcctKey
}
$storageContext = New-AzStorageContext @storagecontext
إنشاء مشاركة ملف باستخدام New-AzStorageShare:
$fs = @{
Name = "file-share"
Context = $storageContext
}
$share = New-AzStorageShare @fs
قم بإنشاء مشاركة ملف في حساب التخزين باستخدام az storage share create. في خطوة لاحقة، يتم إدخال مشاركة الملفات هذه لتأكيد وصول الشبكة إليها.
az storage share create \
--name file-share \
--quota 2048 \
--connection-string $saConnectionString > /dev/null
تقييد وصول الشبكة إلى شبكة فرعية
بشكل افتراضي، تقبل حسابات التخزين اتصالات الشبكة من العملاء في أي شبكة، بما في ذلك الإنترنت. يمكنك تقييد الوصول إلى الشبكة من الإنترنت، وجميع الشبكات الفرعية الأخرى في جميع الشبكات الظاهرية (باستثناء الشبكة الفرعية الخاصة بالشبكة الفرعية في الشبكة الظاهرية vnet-1 .)
لتقييد الوصول إلى الشبكة إلى شبكة فرعية:
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
حدد حساب التخزين.
في Security + networking، حدد Networking.
في علامة التبويب Firewalls and virtual networks ، حدد Enabled من الشبكات الظاهرية المحددة وعناوين IP في الوصول إلى الشبكة العامة.
في الشبكات الظاهرية، حدد + إضافة شبكة ظاهرية موجودة.
في إضافة شبكات، أدخل المعلومات التالية أو حددها:
| الإعداد |
القيمة |
| الاشتراك |
حدد Subscription الخاص بك. |
| الشبكات الظاهرية |
حدد vnet-1. |
| الشبكات الفرعية |
حدد subnet-private. |
حدد إضافة.
حدد Save لحفظ تكوينات الشبكة الظاهرية.
بشكل افتراضي، تقبل حسابات التخزين اتصالات الشبكة من العملاء في أي شبكة. لتقييد الوصول إلى الشبكات المحددة، قم بتغيير الإجراء الافتراضي إلى Deny باستخدام Update-AzStorageAccountNetworkRuleSet. بمجرد رفض الوصول إلى الشبكة، لا يمكن الوصول إلى حساب التخزين من أي شبكة.
$storagerule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
DefaultAction = "Deny"
}
Update-AzStorageAccountNetworkRuleSet @storagerule
قم باسترداد الشبكة الظاهرية التي تم إنشاؤها باستخدام Get-AzVirtualNetwork، ثم استرداد كائن الشبكة الفرعية الخاصة إلى متغير باستخدام Get-AzVirtualNetworkSubnetConfig:
$subnetpriv = @{
ResourceGroupName = "test-rg"
Name = "vnet-1"
}
$privateSubnet = Get-AzVirtualNetwork @subnetpriv | Get-AzVirtualNetworkSubnetConfig -Name "subnet-private"
السماح بالوصول إلى الشبكة إلى حساب التخزين من الشبكة الفرعية الخاصة بالشبكة الفرعية باستخدام Add-AzStorageAccountNetworkRule.
$storagenetrule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
VirtualNetworkResourceId = $privateSubnet.Id
}
Add-AzStorageAccountNetworkRule @storagenetrule
بشكل افتراضي، تقبل حسابات التخزين اتصالات الشبكة من العملاء في أي شبكة. لتقييد الوصول إلى الشبكات المحددة، قم بتغيير الإجراء الافتراضي إلى Deny باستخدام az storage account update. بمجرد رفض الوصول إلى الشبكة، لا يمكن الوصول إلى حساب التخزين من أي شبكة.
az storage account update \
--name $storageAcctName \
--resource-group test-rg \
--default-action Deny
السماح بالوصول إلى الشبكة إلى حساب التخزين من الشبكة الفرعية الخاصة بالشبكة الفرعية مع إضافة قاعدة شبكة حساب تخزين az.
az storage account network-rule add \
--resource-group test-rg \
--account-name $storageAcctName \
--vnet-name vnet-1 \
--subnet subnet-private
توزيع الأجهزة الظاهرية إلى الشبكات الفرعية
لاختبار الوصول إلى الشبكة إلى حساب تخزين، انشر جهازا ظاهريا على كل شبكة فرعية.
إنشاء جهاز ظاهري للاختبار
ينشئ الإجراء التالي جهازا ظاهريا تجريبيا (VM) يسمى vm-1 في الشبكة الظاهرية.
في المدخل، ابحث عن الأجهزة الظاهرية وحددها.
في الأجهزة الظاهرية، حدد + إنشاء، ثم جهاز Azure الظاهري.
في علامة التبويب أساسيات، قم بإنشاء جهاز ظاهري، وأدخل أو حدد المعلومات التالية:
| الإعداد |
القيمة |
|
تفاصيل المشروع |
|
| الاشتراك |
حدد Subscription الخاص بك. |
| مجموعة الموارد |
حدد test-rg. |
|
تفاصيل المثيل |
|
| اسم الجهاز الظاهري |
أدخل vm-1. |
| المنطقة |
حدد شرق الولايات المتحدة 2. |
| خيارات التوفر |
حدد No infrastructure redundancy required. |
| نوع الأمان |
اترك الإعداد الافتراضي "Standard". |
| الصورة |
حدد Windows Server 2022 Datacenter - x64 Gen2. |
| بنية الجهاز الظاهري |
اترك الإعداد الافتراضي x64. |
| الحجم |
تحديد الحجم. |
|
حساب المسؤول |
|
| نوع المصادقة |
اختر كلمة السر. |
| اسم مستخدم |
أدخل azureuser. |
| كلمة المرور |
إدخال «password». |
| تأكيد كلمة المرور |
أعد إدخال كلمة المرور. |
|
قواعد المنفذ الوارد |
|
| المنافذ العامة الواردة |
حدد لا شيء. |
حدد علامة التبويب Networking في أعلى الصفحة.
أدخل المعلومات التالية أو حددها في علامة تبويب "Networking":
| الإعداد |
القيمة |
|
واجهة الشبكة |
|
| الشبكة الظاهرية |
حدد vnet-1. |
| الشبكة الفرعية |
حدد subnet-1 (10.0.0.0/24). |
| عنوان IP عام |
حدد لا شيء. |
| المجموعة الأمنية للشبكة NIC |
حدد خيارات متقدمة. |
| تكوين مجموعة أمان الشبكة |
حدد إنشاء جديد.
أدخل nsg-1 للاسم.
اترك الباقي في الإعدادات الافتراضية وحدد موافق. |
اترك بقية الإعدادات في الإعدادات الافتراضية وحدد Review + create.
راجع الإعدادات وحدد Create.
إشعار
لا تحتاج الأجهزة الظاهرية في شبكة ظاهرية مع مضيف معقل إلى عناوين IP عامة. يوفر Bastion عنوان IP العام، وتستخدم الأجهزة الظاهرية عناوين IP الخاصة للاتصال داخل الشبكة. يمكنك إزالة عناوين IP العامة من أي أجهزة ظاهرية في الشبكات الظاهرية المستضافة الأساسية. لمزيد من المعلومات، راجع فصل عنوان IP عام من جهاز Azure الظاهري.
إشعار
يوفر Azure عنوان IP افتراضيا للوصول الصادر للأجهزة الظاهرية التي لم يتم تعيين عنوان IP عام لها أو الموجودة في تجمع الواجهة الخلفية لموازن تحميل Azure الأساسي الداخلي. توفر آلية IP للوصول الصادر الافتراضي عنوان IP صادر غير قابل للتكوين.
يتم تعطيل عنوان IP الافتراضي للوصول الصادر عند حدوث أحد الأحداث التالية:
- يتم تعيين عنوان IP عام إلى الجهاز الظاهري.
- يتم وضع الجهاز الظاهري في تجمع الواجهة الخلفية لموازن التحميل القياسي، مع قواعد صادرة أو بدونها.
-
يتم تعيين مورد Azure NAT Gateway إلى الشبكة الفرعية للجهاز الظاهري.
لا تتمتع الأجهزة الظاهرية التي تقوم بإنشائها باستخدام مجموعات مقياس الجهاز الظاهري في وضع التنسيق المرن بالوصول الصادر الافتراضي.
لمزيد من المعلومات حول الاتصالات الصادرة في Azure، راجع الوصول الصادر الافتراضي في Azure واستخدام ترجمة عنوان الشبكة المصدر (SNAT) للاتصالات الصادرة.
إنشاء الجهاز الظاهري الثاني
إنشاء جهاز ظاهري ثان يكرر الخطوات الواردة في القسم السابق. استبدل القيم التالية في إنشاء جهاز ظاهري:
| الإعداد |
القيمة |
| اسم الجهاز الظاهري |
أدخل vm-private. |
| الشبكة الفرعية |
حدد subnet-private. |
| عنوان IP عام |
حدد لا شيء. |
| المجموعة الأمنية للشبكة NIC |
حدد لا شيء. |
تحذير
لا تنتقل إلى الخطوة التالية حتى يتم إكمال التوزيع.
أنشئ الجهاز الظاهري الأول
إنشاء جهاز ظاهري في الشبكة الفرعية العامة للشبكة الفرعية باستخدام New-AzVM. عند تشغيل الأمر التالي، تتم مطالبتك ببيانات الاعتماد. تكوين القيم المُدخَلة كاسم المستخدم وكلمة المرور للجهاز الظاهري.
$vm1 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-public"
Name = "vm-public"
PublicIpAddressName = $null
}
New-AzVm @vm1
إنشاء الجهاز الظاهري الثاني
إنشاء جهاز ظاهري في الشبكة الفرعية الخاصة بالشبكة الفرعية:
$vm2 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
Name = "vm-private"
PublicIpAddressName = $null
}
New-AzVm @vm2
يستغرق Azure بضع دقائق لإنشاء أي جهاز ظاهري. لا تستمر إلى الخطوة التالية حتى ينتهي Azure من إنشاء الجهاز الظاهري وإرجاع الإخراج إلى PowerShell.
لاختبار الوصول إلى شبكة اتصال إلى حساب تخزين، بادر بتوزيع جهاز ظاهري إلى كل شبكة فرعية.
أنشئ الجهاز الظاهري الأول
إنشاء جهاز ظاهري في الشبكة الفرعية العامة للشبكة الفرعية باستخدام az vm create. إذا لم تكن مفاتيح SSH موجودة بالفعل في موقع مفتاح افتراضي، يقوم الأمر بإنشائها. لاستخدام مجموعة محددة من المفاتيح، استخدم الخيار --ssh-key-value.
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-public \
--admin-username azureuser \
--generate-ssh-keys
ويستغرق إنشاء جهاز ظاهري بضع دقائق. بعد إنشاء الجهاز الظاهري، يعرض Azure CLI معلومات مشابهة للمثال التالي:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-public",
"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"
}
إنشاء الجهاز الظاهري الثاني
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--admin-username azureuser \
--generate-ssh-keys
ويستغرق إنشاء جهاز ظاهري بضع دقائق.
تأكيد حق الوصول إلى حساب التخزين
يتم استخدام الجهاز الظاهري الذي قمت بإنشائه سابقا الذي تم تعيينه إلى الشبكة الفرعية الخاصة بالشبكة الفرعية لتأكيد الوصول إلى حساب التخزين. يتم استخدام الجهاز الظاهري الذي قمت بإنشائه في القسم السابق الذي تم تعيينه للشبكة الفرعية 1 للتأكد من حظر الوصول إلى حساب التخزين.
الحصول على مفتاح الوصول إلى حساب التخزين
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
في حسابات التخزين، حدد حساب التخزين الخاص بك.
في Security + networking، حدد Access keys.
انسخ قيمة key1. قد تحتاج إلى تحديد الزر إظهار لعرض المفتاح.
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.
حدد vm-private.
حدد Bastion في Operations.
أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.
افتح Windows PowerShell. استخدم البرنامج النصي التالي لتعيين مشاركة ملف Azure لمحرك الأقراص Z.
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
يرجع PowerShell الإخراج مشابهًا إلى إخراج المثال التالي:
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
تم تعيين مشاركة ملف Azure بنجاح إلى محرك الأقراص Z.
أغلق اتصال Bastion إلى vm-private.
يتم استخدام الجهاز الظاهري الذي قمت بإنشائه سابقا الذي تم تعيينه إلى الشبكة الفرعية الخاصة بالشبكة الفرعية لتأكيد الوصول إلى حساب التخزين. يتم استخدام الجهاز الظاهري الذي قمت بإنشائه في القسم السابق الذي تم تعيينه للشبكة الفرعية 1 للتأكد من حظر الوصول إلى حساب التخزين.
الحصول على مفتاح الوصول إلى حساب التخزين
تسجيل الدخول إلى مدخل Azure.
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
في حسابات التخزين، حدد حساب التخزين الخاص بك.
في Security + networking، حدد Access keys.
انسخ قيمة key1. قد تحتاج إلى تحديد الزر إظهار لعرض المفتاح.
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.
حدد vm-private.
حدد الاتصال ثم الاتصال عبر Bastion في نظرة عامة.
أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.
افتح Windows PowerShell. استخدم البرنامج النصي التالي لتعيين مشاركة ملف Azure لمحرك الأقراص Z.
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
يرجع PowerShell الإخراج مشابهًا إلى إخراج المثال التالي:
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
تم تعيين مشاركة ملف Azure بنجاح إلى محرك الأقراص Z.
تأكد من أن الجهاز الظاهري ليس لديه اتصال صادر بأي عناوين IP عامة أخرى:
ping bing.com
لا تتلقى أي ردود، لأن مجموعة أمان الشبكة المقترنة بالشبكة الفرعية الخاصة لا تسمح بالوصول الصادر إلى عناوين IP العامة بخلاف العناوين المعينة لخدمة Azure Storage.
أغلق اتصال Bastion إلى vm-private.
SSH في vm-private VM.
قم بتشغيل الأمر التالي لتخزين عنوان IP للجهاز الظاهري كمتغير بيئة:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-private --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
إنشاء مجلد لنقطة تركيب:
sudo mkdir /mnt/file-share
قم بإدخال مشاركة ملف Azure في الدليل الذي أنشأته. قبل تشغيل الأمر التالي، استبدل <storage-account-name> باسم الحساب واستبدل <storage-account-key> بالمفتاح الذي استرددته في إنشاء حساب تخزين.
sudo mount --types cifs //<storage-account-name>.file.core.windows.net/my-file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
تتلقى المطالبة user@vm-private:~$. تم تحميل مشاركة ملف Azure بنجاح إلى /mnt/file-share.
تأكد من أن الجهاز الظاهري ليس لديه اتصال صادر بأي عناوين IP عامة أخرى:
ping bing.com -c 4
لا تتلقى أي ردود، لأن مجموعة أمان الشبكة المقترنة بالشبكة الفرعية الخاصة بالشبكة الفرعية لا تسمح بالوصول الصادر إلى عناوين IP العامة بخلاف العناوين المعينة لخدمة Azure Storage.
الخروج من جلسة SSH إلى vm-private VM.
تأكد من رفض الوصول إلى حساب التخزين
من vm-1
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.
حدد vm-1.
حدد Bastion في Operations.
أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.
كرر الأمر السابق لمحاولة تعيين محرك الأقراص إلى مشاركة الملف في حساب التخزين. قد تحتاج إلى نسخ مفتاح الوصول إلى حساب التخزين مرة أخرى لهذا الإجراء:
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
قد تتلقى رسالة الخطأ التالية:
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
أغلق اتصال Bastion إلى vm-1.
من جهاز محلي
في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.
في حسابات التخزين، حدد حساب التخزين الخاص بك.
في Data storage، حدد File shares.
حدد file-share.
حدد استعراض في القائمة اليسرى.
قد تتلقى رسالة الخطأ التالية:
إشعار
تم رفض الوصول لأن الكمبيوتر الخاص بك ليس في الشبكة الفرعية الخاصة بالشبكة الفرعية للشبكة الظاهرية vnet-1 .
من vm-1
في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.
حدد vm-1.
حدد Bastion في Operations.
أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.
كرر الأمر السابق لمحاولة تعيين محرك الأقراص إلى مشاركة الملف في حساب التخزين. قد تحتاج إلى نسخ مفتاح الوصول إلى حساب التخزين مرة أخرى لهذا الإجراء:
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
قد تتلقى رسالة الخطأ التالية:
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
أغلق اتصال Bastion إلى vm-1.
من جهاز الكمبيوتر الخاص بك، حاول عرض مشاركات الملفات في حساب التخزين باستخدام الأمر التالي:
$storage = @{
ShareName = "file-share"
Context = $storageContext
}
Get-AzStorageFile @storage
تم رفض الوصول. تتلقى إخراجا مشابها للمثال التالي.
Get-AzStorageFile : The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request isn't authorized to perform this operation
الكمبيوتر الخاص بك ليس في الشبكة الفرعية الخاصة بالشبكة الظاهرية vnet-1 .
SSH في vm-public VM.
قم بتشغيل الأمر التالي لتخزين عنوان IP للجهاز الظاهري كمتغير بيئة:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-public --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
إنشاء دليل لنقطة تركيب:
sudo mkdir /mnt/file-share
حاول إدخال مشاركة ملف Azure في الدليل الذي أنشأته. تفترض هذه المقالة أنك وزعت أحدث إصدار من Ubuntu. إذا كنت تستخدم إصدارات سابقة من Ubuntu، فشاهد Mount on Linux للحصول على مزيد من الإرشادات حول تحميل مشاركات الملفات. قبل تشغيل الأمر التالي، استبدل <storage-account-name> باسم الحساب واستبدل <storage-account-key> بالمفتاح الذي استرددته في إنشاء حساب تخزين:
sudo mount --types cifs //storage-account-name>.file.core.windows.net/file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
تم رفض الوصول، وتتلقى خطأ mount error(13): Permission denied ، لأنه يتم نشر vm-public VM داخل الشبكة الفرعية للشبكة الفرعية العامة .
لا تحتوي الشبكة الفرعية العامة للشبكة الفرعية على نقطة نهاية خدمة ممكنة ل Azure Storage، ويسمح حساب التخزين فقط بالوصول إلى الشبكة من الشبكة الفرعية الخاصة بالشبكة الفرعية، وليس الشبكة الفرعية العامة للشبكة الفرعية.
الخروج من جلسة SSH إلى VM-public VM.
من جهاز الكمبيوتر الخاص بك، حاول أن تعرض المشاركات في حساب التخزين الخاص بك باستخدام az storage share list. استبدل <account-name> و<account-key> باسم حساب التخزين ومفتاحه من إنشاء حساب تخزين:
az storage share list \
--account-name <account-name> \
--account-key <account-key>
تم رفض الوصول وتتلقى هذا الطلب غير مصرح به لتنفيذ خطأ العملية هذا، لأن الكمبيوتر الخاص بك ليس في الشبكة الفرعية الخاصة بالشبكة الظاهرية vnet-1.
عند الانتهاء من استخدام الموارد التي قمت بإنشائها، يمكنك حذف مجموعة الموارد وجميع مواردها.
في مدخل Azure، ابحث عن مجموعة المواردوحددها.
في صفحة Resource groups ، حدد مجموعة موارد test-rg .
في صفحة test-rg ، حدد Delete resource group.
أدخل test-rg في Enter resource group name لتأكيد الحذف، ثم حدد Delete.
عند عدم الحاجة إليها، يمكنك استخدام Remove-AzResourceGroup لإزالة مجموعة الموارد وجميع الموارد ذات الصلة:
$cleanup = @{
Name = "test-rg"
}
Remove-AzResourceGroup @cleanup -Force
تنظيف الموارد
عندما لم تعد هناك حاجة، استخدم حذف المجموعة من الألف إلى الياء لإزالة مجموعة الموارد وجميع الموارد التي تحتوي عليها.
az group delete \
--name test-rg \
--yes \
--no-wait
الخطوات التالية
في هذا البرنامج التعليمي:
لقد قمت بتمكين نقطة نهاية خدمة لشبكة فرعية لشبكة ظاهرية.
تعلمت أنه يمكنك تمكين نقاط نهاية الخدمة للموارد التي تم توزيعها من خدمات Azure المتعددة.
أنشأت حساب Azure Storage وقمت بتقييد وصول شبكة الاتصال إلى حساب التخزين للموارد فقط ضمن شبكة فرعية لشبكة ظاهرية.
لمعرفة المزيد حول نقاط نهاية الخدمة، راجع Service endpoints overview وManage subnets.
إذا كان لديك شبكات ظاهرية متعددة في حسابك، فقد ترغب في إنشاء اتصال بينها بحيث يمكن للموارد الاتصال ببعضها البعض. لمعرفة كيفية توصيل الشبكات الافتراضية، تقدم إلى البرنامج التعليمي التالي.