الوصول إلى مشاركات ملفات Azure باستخدام معرف Microsoft Entra مع Azure Files OAuth عبر REST

تتيح Azure Files OAuth عبر REST الوصول للقراءة والكتابة على مستوى المسؤول إلى مشاركات ملفات Azure للمستخدمين والتطبيقات عبر بروتوكول مصادقة OAuth ، باستخدام معرف Microsoft Entra للوصول المستند إلى واجهة برمجة تطبيقات REST. يمكن للمستخدمين والمجموعات وخدمات الطرف الأول مثل مدخل Microsoft Azure وخدمات وتطبيقات الجهات الخارجية التي تستخدم واجهات REST الآن استخدام مصادقة OAuth والتخويل مع حساب Microsoft Entra للوصول إلى البيانات في مشاركات ملفات Azure. يمكن أيضا لأوامر PowerShell cmdlets وAzure CLI التي تستدعي واجهات برمجة تطبيقات REST استخدام OAuth للوصول إلى مشاركات ملفات Azure.

هام

يجب عليك استدعاء واجهة برمجة تطبيقات REST باستخدام عنوان صريح للإشارة إلى هدفك لاستخدام الامتياز الإضافي. ينطبق هذا أيضا على الوصول إلى Azure PowerShell وAzure CLI.

القيود

يدعم Azure Files OAuth عبر REST فقط واجهات برمجة تطبيقات بيانات FileREST التي تدعم العمليات على الملفات والدلائل. OAuth غير مدعوم على واجهات برمجة تطبيقات مستوى بيانات FilesREST التي تدير موارد FileService وFilesShare. يتم استدعاء واجهات برمجة التطبيقات للإدارة هذه باستخدام مفتاح حساب التخزين أو رمز SAS المميز، ويتم عرضها من خلال مستوى البيانات لأسباب قديمة. نوصي باستخدام واجهات برمجة التطبيقات لمستوى التحكم (موفر موارد التخزين - Microsoft.Storage) التي تدعم OAuth لجميع أنشطة الإدارة المتعلقة بموارد FileService وFileShare.

يتم دعم تخويل عمليات بيانات الملفات باستخدام معرف Microsoft Entra فقط لإصدارات REST API 2022-11-02 والإصدارات الأحدث. راجع تعيين الإصدار ل Azure Storage.

حالات استخدام العميل

يمكن أن تفيد مصادقة OAuth والتخويل باستخدام Azure Files عبر واجهة REST API العملاء في السيناريوهات التالية.

تطوير التطبيقات وتكامل الخدمة

تمكن مصادقة OAuth والتخويل المطورين من إنشاء التطبيقات التي تصل إلى واجهات برمجة تطبيقات AZURE Storage REST باستخدام هويات المستخدم أو التطبيق من معرف Microsoft Entra.

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

يمكن لأدوات DevOps مثل مدخل Microsoft Azure وPowerShell وCLI وAzCopy ومستكشف التخزين إدارة البيانات باستخدام هوية المستخدم، مما يلغي الحاجة إلى إدارة مفاتيح الوصول إلى التخزين أو توزيعها.

الهويات المُدارة

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

استبدال مفتاح حساب التخزين

يوفر معرف Microsoft Entra أمانا فائقا وسهولة في الاستخدام عبر الوصول إلى المفتاح المشترك. يمكنك استبدال الوصول إلى مفتاح حساب التخزين بمصادقة OAuth والتخويل للوصول إلى مشاركات Azure File بامتيازات read-all/write-all. يوفر هذا النهج أيضا تدقيقا وتعقبا أفضل لوصول مستخدم معين.

الوصول المتميز وأذونات الوصول لعمليات البيانات

لاستخدام Azure Files OAuth عبر ميزة REST، هناك أذونات إضافية مطلوبة ليتم تضمينها في دور RBAC المعين للمستخدم أو المجموعة أو كيان الخدمة. يتم تقديم إجراءين جديدين للبيانات كجزء من هذه الميزة:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

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

توفر هذه الميزة دورين مضمنين جديدين يتضمنان هذه الإجراءات الجديدة.

الدور إجراءات البيانات
قارئ بيانات ملف التخزين المتميز Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
مساهم متميز لبيانات ملف التخزين Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

تشبه هذه الأدوار الجديدة الأدوار المضمنة في Storage File Data SMB Share Reader and Storage File Data SMB Share Elevated Contributor ، ولكن هناك بعض الاختلافات:

  • تحتوي الأدوار الجديدة على إجراءات البيانات الإضافية المطلوبة للوصول إلى OAuth.

  • عندما يستدعي المستخدم أو المجموعة أو كيان الخدمة المعين لأدوار Storage File Data Privileged Reader أو Storage File Data Privileged Contributor واجهة برمجة تطبيقات بيانات FilesREST باستخدام OAuth أو المستخدم أو المجموعة أو كيان الخدمة:

    • Storage File Data Privileged Reader: الوصول الكامل للقراءة على جميع البيانات في المشاركات لجميع حسابات التخزين المكونة بغض النظر عن أذونات NTFS على مستوى الملف/الدليل التي تم تعيينها.
    • Storage File Data Privileged Contributor: قراءة كاملة، وكتابة، وتعديل قوائم التحكم في الوصول، وحذف الوصول إلى جميع البيانات في المشاركات لجميع حسابات التخزين المكونة بغض النظر عن أذونات NTFS على مستوى الملف/الدليل التي تم تعيينها.
  • باستخدام هذه الأذونات والأدوار الخاصة، سيتجاوز النظام أي أذونات على مستوى الملف/الدليل ويسمح بالوصول إلى بيانات مشاركة الملفات.

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

  • حساب التخزين
  • خدمات إدارة مشاركة الملفات
  • خدمات البيانات (البيانات الموجودة في مشاركة الملف)

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

هام

سترث أي حالات استخدام حرف بدل محددة للمسار Microsoft.Storage/storageAccounts/fileServices/* أو النطاق الأعلى تلقائيا الوصول الإضافي والأذونات الممنوحة من خلال إجراء البيانات الجديد هذا. لمنع الوصول غير المقصود أو الامتيازات الزائدة إلى ملفات Azure، قمنا بتنفيذ عمليات فحص إضافية تتطلب من المستخدمين والتطبيقات الإشارة صراحة إلى نيتهم استخدام الامتياز الإضافي. علاوة على ذلك، نوصي بشدة بأن يقوم العملاء بمراجعة تعيينات دور التحكم في الوصول استنادا إلى الدور للمستخدم واستبدال أي استخدام لأحرف البدل بأذونات صريحة لضمان الإدارة المناسبة للوصول إلى البيانات.

تخويل الوصول إلى بيانات الملف في التعليمات البرمجية للتطبيق

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

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

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

فيما يلي بعض نماذج التعليمات البرمجية:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string aadEndpoint = "";
            string accountUri = "";
            string connectionString = "";
            string shareName = "test-share";
            string directoryName = "testDirectory";
            string fileName = "testFile"; 

            ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName); 
            await sharedKeyShareClient.CreateIfNotExistsAsync(); 

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(aadEndpoint)
                });

            ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);

            // Set Allow Trailing Dot and Source Allow Trailing Dot.
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients.

            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;
            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
            await sharedKeyShareClient.DeleteIfExistsAsync();
        }
    }
}

تخويل الوصول باستخدام واجهة برمجة تطبيقات مستوى بيانات FileREST

يمكنك أيضا تخويل الوصول إلى بيانات الملفات باستخدام مدخل Microsoft Azure أو Azure PowerShell.

يمكن لمدخل Azure استخدام حساب Microsoft Entra أو مفتاح الوصول إلى حساب التخزين للوصول إلى بيانات الملف في حساب تخزين Azure. يعتمد نظام المصادقة الذي يستخدمه مدخل Azure على أدوار Azure التي تم تعيينها لك.

عند محاولة الوصول إلى بيانات الملف، يتحقق مدخل Microsoft Azure أولا ما إذا كان قد تم تعيين دور Azure لك باستخدام Microsoft.Storage/storageAccounts/listkeys/action. إذا تم تعيين دور لك باستخدام هذا الإجراء، فإن مدخل Microsoft Azure يستخدم مفتاح الحساب للوصول إلى بيانات الملف عبر تخويل المفتاح المشترك. إذا لم يتم تعيين دور لك باستخدام هذا الإجراء، فسيحاول مدخل Microsoft Azure الوصول إلى البيانات باستخدام حساب Microsoft Entra الخاص بك.

للوصول إلى بيانات الملف من مدخل Microsoft Azure باستخدام حساب Microsoft Entra الخاص بك، تحتاج إلى أذونات للوصول إلى بيانات الملف، وتحتاج أيضا إلى أذونات للتنقل عبر موارد حساب التخزين في مدخل Microsoft Azure. تمنح الأدوار المضمنة التي يوفرها Azure حق الوصول إلى موارد الملفات، ولكنها لا تمنح أذونات لموارد حساب التخزين. لهذا السبب، يتطلب الوصول إلى المدخل أيضا تعيين دور Azure Resource Manager (ARM) مثل دور القارئ ، محدد النطاق إلى مستوى حساب التخزين أو أعلى. يمنح دور القارئ الأذونات الأكثر تقييدا، ولكن أي دور ARM يمنح الوصول إلى موارد إدارة حساب التخزين مقبول.

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

(راجع أيضًا )