تكوين نقاط نهاية الشبكة للوصول إلى مشاركات ملفات Azure
مقالة
توفر ملفات Azure نوعين رئيسيين من نقاط النهاية للوصول إلى مشاركات ملفات Azure:
نقاط النهاية العامة، التي لها عنوان IP عام ومن الممكن الوصول إليها من أي مكان في العالم.
نقاط النهاية الخاصة، الموجودة داخل شبكة افتراضية ولها عنوان IP خاص من داخل مساحة عنوان تلك الشبكة الافتراضية.
توجد نقاط النهاية العامة والخاصة في حساب تخزين Azure. حساب التخزين هو بناء إدارة تمثل مجموعة مشتركة من التخزين حيث يمكنك نشر مشاركات ملفات متعددة، بالإضافة إلى موارد تخزين أخرى، مثل حاويات الكائن الثنائي كبير الحجم وقوائم الانتظار.
تركز هذه المقالة على كيفية تكوين نقاط النهاية لحساب التخزين للوصول إلى مشاركة ملف Azure مباشرة. ينطبق جزء كبير من هذه المقالة أيضا على كيفية تشغيل Azure File Sync مع نقاط النهاية العامة والخاصة لحساب التخزين. لمزيد من المعلومات حول اعتبارات الشبكات ل Azure File Sync، راجع تكوين وكيل Azure File Sync وإعدادات جدار الحماية.
نوصي بقراءة اعتبارات شبكة ملفات Azure قبل قراءة هذا الدليل.
ينطبق على
نوع مشاركة الملف
SMB
NFS
مشاركات الملفات القياسية (GPv2)، حسابات التخزين المكررة محليًا (LRS) وحسابات التخزين المكررة في المنطقة (ZRS)
مشاركات الملفات القياسية (GPv2)، حساب تخزين مكرر جغرافي (GRS) أو حساب تخزين مكرر للمنطقة الجغرافية (GZRS)
مشاركات الملفات المدفوعة (FileStorage)، حسابات التخزين المكررة محليًا (LRS) وحسابات التخزين المكررة في المنطقة (ZRS)
المتطلبات الأساسية
تفترض هذه المقالة أنك قمت بالفعل بإنشاء اشتراك Azure. وإذا لم يكن لديك اشتراك بالفعل، فأنشئ حسابًا مجانيًا قبل البدء.
تفترض هذه المقالة أنك قمت بالفعل بإنشاء مشاركة ملف Azure في حساب تخزين تريد الاتصال به من أماكن العمل. لمعرفة كيفية إنشاء مشاركة ملف Azure، راجع إنشاء مشاركة ملف Azure.
يمكنك تكوين نقاط النهاية لتقييد الوصول إلى الشبكة إلى حساب تخزينك. هناك طريقتان لتقييد الوصول إلى حساب تخزين إلى شبكة ظاهرية:
أنشئ نقطة نهاية خاصةواحدة أو أكثر لحساب التخزين وقيد الوصول إلى نقطة النهاية العامة. وهذا يضمن أن حركة المرور التي تنشأ من داخل الشبكات الظاهرية المطلوبة هي فقط التي يمكنها الوصول إلى مشاركات ملفات Azure داخل حساب التخزين. راجع تكلفة الارتباط الخاص.
تقييد نقطة النهاية العامة إلى شبكة ظاهرية واحدة أو أكثر. يعمل هذا باستخدام قدرة الشبكة الظاهرية تسمى نقاط نهاية الخدمة. عند تقييد حركة المرور إلى حساب تخزين عبر نقطة نهاية خدمة، لا تزال تصل إلى حساب التخزين عبر عنوان IP العام، ولكن الوصول ممكن فقط من المواقع التي تحددها في التكوين الخاص بك.
قم بإنشاء نقطة نهاية خاصة
عند إنشاء نقطة نهاية خاصة لحساب التخزين الخاص بك، يتم نشر موارد Azure التالية:
نقطة نهاية خاصة: مورد Azure يمثل نقطة النهاية الخاصة بحساب التخزين. يمكنك التفكير في هذا كمورد يربط حساب التخزين وواجهة شبكة.
واجهة الشبكة (NIC): واجهة الشبكة التي تحتفظ بعنوان IP خاص داخل الشبكة الظاهرية /الشبكة الفرعية المحددة. هذا هو المورد نفسه بالضبط الذي يتم نشره عند نشر جهاز ظاهري (VM)، ولكن بدلا من تعيينه إلى جهاز ظاهري، يكون مملوكا لنقطة النهاية الخاصة.
منطقة نظام أسماء المجالات الخاصة (DNS): إذا لم تكن قد نشرت نقطة نهاية خاصة لهذه الشبكة الظاهرية من قبل، فسيتم نشر منطقة DNS خاصة جديدة لشبكتك الظاهرية. سيتم أيضا إنشاء سجل DNS A لحساب تخزين في المنطقة DNS هذه. في حالة كنت قد قمت بالفعل بتوزيع نقطة نهاية خاصة في هذه الشبكة الظاهرية، إضافة سجل A جديد لحساب التخزين إلى منطقة DNS الحالية. يعد نشر منطقة DNS اختياريا. ومع ذلك، يوصى به بشدة، وهو مطلوب إذا كنت تقوم بتحميل مشاركات ملفات Azure مع كيان خدمة AD أو باستخدام واجهة برمجة تطبيقات FileREST.
إشعار
تستخدم هذه المقالة لاحقة DNS لحساب التخزين لمناطق Azure العامة core.windows.net. ينطبق هذا التعليق أيضا على سحابات Azure السيادية مثل سحابة Azure US Government وMicrosoft Azure التي تديرها سحابة 21Vianet. ما عليك سوى استبدال اللاحقات المناسبة للبيئة الخاصة بك.
انتقل إلى حساب التخزين الذي ترغب في إنشاء نقطة نهاية خاصة له. في جدول محتويات حساب التخزين، حدد الشبكات، واتصالات نقطة النهاية الخاصة، ثم + نقطة النهاية الخاصة لإنشاء نقطة نهاية خاصة جديدة.
يحتوي المعالج الناتج على صفحات متعددة لإكمالها.
في جزء الأساسيات، حدد الاشتراك المطلوب ومجموعة الموارد والاسم واسم واجهة الشبكة والمنطقة لنقطة النهاية الخاصة. يمكن أن تكون هذه ما تريده، ولا يجب أن تتطابق مع حساب التخزين بأي شكل من الأشكال، على الرغم من أنه يجب عليك إنشاء نقطة النهاية الخاصة في نفس منطقة الشبكة الظاهرية التي ترغب في إنشاء نقطة النهاية الخاصة فيها. ثم حدد التالي: المورد.
في جزء المورد، حدد ملف للمورد الفرعي الهدف. ثم حدد التالي: الشبكة الافتراضية.
يسمح لك جزء شبكة ظاهرية بتحديد الشبكة الظاهرية والشبكة الفرعية المحددة التي ترغب في إضافة نقطة النهاية إليها. حدد تخصيص عنوان IP ثابت أو ديناميكي لنقطة النهاية الخاصة الجديدة. إذا حددت ثابت، فستحتاج أيضًا إلى توفير اسم وعنوان IP خاص. يمكنك أيضًا تحديد مجموعة أمان تطبيق اختياريًا. عند الانتهاء، حدد التالي: DNS.
يحتوي جزء DNS على معلومات تكامل نقطة النهاية الخاصة مع منطقة DNS خاصة. تأكد من صحة الاشتراك ومجموعة الموارد، ثم حدد التالي: العلامات.
يمكنك اختياريا تطبيق العلامات لتصنيف مواردك، مثل تطبيق اسم البيئةواختبار القيمة على جميع موارد الاختبار. أدخل أزواج الأسماء/القيم إذا رغبت في ذلك، ثم حدد التالي: مراجعة + إنشاء.
انقر على Review + create لإنشاء نقطة النهاية الخاصة.
لإنشاء نقطة نهاية خاصة لحساب التخزين الخاص بك، تحتاج أولا إلى الحصول على مرجع إلى حساب التخزين الخاص بك والشبكة الفرعية للشبكة الظاهرية التي تريد إضافة نقطة النهاية الخاصة إليها. استبدل<storage-account-resource-group-name>،<storage-account-name>،<vnet-resource-group-name>،<vnet-name> و<vnet-subnet-name>أدناه:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<vnet-subnet-name>"
# Get storage account reference, and throw error if it doesn't exist
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction SilentlyContinue
if ($null -eq $storageAccount) {
$errorMessage = "Storage account $storageAccountName not found "
$errorMessage += "in resource group $storageAccountResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get virtual network reference, and throw error if it doesn't exist
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName `
-ErrorAction SilentlyContinue
if ($null -eq $virtualNetwork) {
$errorMessage = "Virtual network $virtualNetworkName not found "
$errorMessage += "in resource group $virtualNetworkResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get reference to virtual network subnet, and throw error if it doesn't exist
$subnet = $virtualNetwork | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
Write-Error `
-Message "Subnet $subnetName not found in virtual network $virtualNetworkName." `
-ErrorAction Stop
}
لإنشاء نقطة نهاية خاصة، يجب إنشاء اتصال خدمة ارتباط خاص بحساب التخزين. يعد اتصال خدمة الارتباط الخاص مدخلا لإنشاء نقطة النهاية الخاصة.
# Disable private endpoint network policies
$subnet.PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork = $virtualNetwork | `
Set-AzVirtualNetwork -ErrorAction Stop
# Create a private link service connection to the storage account.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$storageAccountName-Connection" `
-PrivateLinkServiceId $storageAccount.Id `
-GroupId "file" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageAccountResourceGroupName `
-Name "$storageAccountName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
يؤدي إنشاء منطقة DNS خاصة ب Azure إلى تمكين الاسم الأصلي لحساب التخزين، مثل storageaccount.file.core.windows.net الحل إلى عنوان IP الخاص داخل الشبكة الظاهرية. على الرغم من أنه اختياري من منظور إنشاء نقطة نهاية خاصة، إلا أنه مطلوب صراحة لتركيب مشاركة ملف Azure مباشرة باستخدام مبدأ مستخدم AD أو الوصول عبر واجهة برمجة تطبيقات REST.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$storageAccountSuffix = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty StorageEndpointSuffix
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
$dnsZoneName = "privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
$dnsZone = Get-AzPrivateDnsZone | `
Where-Object { $_.Name -eq $dnsZoneName } | `
Where-Object {
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $_.ResourceGroupName `
-ZoneName $_.Name `
-ErrorAction SilentlyContinue
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so create new one.
$dnsZone = New-AzPrivateDnsZone `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsZoneName `
-ErrorAction Stop
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $virtualNetworkResourceGroupName `
-ZoneName $dnsZoneName `
-Name "$virtualNetworkName-DnsLink" `
-VirtualNetworkId $virtualNetwork.Id `
-ErrorAction Stop
}
الآن بعد أن أصبح لديك مرجع إلى منطقة DNS الخاصة، يجب عليك إنشاء سجل A خاص بحساب التخزين الخاص بك.
لإنشاء نقطة نهاية خاصة لحساب التخزين الخاص بك، تحتاج أولا إلى الحصول على مرجع إلى حساب التخزين الخاص بك والشبكة الفرعية للشبكة الظاهرية التي تريد إضافة نقطة النهاية الخاصة إليها. استبدل<storage-account-resource-group-name>،<storage-account-name>،<vnet-resource-group-name>،<vnet-name> و<vnet-subnet-name>أدناه:
storageAccountResourceGroupName="<storage-account-resource-group-name>"
storageAccountName="<storage-account-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<vnet-subnet-name>"
# Get storage account ID
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
# Get virtual network ID
virtualNetwork=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "id" | \
tr -d '"')
# Get subnet ID
subnet=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
لإنشاء نقطة نهاية خاصة، يجب عليك أولا التأكد من تعيين نهج شبكة نقطة النهاية الخاصة بالشبكة الفرعية إلى معطل. ثم يمكنك إنشاء نقطة النهاية الخاصة باستخدام الأمرaz network private-endpoint create.
يؤدي إنشاء منطقة DNS خاصة ب Azure إلى تمكين الاسم الأصلي لحساب التخزين، مثل storageaccount.file.core.windows.net الحل إلى عنوان IP الخاص داخل الشبكة الظاهرية. على الرغم من أنه اختياري من منظور إنشاء نقطة نهاية خاصة، إلا أنه مطلوب صراحة لتركيب مشاركة ملف Azure باستخدام مدير مستخدم AD أو الوصول عبر واجهة برمجة تطبيقات REST.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
storageAccountSuffix=$(az cloud show \
--query "suffixes.storageEndpoint" | \
tr -d '"')
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
dnsZoneName="privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
possibleDnsZones=""
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
possibleDnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" | \
tr -d '"')
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -z $link ]
then
echo "1" > /dev/null
else
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z $dnsZone ]
then
# No matching DNS zone attached to virtual network, so create a new one
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" | \
tr -d '"')
az network private-dns link vnet create \
--resource-group $virtualNetworkResourceGroupName \
--zone-name $dnsZoneName \
--name "$virtualNetworkName-DnsLink" \
--virtual-network $virtualNetwork \
--registration-enabled false \
--output none
dnsZoneResourceGroup=$virtualNetworkResourceGroupName
fi
الآن بعد أن أصبح لديك مرجع إلى منطقة DNS الخاصة، يجب عليك إنشاء سجل A خاص بحساب التخزين الخاص بك.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateEndpointIP=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[0].privateIPAddress" | \
tr -d '"')
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name $storageAccountName \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name $storageAccountName \
--ipv4-address $privateEndpointIP \
--output none
إذا كان لديك جهاز ظاهري داخل شبكتك الظاهرية، أو قمت بتكوين إعادة توجيه DNS كما هو موضح في تكوين إعادة توجيه DNS لملفات Azure، يمكنك اختبار إعداد نقطة النهاية الخاصة بك بشكل صحيح. قم بتشغيل الأوامر التالية من PowerShell أو سطر الأوامر أو المحطة الطرفية (تعمل ل Windows أو Linux أو macOS). يجب الاستبدال <storage-account-name> باسم حساب التخزين المناسب:
إذا كان لديك جهاز ظاهري داخل شبكتك الظاهرية، أو قمت بتكوين إعادة توجيه DNS كما هو موضح في تكوين إعادة توجيه DNS لملفات Azure، يمكنك اختبار إعداد نقطة النهاية الخاصة بشكل صحيح عن طريق تشغيل الأوامر التالية:
إذا نجحت، يجب أن تشاهد الإخراج التالي، حيث 192.168.0.5 هو عنوان IP الخاص لنقطة النهاية الخاصة في شبكتك الظاهرية:
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.windows CNAME 60 Answer storageaccount.privatelink.file.core.windows.net
.net
Name : storageaccount.privatelink.file.core.windows.net
QueryType : A
TTL : 600
Section : Answer
IP4Address : 192.168.0.5
إذا كان لديك جهاز ظاهري داخل شبكتك الظاهرية، أو قمت بتكوين إعادة توجيه DNS كما هو موضح في تكوين إعادة توجيه DNS لملفات Azure، يمكنك اختبار إعداد نقطة النهاية الخاصة بشكل صحيح عن طريق تشغيل الأوامر التالية:
إذا نجح كل شيء، يجب أن تشاهد الإخراج التالي، حيث 192.168.0.5 هو عنوان IP الخاص لنقطة النهاية الخاصة في شبكتك الظاهرية. يجب عليك الاستمرار في استخدام storageaccount.file.core.windows.net لتحميل مشاركة الملف بدلا من privatelink المسار.
يتطلب منك تقييد الوصول إلى نقطة النهاية العامة أولا تعطيل الوصول العام إلى نقطة النهاية العامة. تعطيل الوصول إلى نقطة النهاية العامة لا يؤثر على نقاط النهاية الخاصة. بعد تعطيل نقطة النهاية العامة، يمكنك تحديد شبكات أو عناوين IP معينة قد تستمر في الوصول إليها. بشكل عام، تقيد معظم سياسات جدار الحماية لحساب التخزين الوصول إلى الشبكة إلى شبكة ظاهرية واحدة أو أكثر.
تعطيل إمكانية الوصول إلى نقطة النهاية العامة
عند تعطيل إمكانية الوصول إلى نقطة النهاية العامة، لا يزال من الممكن الوصول إلى حساب التخزين من خلال نقاط النهاية الخاصة به. وبخلاف ذلك، سيتم رفض الطلبات الصالحة إلى نقطة النهاية العامة الخاصة بحساب التخزين، ما لم تكن منمصدر مسموح به على وجه التحديد.
انتقل إلى حساب التخزين الذي ترغب في تقييد كل الوصول إلى نقطة النهاية العامة له. في جدول المحتويات الخاص بحساب التخزين، حددالشبكات.
في أعلى الصفحة، حدد الزر التبادلي Enabled from selected virtual networks and IP addresses . سيؤدي ذلك إلى إلغاء إخفاء عدد من الإعدادات للتحكم في تقييد نقطة النهاية العامة. حدد السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا للسماح خدمات Microsoft الطرف الأول الموثوق به مثل Azure File Sync بالوصول إلى حساب التخزين.
سيرفض الأمر PowerShell التالي كل حركة المرور إلى نقطة النهاية العامة لحساب التخزين. لاحظ أن هذا الأمر يحتوي على المعلمة-Bypassالمعينة إلى AzureServices. سيسمح ذلك لخدمات الطرف الأول الموثوق بها مثل Azure File Sync بالوصول إلى الحساب الخاص بالتخزين عبر نقطة النهاية العامة.
# This assumes $storageAccount is still defined from the beginning of this of this guide.
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
سيرفض أمر CLI التالي كل نسب استخدام الشبكة إلى نقطة النهاية العامة لحساب التخزين. لاحظ أن هذا الأمر يحتوي على المعلمة-bypassالمعينة إلى AzureServices. سيسمح ذلك لخدمات الطرف الأول الموثوق بها مثل Azure File Sync بالوصول إلى الحساب الخاص بالتخزين عبر نقطة النهاية العامة.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this guide.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
تقييد الوصول إلى نقطة النهاية العامة إلى شبكات ظاهرية معينة
عند تقييد حساب التخزين على شبكات ظاهرية معينة، فإنك تسمح للطلبات إلى نقطة النهاية العامة من داخل الشبكات الظاهرية المحددة. يعمل هذا باستخدام قدرة الشبكة الظاهرية تسمى نقاط نهاية الخدمة. يمكن استخدام هذا مع أو بدون نقاط نهاية خاصة.
انتقل إلى حساب التخزين الذي ترغب في تقييد نقطة النهاية العامة الخاصة به على شبكات افتراضية محددة. في جدول المحتويات الخاص بحساب التخزين، حددالشبكات.
في أعلى الصفحة، حدد الزر التبادلي Enabled from selected virtual networks and IP addresses . سيؤدي ذلك إلى إلغاء إخفاء عدد من الإعدادات للتحكم في تقييد نقطة النهاية العامة. حدد +Add existing virtual network لتحديد الشبكة الظاهرية المحددة التي يجب السماح لها بالوصول إلى حساب التخزين عبر نقطة النهاية العامة. حدد شبكة ظاهرية وشبكة فرعية لتلك الشبكة الظاهرية، ثم حدد تمكين.
حدد السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا للسماح خدمات Microsoft الطرف الأول الموثوق به مثل Azure File Sync بالوصول إلى حساب التخزين.
لتقييد الوصول إلى نقطة النهاية العامة لحساب التخزين على شبكات افتراضية محددة باستخدام نقاط نهاية الخدمة، نحتاج أولا إلى جمع معلومات حول حساب التخزين والشبكة الافتراضية. املأ <storage-account-resource-group> و<storage-account-name> و<vnet-resource-group-name> و<vnet-name> و<subnet-name> لجمع هذه المعلومات.
من أجل السماح لحركة المرور من الشبكة الافتراضية من خلال تصميم شبكة Azure بالوصول إلى نقطة النهاية العامة لحساب التخزين ، يجب أن تعرض الشبكة الفرعية للشبكة الافتراضية Microsoft.Storage نقطة نهاية الخدمة. ستضيف Microsoft.Storage أوامر PowerShell التالية نقطة نهاية الخدمة إلى الشبكة الفرعية إذا لم تكن موجودة بالفعل.
لتقييد الوصول إلى نقطة النهاية العامة لحساب التخزين على شبكات افتراضية محددة باستخدام نقاط نهاية الخدمة، نحتاج أولا إلى جمع معلومات حول حساب التخزين والشبكة الافتراضية. املأ <storage-account-resource-group> و<storage-account-name> و<vnet-resource-group-name> و<vnet-name> و<subnet-name> لجمع هذه المعلومات.
من أجل السماح لحركة المرور من الشبكة الافتراضية من خلال تصميم شبكة Azure بالوصول إلى نقطة النهاية العامة لحساب التخزين ، يجب أن تعرض الشبكة الفرعية للشبكة الافتراضية Microsoft.Storage نقطة نهاية الخدمة. ستضيف Microsoft.Storage أوامر CLI التالية نقطة نهاية الخدمة إلى الشبكة الفرعية إذا لم تكن موجودة بالفعل.
serviceEndpoints=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "serviceEndpoints[].service" \
--output tsv)
foundStorageServiceEndpoint=false
for serviceEndpoint in $serviceEndpoints
do
if [ $serviceEndpoint = "Microsoft.Storage" ]
then
foundStorageServiceEndpoint=true
fi
done
if [ $foundStorageServiceEndpoint = false ]
then
serviceEndpointList=""
for serviceEndpoint in $serviceEndpoints
do
serviceEndpointList+=$serviceEndpoint
serviceEndpointList+=" "
done
serviceEndpointList+="Microsoft.Storage"
az network vnet subnet update \
--ids $subnet \
--service-endpoints $serviceEndpointList \
--output none
fi
تتمثل الخطوة الأخيرة في تقييد نسبة استخدام الشبكة إلى حساب التخزين في إنشاء قاعدة شبكة وإضافتها إلى مجموعة قواعد الشبكة الخاصة بحساب التخزين.