استخدام Azure CLI لإدارة قوائم التحكم في الوصول (ACL) في Azure Data Lake Storage Gen2

توضح لك هذه المقالة كيفية استخدام Azure CLI للحصول على وتعيين وتحديث قوائم التحكم في الوصول الخاصة بالدلائل والملفات.

يتوفر توريث ACL بالفعل للعناصر الفرعية الجديدة التي تم إنشاؤها ضمن دليل أصلي. ولكن يمكنك أيضًا إضافة وتحديث وإزالة قوائم التحكم في الوصول بشكل متكرر على العناصر الفرعية الموجودة في دليل أصلي دون الحاجة إلى إجراء هذه التغييرات بشكل فردي لكل عنصر تابع.

مرجع | العينات | تقديم الملاحظات

المتطلبات الأساسية

  • اشتراك Azure. لمزيد من المعلومات، راجع الحصول على إصدار تجريبي من Azure.

  • حساب تخزين يحتوي على مساحة أسماء هرمية ممَّكنة. اتبع هذه الإرشادات لإنشاء واحدة.

  • Azure CLI بالإصدار 2.14.0 أو أعلى.

  • أحد أذونات الأمان التالية:

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

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

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

التأكد من تثبيت الإصدار الصحيح من Azure CLI

  1. أولا، افتح Azure Cloud Shell، أو إذا قمت بتثبيت Azure CLI محليًا، افتح أحد تطبيقات وحدة التحكم بالأوامر مثل Windows PowerShell.

  2. تحقق من أن إصدار Azure CLI الذي تم تثبيته هو 2.14.0 أو أعلى باستخدام الأمر التالي.

     az --version
    

    إذا كان إصدار Azure CLI الخاص بك أقل من 2.14.0، فقم بتثبيت إصدار أحدث. لمزيد من المعلومات، راجع ⁧⁩تثبيت Azure CLI⁧⁩.

الاتصال بالحساب

  1. إذا كنت تستخدم Azure CLI محليا، فقم بتشغيل أمر تسجيل الدخول.

    az login
    

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

    خلاف ذلك، افتح صفحة مستعرض في ⁧ https://aka.ms/devicelogin ⁩ وأدخل التعليمة البرمجية للتخويل المعروضة في المحطة الطرفية الخاصة بك. بعد ذلك، سجل الدخول باستخدام بيانات اعتماد حسابك في المستعرض.

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

  2. إذا كانت هويتك مرتبطة بأكثر من اشتراك واحد، فقم بتعيين اشتراكك النشط على اشتراك حساب التخزين الذي سيستضيف موقعك الثابت على الويب.

    az account set --subscription <subscription-id>
    

    استبدل قيمة <subscription-id>العنصر النائب بمعرف اشتراكك.

ملاحظة

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

الحصول على قوائم التحكم في الوصول

احصل على قائمة التحكم بالوصول (ACL) لدليل باستخدام الأمر az storage fs access show.

يحصل هذا المثال على قائمة التحكم بالوصول لدليل ثم يقوم بطباعة قائمة التحكم بالوصول إلى وحدة التحكم.

az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

احصل على أذونات الوصول لملف باستخدام الأمر az storage fs access show.

يحصل هذا المثال على قائمة التحكم بالوصول لملف ثم يقوم بطباعة قائمة التحكم بالوصول إلى وحدة التحكم.

az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

تعرض الصورة التالية الإخراج بعد الحصول على قائمة التحكم بالوصول للدليل.

Get ACL output

في هذا المثال، قام المستخدم المالك بقراءة أذونات القراءة والكتابة والتنفيذ. المجموعة المالكة لديها أذونات قراءة وتنفيذ فقط. لمزيد من المعلومات حول قوائم التحكم في الوصول، راجع التحكم في الوصول في Azure Data Lake Storage Gen2.

تعيين قوائم التحكم في الوصول

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

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

يوضح لك هذا القسم كيفية:

  • تعيين قائمة التحكم في الوصول
  • تعيين قوائم التحكم في الوصول بشكل متكرر

تعيين قائمة التحكم في الوصول

استخدم الأمر az storage fs access set لتعيين قائمة التحكم في الوصول لدليل.

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

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

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

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

استخدم الأمر az storage fs access set لتعيين acl لملف.

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

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

ملاحظة

إلى مجموعة قائمة التحكم في الوصول لمجموعة أو مستخدم معين، استخدم معرفات الكائنات الخاصة به. على سبيل المثال، group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx أو user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

تعرض الصورة التالية الإخراج بعد تعيين قائمة التحكم في الوصول لملف.

Get ACL output 2

في هذا المثال، يكون لدى المستخدم المالك والمجموعة المالكة أذونات القراءة والكتابة فقط. يكون لجميع المستخدمين الآخرين أذونات الكتابة والتنفيذ. لمزيد من المعلومات حول قوائم التحكم في الوصول، راجع التحكم في الوصول في Azure Data Lake Storage Gen2.

تعيين قوائم التحكم في الوصول بشكل متكرر

قم بتعيين قوائم التحكم في الوصول بشكل متكرر باستخدام الأمر az storage fs access set-recursive.

يقوم هذا المثال بتعيين قائمة التحكم بالوصول لدليل بالاسم my-parent-directory. تمنح هذه الإدخالات المستخدم المالك أذونات القراءة والكتابة والتنفيذ، وتمنح المجموعة المالكة أذونات القراءة والتنفيذ فقط، ولا تمنح جميع الآخرين أي وصول. يعطي إدخال قائمة التحكم في الوصول الأخير في هذا المثال مستخدما معينا لديه معرف الكائن "xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

ملاحظة

إذا كنت تريد تعيين إدخال قائمة التحكم في الوصول افتراضية، فأضف البادئة default: إلى كل إدخال. على سبيل المثال، default:user::rwx أو default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

تحديث قوائم التحكم في الوصول

عند تحديث قائمة التحكم بالوصول (ACL)، يمكنك تعديل قائمة التحكم بالوصول بدلا من استبدال قائمة التحكم بالوصول (ACL). على سبيل المثال، يمكنك إضافة أساس أمان جديد إلى قائمة التحكم بالوصول دون التأثير على أساسات الأمان الأخرى المدرجة في قائمة التحكم بالوصول. لاستبدال قائمة التحكم بالوصول بدلا من تحديثها، راجع القسم تعيين قوائم التحكم بالوصول من هذه المقالة.

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

يوضح لك هذا القسم كيفية:

  • تحديث قائمة التحكم بالوصول
  • تحديث قوائم التحكم في الوصول بشكل متكرر

تحديث قائمة التحكم بالوصول

هناك طريقة أخرى لتعيين هذا الإذن وهي استخدام الأمر az storage fs access set.

قم بتحديث قائمة التحكم بالوصول لدليل أو ملف عن طريق تعيين المعلمة -permissions إلى الشكل القصير لقائمة تحكم بالوصول.

يقوم هذا المثال بتحديث قائمة التحكم بالوصول لدليل.

az storage fs access set --permissions rwxrwxrwx -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

يقوم هذا المثال بتحديث قائمة التحكم بالوصول لملف.

az storage fs access set --permissions rwxrwxrwx -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

ملاحظة

لتحديث قائمة التحكم بالوصول لمجموعة أو مستخدم معين، استخدم معرفات الكائنات الخاصة بهم. على سبيل المثال، group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx أو user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

يمكنك أيضا تحديث المستخدم المالك ومجموعة الدليل أو الملف عن طريق تعيين المعلمات أو المعلمات إلى معرف الكيان --owner أو group اسم المستخدم الأساسي (UPN) للمستخدم.

يغير هذا المثال مالك دليل.

az storage fs access set --owner xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

يغير هذا المثال مالك ملف.

az storage fs access set --owner xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

تحديث قوائم التحكم في الوصول بشكل متكرر

تحديث قوائم التحكم في الوصول بشكل متكرر باستخدام الأمر az storage fs access update-recursive.

يقوم هذا المثال بتحديث إدخال قائمة التحكم في الوصول بإذن كتابة.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

ملاحظة

إذا كنت تريد تحديث إدخال قائمة التحكم في الوصول افتراضي، فأضف البادئة default: إلى كل إدخال. على سبيل المثال، ⁧default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x⁩.

إزالة إدخالات قائمة التحكم في الوصول بشكل متكرر

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

قم بإزالة إدخالات قائمة التحكم في الوصول باستخدام الأمر az storage fs access remove-recursive.

يزيل هذا المثال إدخال قائمة التحكم في الوصول من الدليل الجذر للحاوية.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

ملاحظة

إذا كنت تريد إزالة إدخال قائمة التحكم في الوصول افتراضي، فأضف البادئة default: إلى كل إدخال. على سبيل المثال، ⁧default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx⁩.

التعافي من حالات الفشل

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

في حالة حدوث فشل، يمكنك إرجاع رمز استمرار عن طريق تعيين المعلمة --continue-on-failure إلى false. بعد معالجة الأخطاء، يمكنك استئناف العملية من نقطة الفشل عن طريق تشغيل الأمر مرة أخرى، ثم تعيين المعلمة --continuation إلى الرمز المميز للمتابعة.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

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

لضمان اكتمال العملية دون انقطاع، قم بتعيين المعلمة --continue-on-failure إلى true.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

أفضل الممارسات

يوفر لك هذا القسم بعض إرشادات أفضل الممارسات لإعداد قوائم التحكم في الوصول بشكل متكرر.

التعامل مع أخطاء وقت التشغيل

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

معالجة أخطاء الأذونات (403)

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

بيانات الاعتماد

نوصي بتوفير أساس أمان Azure AD تم تعيينه لدور مالك بيانات نقطة التخزين في نطاق حساب التخزين الهدف أو الحاوية.

الأداء

لتقليل زمن الاستجابة، نوصي بتشغيل عملية قائمة التحكم في الوصول المتكررة في Azure Virtual Machine (VM) الموجود في نفس المنطقة مثل حساب التخزين الخاص بك.

حدود قائمة التحكم في الوصول

الحد الأقصى لعدد قوائم التحكم في الوصول التي يمكنك تطبيقها على دليل أو ملف هو 32 قائمة تحكم بالوصول و32 قائمة تحكم بالوصول افتراضية. لمزيد من المعلومات، راجع التحكم في الوصول في Azure Data Lake Storage Gen2.

راجع أيضًا