استخدم مكتبة Azure Identity للحصول على رمز وصول للترخيص

تعمل مكتبة عميل Azure Identity على تبسيط عملية الحصول على رمز وصول OAuth 2.0 للترخيص باستخدام Azure Active Directory (Azure AD) عبر Azure SDK. تتكامل أحدث إصدارات مكتبات عميل Azure Storage لـ .NET و Java و Python و JavaScript و Go مع مكتباتAzure Identity لكل من هذه اللغات لتوفير وسيلة بسيطة وآمنة للحصول على رمز وصول للمصادقة على طلبات تخزين Azure .

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

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

لمزيد من المعلومات حول مكتبة عميل Azure Identity للغتك، راجع إحدى المقالات التالية:

قم بتعيين أدوار Azure للوصول إلى البيانات

عندما يحاول مسؤول أمان Azure AD الوصول إلى البيانات في حساب Azure Storage، يجب أن يكون لدى أساس الأمان أذونات لمورد البيانات. سواء كان أساس الأمان هو هوية مُدارة في Azure أو حساب مستخدم Azure AD يقوم بتشغيل التعليمات البرمجية في بيئة التطوير، يجب تعيين دور Azure الذي يمنح الوصول إلى البيانات فيAzure Storage لمدير الأمان. للحصول على معلومات حول تعيين أذونات الوصول إلى البيانات عبر Azure RBAC، راجع إحدى المقالات التالية:

ملاحظة

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

مصادقة المستخدم في بيئة التطوير

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

يمكنك أيضًا إنشاء مبدأ الخدمة وتعيين متغيرات البيئة التي يمكن لبيئة التطوير قراءتها في وقت التشغيل.

المصادقة على مدير الخدمة في بيئة التطوير

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

إنشاء كيان الخدمة

لإنشاء أصل خدمة باستخدام Azure CLI وتعيين دور Azure، اتصل بالأمر az ad sp create-for-rbac. قم بتوفير دور الوصول إلى بيانات Azure Storage لتعيينه إلى مدير الخدمة الجديد. بالإضافة إلى ذلك، قم بتوفير نطاق لتعيين الدور. لمزيد من المعلومات حول الأدوار المضمنة المتوفرة لتخزين Azure، راجع الأدوار المضمنة في Azure.

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

يستخدم المثال التالي Azure CLI لإنشاء مدير خدمة جديد وتعيين دور مساهم بيانات Blob التخزين له، محدد النطاق لحساب التخزين:

az ad sp create-for-rbac \
    --name <service-principal> \
    --role "Storage Blob Data Contributor" \
    --scopes /subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

سيقوم الأمر az ad sp create-for-rbac بإرجاع قائمة بخصائص الخدمة الأساسية بتنسيق JSON. انسخ هذه القيم بحيث يمكنك استخدامها لإنشاء متغيرات البيئة الضرورية في الخطوة التالية.

{
    "appId": "generated-app-ID",
    "displayName": "service-principal-name",
    "name": "http://service-principal-uri",
    "password": "generated-password",
    "tenant": "tenant-ID"
}

لمزيد من المعلومات حول كيفية إنشاء مدير خدمة، راجع إحدى المقالات التالية:

هام

قد يستغرق نشر تعيينات الأدوار في Azure عدة دقائق.

تعيين متغيرات البيئة

تقرأ مكتبة عميل Azure Identity القيم من ثلاثة متغيرات بيئة في وقت التشغيل لمصادقة أساس الخدمة. يصف الجدول التالي القيمة المطلوب تعيينها لكل متغير بيئة.

متغير البيئة القيمة
AZURE_CLIENT_ID معرّف التطبيق لمدير الخدمة
AZURE_TENANT_ID معرف مستأجر Azure AD لمدير الخدمة
AZURE_CLIENT_SECRET كلمة المرور التي تم إنشاؤها لمدير الخدمة

هام

بعد تعيين متغيرات البيئة، أغلق نافذة وحدة التحكم الخاصة بك وأعد فتحها. إذا كنت تستخدم Visual Studio أو بيئة تطوير أخرى، فقد تحتاج إلى إعادة تشغيل بيئة التطوير من أجل تسجيل متغيرات البيئة الجديدة.

لمزيد من المعلومات، راجع إنشاء هوية لتطبيق Azure في المدخل.

الحصول على رمز الوصول للحصول على إذن

توفر مكتبة عميل Azure Identity الفئات التي يمكنك استخدامها للحصول على رمز وصول للمصادقة على الطلبات باستخدام Azure AD. تتضمن مكتبات عملاء Azure Storage مُنشئين لكائنات عميل الخدمة التي تأخذ بيانات اعتماد الرمز المميز كمعلمة. يمكنك استخدام الاثنين معًا لتفويض طلبات تخزين Azure بسهولة باستخدام بيانات اعتماد Azure AD.

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

يوضح المثال التالي كيفية استخدام DefaultAzureCredential للحصول على رمز مميز في NET. يستخدم التطبيق بعد ذلك الرمز المميز لإنشاء عميل خدمة جديد، والذي يتم استخدامه بعد ذلك لإنشاء حاوية blob. على الرغم من أن هذا المثال يستخدم .NET وخدمة تخزين Blob، تعمل فئة DefaultAzureCredential بشكل مشابه مع اللغات الأخرى ومع خدمات Azure الأخرى.

static void CreateBlobContainer(string accountName, string containerName)
{
    // Construct the blob container endpoint from the arguments.
    string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
                                                accountName,
                                                containerName);

    // Get a token credential and create a service client object for the blob container.
    BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
                                                                  new DefaultAzureCredential());

    // Create the container if it does not exist.
    containerClient.CreateIfNotExists();
}

لمزيد من المعلومات حول استخدام فئة DefaultAzureCredential للمصادقة على هوية مُدارة للوصول إلى Azure Storage، راجع مكتبة عميل Azure Identity لـ .NET.

راجع أيضًا