تكوين سلاسل اتصال Azure Storage

تتضمن سلسلة الاتصال معلومات التخويل المطلوبة لتطبيقك للوصول إلى البيانات في حساب Azure Storage في وقت التشغيل باستخدام تخويل المفتاح المشترك. يمكنك تكوين سلاسل الاتصال من أجل:

  • الاتصال بمحاكي تخزين Azurite.
  • الوصول إلى حساب تخزين في Azure.
  • الوصول إلى الموارد المحددة في Azure عبر توقيع وصول مشترك (SAS).

لمعرفة كيفية عرض مفاتيح الوصول إلى حسابك ونسخ سلسلة اتصال، راجع إدارة مفاتيح الوصول إلى حساب التخزين.

حماية مفاتيح الوصول خاصتك

تشبه مفاتيح الوصول إلى حساب التخزين كلمة المرور الأساسية لحساب التخزين خاصتك. كن حذرًا دائمًا لحماية مفاتيح الوصول خاصتك. استخدم Azure Key Vault لإدارة المفاتيح وتدويرها بأمان. تجنب توزيع مفاتيح الوصول إلى مستخدمين آخرين، أو ترميزها ترميزًا ثابتًا، أو حفظها في أي مكان في نص عادي يمكن للآخرين الوصول إليه. قم بتدوير المفاتيح الخاصة بك إذا كنت تعتقد أنها قد تعرضت للخطر.

ملاحظة

توصي Microsoft باستخدام Azure Active Directory (Azure AD) للسماح بالطلبات مقابل بيانات الكائن الثنائي كبير الحجم وقائمة الانتظار إن أمكن، بدلًا من استخدام مفاتيح الحساب (تخويل المفتاح المشترك). يوفر التخويل مع Azure AD أمانًا فائقًا وسهولة الاستخدام على تخويل المفتاح المشترك.

لحماية حساب تخزين Azure باستخدام نهج الوصول المشروط إلى Azure AD، يجب عدم السماح بتخويل المفتاح المشترك لحساب التخزين. لمزيد من المعلومات حول كيفية عدم السماح بتخويل المفتاح المشترك، راجع منع تخويل المفتاح المشترك لحساب تخزين Azure.

تخزين سلسلة اتصال

يحتاج تطبيقك إلى الوصول إلى سلسلة الاتصال في وقت التشغيل لتخويل الطلبات المقدمة إلى Azure Storage. لديك العديد من الخيارات لتخزين سلسلة الاتصال:

  • يمكنك تخزين سلسلة الاتصال في متغير بيئة.
  • يمكن لتطبيق يعمل على سطح المكتب أو على جهاز تخزين سلسلة الاتصال في ملف ⁧⁩app.config⁧⁩ أو⁧⁩web.config⁧⁩. أضف سلسلة الاتصال إلى قسم ⁧⁩AppSettings⁧⁩ في هذه الملفات.
  • يمكن لتطبيق يعمل في خدمة سحابة Azure تخزين سلسلة الاتصال في ملف مخطط تكوين خدمة Azure ‏(‎.cscfg). أضف سلسلة الاتصال إلى قسم ConfigurationSettings من ملف تكوين الخدمة.

يؤدي تخزين سلسلة الاتصال في ملف تكوين إلى تسهيل تحديث سلسلة الاتصال للتبديل بين محاكي تخزين Azurite وحساب تخزين Azure في السحابة. تحتاج فقط إلى تحرير سلسلة الاتصال للإشارة إلى بيئتك الهدف.

يمكنك استخدام Microsoft Azure Configuration Manager للوصول إلى سلسلة الاتصال في وقت التشغيل بغض النظر عن مكان تشغيل التطبيق.

تكوين سلسلة اتصال لـ Azurite

يدعم المحاكي حسابًا ثابتًا واحدًا ومفتاح مصادقة معروفًا لمصادقة المفتاح المشترك. يشير هذا الحساب والمفتاح إلى بيانات الاعتماد الخاصة بالمفتاح المشترك الوحيدة المسموح باستخدامها مع المحاكي. وهي كالتالي:

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

ملاحظة

مفتاح المصادقة الذي يدعمه المحاكي مخصص فقط لاختبار الوظائف الخاصة برمز مصادقة العميل. وهو لا يخدم أي غرض أمني. لا تستطيع استخدام حساب تخزين الإنتاج والمفتاح مع المحاكي. ينبغي عدم استخدام حساب التطوير مع بيانات الإنتاج.

يدعم المحاكي الاتصال خلال HTTP فقط. ومع ذلك، يعد HTTPS البروتوكول الموصى به للوصول إلى الموارد في الحساب الخاص بتخزين Azure للإنتاج.

الاتصال بحساب المحاكي بواسطة الاختصار

تتمثل أسهل طريقة للاتصال بالمحاكي من تطبيقك في تكوين سلسلة اتصال في ملف تكوين التطبيق الذي يشير إلى الاختصار UseDevelopmentStorage=true. يعبر الاختصار عن مكافئ لسلسلة الاتصال الكاملة للمحاكي الذي يحدد اسم الحساب ومفتاح الحساب ونقاط النهاية للمحاكي لكل من خدمات Azure Storage:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;

توضح القصاصة البرمجية ‎.NET التالية كيفية استخدام الاختصار من طريقة تأخذ سلسلة اتصال. على سبيل المثال، تأخذ الدالة الإنشائية BlobContainerClient(String, String) سلسلة اتصال.

BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();

تأكد من تشغيل المحاكي قبل استدعاء التعليمة البرمجية في القصاصة البرمجية.

لمزيد من المعلومات حول Azurite، راجع استخدام محاكي Azurite لتطوير Azure Storage المحلي.

تكوين سلسلة اتصال لحساب تخزين Azure

لإنشاء سلسلة اتصال لحساب تخزين Azure الخاص بك، استخدم التنسيق التالي. حدد ما إذا كنت تريد الاتصال بحساب التخزين من خلال HTTPS (مستحسن) أو HTTP، واستبدل myAccountName باسم حساب التخزين، واستبدل myAccountKey بمفتاح الوصول إلى حسابك:

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

على سبيل المثال، قد تبدو سلسلة الاتصال مشابهة لما يلي:

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

على الرغم من أن Azure Storage يدعم كلاً من HTTP وHTTPS في سلسلة اتصال، إلا أنه يوصى بشدة باستخدام HTTPS.

تلميح

يمكنك العثور على سلاسل اتصال حساب التخزين في مدخل Azure. انتقل إلى الإعدادات>مفاتيح الاختصار في جزء قائمة حساب التخزين لديك لمشاهدة سلاسل الاتصال لكل من مفاتيح الاختصار الأساسية والثانوية.

إنشاء سلسلة اتصال باستخدام توقيع وصول مشترك

إذا كنت تمتلك عنوان URL لتوقيع الوصول المشترك (SAS) يمنحك حق الوصول إلى الموارد في حساب تخزين، يمكنك استخدام SAS في سلسلة اتصال. نظرًا لأن SAS يحتوي على المعلومات المطلوبة لمصادقة الطلب، فإن سلسلة الاتصال مع SAS توفر البروتوكول، ونقطة تقديم الخدمة، وبيانات الاعتماد اللازمة للوصول إلى المورد.

لإنشاء سلسلة اتصال تتضمن توقيع وصول مشترك، حدد السلسلة بالتنسيق التالي:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

تتسم كل نقطة تقديم خدمة بأنها اختيارية، على الرغم من أن سلسلة الاتصال يجب أن تحتوي على واحدة على الأقل.

ملاحظة

يوصى باستخدام HTTPS مع SAS كأفضل الممارسات.

إذا كنت تحدد SAS في سلسلة اتصال في ملف تكوين، فقد تحتاج إلى ترميز أحرف خاصة في عنوان URL.

مثال على خدمة SAS

فيما يلي مثال على سلسلة اتصال تتضمن خدمة SAS لتخزين Blob:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

وفيما يلي مثال على نفس سلسلة الاتصال مع ترميز الأحرف الخاصة:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

مثال على SAS للحساب

فيما يلي مثال على سلسلة اتصال تتضمن SAS للحساب لتخزين الملفات وكائنات blob. لاحظ أنه يتم تحديد نقاط النهاية لكلتا الخدمتين:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

وفي ما يلي مثال على سلسلة الاتصال نفسها مع ترميز عناوين URL:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

إنشاء سلسلة اتصال لنقطة نهاية تخزين صريحة

يمكنك تحديد نقاط نهاية خدمة صريحة في سلسلة الاتصال بدلاً من استخدام نقاط النهاية الافتراضية. لإنشاء سلسلة اتصال تحدد نقطة نهاية صريحة، حدد نقطة تقديم الخدمة الكاملة لكل خدمة، بما في ذلك مواصفات البروتوكول (HTTPS (مستحسن) أو HTTP)، بالتنسيق التالي:

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

أحد السيناريوهات التي قد ترغب فيها في تحديد نقطة نهاية صريحة هو عندما تقوم بتعيين نقطة نهاية تخزين Blob إلى مجال مخصص. في هذه الحالة، يمكنك تحديد نقطة النهاية المخصصة لتخزين Blob في سلسلة الاتصال. يمكنك اختيارياً تحديد نقاط النهاية الافتراضية للخدمات الأخرى إذا كان تطبيقك يستخدمها.

فيما يلي مثال على سلسلة اتصال تحدد نقطة نهاية صريحة لخدمة Blob:

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

يحدد هذا المثال نقاط نهاية صريحة لجميع الخدمات، بما في ذلك مجال مخصص لخدمة Blob:

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

تُستخدم قيم نقطة النهاية في سلسلة الاتصال لإنشاء عناوين URI للطلب إلى خدمات التخزين، وإملاء شكل أي عناوين URI يتم إرجاعها إلى التعليمات البرمجية لديك.

إذا قمت بتعيين نقطة نهاية تخزين إلى مجال مخصص وحذفت نقطة النهاية هذه من سلسلة اتصال، فلن تتمكن من استخدام سلسلة الاتصال هذه للوصول إلى البيانات الموجودة في تلك الخدمة من التعليمات البرمجية.

لمزيد من المعلومات حول تكوين مجال مخصص لتخزين Azure، راجع تعيين مجال مخصص إلى نقطة نهاية Azure Blob Storage.

هام

يجب أن تكون قيم نقاط تقديم الخدمة في سلاسل الاتصال الخاصة بك عناوين URI ذات بنية صحيحة، بما في ذلك https:// (مستحسن) أو http://.

إنشاء سلسلة اتصال باستخدام لاحقة نقطة نهاية

لإنشاء سلسلة اتصال لخدمة تخزين في مناطق أو مثيلات ذات لواحق نقاط نهاية مختلفة، مثل Azure China 21Vianet أو Azure Government، استخدم تنسيق سلسلة الاتصال التالي. حدد ما إذا كنت تريد الاتصال بحساب التخزين من خلال HTTPS (مستحسن) أو HTTP، واستبدل myAccountName باسم حساب التخزين، واستبدل myAccountKey بمفتاح الوصول إلى حسابك، واستبدل mySuffix بلاحقة عنوان URI:

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

فيما يلي مثال على سلسلة الاتصال لخدمات التخزين في Azure China 21Vianet:

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

توزيع سلسلة اتصال

توفر مكتبة Microsoft Azure Configuration Manager لـ ‎.NET فئة لتحليل سلسلة اتصال من ملف تكوين. تقوم فئة CloudConfigurationManager بتوزيع إعدادات التكوين. فهي تقوم بتوزيع إعدادات تطبيقات العميل التي تعمل على سطح المكتب، أو على جهاز محمول، أو في جهاز Azure ظاهري، أو في خدمة سحابة Azure.

للرجوع إلى حزمة CloudConfigurationManager، أضف توجيهات using التالية:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

فيما يلي مثال يوضح كيفية استرداد سلسلة اتصال من ملف تكوين:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

يعد استخدام Azure Configuration Manager أمرًا اختياريًا. يمكنك أيضًا استخدام واجهة برمجة تطبيقات مثل فئة ConfigurationManager الخاصة بـ ‎.NET Framework.

الخطوات التالية