تمرين - تقييد الوصول إلى Azure Storage باستخدام نقاط نهاية الخدمة
بصفتك مهندس الحلول، فأنت تخطط لنقل ملفات الرسوم التخطيطية الهندسية الحساسة إلى Azure Storage. ينبغي أن تكون الملفات قابلة للوصول فقط من أجهزة الكمبيوتر الموجودة داخل شبكة الشركة. تريد إنشاء نقطة نهاية خدمة شبكة ظاهرية لـ Azure Storage لتأمين الاتصال بحسابات التخزين الخاصة بك.
ستنشئ في هذه الوحدة نقطة نهاية خدمة، وتستخدم قواعد الشبكة لتقييد الوصول إلى Azure Storage. ستنشئ نقطة نهاية خدمة شبكة ظاهرية لـ Azure Storage على الشبكة الفرعية لـ قواعد البيانات. ستتحقق بعد ذلك من أن جهاز DataServer الظاهري يمكنه الوصول إلى Azure Storage. وأخيرًا، ستتحقق من أن جهاز AppServer الظاهري، الموجود على شبكة فرعية مختلفة، لا يمكنه الوصول إلى التخزين.
إضافة قواعد إلى مجموعة أمان الشبكة
تأكد من أن الاتصالات مع Azure Storage تمر عبر نقطة نهاية الخدمة. إضافة القواعد الصادرة للسماح بالوصول إلى خدمة التخزين، ولكن رفض كافة نسبة الاستخدام الأخرى على الإنترنت.
لإنشاء قاعدة صادرة للسماح بالوصول إلى «Storage»، شغِّل الأمر التالي في Cloud Shell:
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name Allow_Storage \ --priority 190 \ --direction Outbound \ --source-address-prefixes "VirtualNetwork" \ --source-port-ranges '*' \ --destination-address-prefixes "Storage" \ --destination-port-ranges '*' \ --access Allow \ --protocol '*' \ --description "Allow access to Azure Storage"لإنشاء قاعدة صادرة لرفض كافة أنواع الوصول إلى الإنترنت، شغِّل الأمر التالي في Cloud Shell:
az network nsg rule create \ --resource-group $rg \ --nsg-name ERP-SERVERS-NSG \ --name Deny_Internet \ --priority 200 \ --direction Outbound \ --source-address-prefixes "VirtualNetwork" \ --source-port-ranges '*' \ --destination-address-prefixes "Internet" \ --destination-port-ranges '*' \ --access Deny \ --protocol '*' \ --description "Deny access to Internet."
ينبغي أن تكون لديك الآن القواعد التالية في ERP-SERVERS-NSG:
| اسم القاعدة | الاتجاه | أولوية | الغرض |
|---|---|---|---|
| AllowSSHRule | الواردة | 100 | السماح بـ SSH الواردة |
| httpRule | الواردة | 150 | رفض من DataServer إلى AppServer على المنفذ 80 |
| Allow_Storage | الصادرة | 190 | السماح بالوصول إلى Azure Storage |
| Deny_Internet | الصادرة | 200 | رفض الوصول إلى الإنترنت من الشبكة الظاهرية |
عند هذه النقطة، يمتلك كل من AppServer وDataServer حق الوصول إلى خدمة Azure Storage.
تكوين حساب التخزين ومشاركة الملفات
في هذه الخطوة، ستقوم بإنشاء حساب تخزين جديد، ثم إضافة مشاركة ملف Azure إلى هذا الحساب. هذه المشاركة هي المكان الذي ستخزن فيه مخططاتك الهندسية.
لإنشاء حساب تخزين للمستندات الهندسية، شغِّل تشغيل الأمر التالي في Cloud Shell:
STORAGEACCT=$(az storage account create \ --resource-group $rg \ --name engineeringdocs$RANDOM \ --sku Standard_LRS \ --query "name" | tr -d '"')لتخزين المفتاح الأساسي للتخزين في متغير، شغِّل الأمر التالي في Cloud Shell:
STORAGEKEY=$(az storage account keys list \ --resource-group $rg \ --account-name $STORAGEACCT \ --query "[0].value" | tr -d '"')لإنشاء مشاركة ملف Azure تسمى erp-data-share، قم بتشغيل الأمر التالي في Cloud Shell:
az storage share create \ --account-name $STORAGEACCT \ --account-key $STORAGEKEY \ --name "erp-data-share"
تمكين نقطة نهاية الخدمة
تحتاج الآن إلى تكوين حساب التخزين بحيث لا يمكن الوصول إليه إلا من خوادم قاعدة البيانات، عن طريق تعيين نقطة نهاية التخزين للشبكة الفرعية قواعد البيانات. تحتاج وقتها إلى إضافة قاعدة أمان إلى حساب التخزين.
لتعيين نقطة نهاية Microsoft.Storage للشبكة الفرعية، شغِّل الأمر التالي في Cloud Shell:
az network vnet subnet update \ --vnet-name ERP-servers \ --resource-group $rg \ --name Databases \ --service-endpoints Microsoft.Storageلرفض كافة الوصول لتغيير الإجراء الافتراضي إلى
Deny، شغِّل الأمر التالي في Cloud Shell. بعد رفض الوصول إلى الشبكة، لا يمكن الوصول إلى حساب التخزين من أي شبكة.az storage account update \ --resource-group $rg \ --name $STORAGEACCT \ --default-action Denyلتقييد الوصول إلى حساب التخزين، شغِّل الأمر التالي في Cloud Shell. بشكل افتراضي، تكون حسابات التخزين مفتوحة لقبول كافة نسب الاستخدام. تريد نسبة الاستخدام فقط من الشبكة الفرعية قواعد البيانات لتكون قادرًا على الوصول إلى التخزين.
az storage account network-rule add \ --resource-group $rg \ --account-name $STORAGEACCT \ --vnet-name ERP-servers \ --subnet Databases
اختبار الوصول إلى موارد التخزين
في هذه الخطوة، سيتم الاتصال بكلٍّ من الخوادم الخاصة بك، والتحقق من أن DataServer لديه حق الوصول فقط إلى مشاركة ملف Azure على حساب التخزين.
لحفظ عناوين IP العامة لـ AppServer وDataServer إلى متغيرات، شغِّل الأمر التالي في Cloud Shell:
APPSERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name AppServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" DATASERVERIP="$(az vm list-ip-addresses \ --resource-group $rg \ --name DataServer \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)"للاتصال بجهاز AppServer الظاهري، ومحاولة تحميل مشاركة ملف Azure، بادر بتشغيل الأمر التالي في Cloud Shell:
ssh -t azureuser@$APPSERVERIP \ "mkdir azureshare; \ sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \ -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp; findmnt \ -t cifs; exit; bash"أدخل كلمة المرور التي استخدمتها عند إنشاء الجهاز الظاهري.
ينبغي أن تتضمن الاستجابة الرسالة
mount error. لا يُسمح بهذا الاتصال، لأنه لا توجد نقطة نهاية خدمة لحساب التخزين على الشبكة الفرعية التطبيقات.للاتصال بجهاز DataServer الظاهري، ومحاولة تحميل مشاركة ملف Azure، شغِّل الأمر التالي في Cloud Shell:
ssh -t azureuser@$DATASERVERIP \ "mkdir azureshare; \ sudo mount -t cifs //$STORAGEACCT.file.core.windows.net/erp-data-share azureshare \ -o vers=3.0,username=$STORAGEACCT,password=$STORAGEKEY,dir_mode=0777,file_mode=0777,sec=ntlmssp;findmnt \ -t cifs; exit; bash"أدخل كلمة المرور التي استخدمتها عند إنشاء الجهاز الظاهري.
ينبغي أن يكون التركيب ناجحًا، ويجب أن تتضمن الاستجابة تفاصيل نقطة التركيب. يُسمح بذلك لأنك قمت بإنشاء نقطة نهاية الخدمة لحساب التخزين على الشبكة الفرعية قواعد البيانات.
باستخدام نقطة نهاية خدمة التخزين على الشبكة الفرعية قواعد البيانات، لقد تحققت الآن من أن DataServer يمكنه الوصول إلى التخزين. كما أنك تحققت من أن AppServer لا يمكنه الوصول إلى التخزين. وهذا لأن هذا الخادم موجود على شبكة فرعية مختلفة، ولا يمكنه الوصول إلى نقطة نهاية خدمة الشبكة الظاهرية.
هل تحتاج إلى مساعدة؟ راجع دليل استكشاف الأخطاء وإصلاحها الذي نقدمه أو يمكنك توفير ملاحظات معينة عبر الإبلاغ عن مشكلة.