استخدام .NET لإدارة عناوين قوائم التحكم بالوصول في Azure Data Lake Storage Gen2
توضح لك هذه المقالة كيفية استخدام .NET للحصول على قوائم التحكم بالوصول الخاصة بالدلائل والملفات وتعيينها وتحديثها.
يتوفر توريث قائمة التحكم بالوصول بالفعل للعناصر التابعة الجديدة التي تم إنشاؤها ضمن الدليل الأصل. ولكن يمكنك أيضاً إضافة قوائم التحكم بالوصول وتحديثها وإزالتها بشكل متكرر على العناصر التابعة الموجودة في الدليل الأصل دون الحاجة إلى إجراء هذه التغييرات بشكل فردي لكل عنصر تابع.
حزمة (NuGet) | عينات | مرجع API | تعيين Gen1 to Gen2 | تقديم الملاحظات
المتطلبات الأساسية
اشتراك Azure. راجع الحصول على الإصدار التجريبي المجاني من Azure .
حساب تخزين يحتوي على مساحة أسماء هرمية (HNS) مُمكّنة. اتبع هذه الإرشادات لإنشاء واحدة.
إصدار Azure CLI
2.6.0أو أعلى.أحد أذونات الأمان التالية:
يُعين الأمان الأساسي لـMicrosoft Azure Active Directory (AD) دور مالك تخزين بيانات الكائن الثنائي كبير الحجم في نطاق الحاوية الهدف أو مجموعة الموارد الأصل أو الاشتراك.
امتلاك مستخدم للحاوية أو الدليل الهدف الذي تخطط لتطبيق إعدادات قائمة التحكم بالوصول عليه. لتعيين قوائم التحكم بالوصول بشكل متكرر، يتضمن ذلك جميع العناصر التابعة في الحاوية أو الدليل الهدف.
مفتاح حساب التخزين.
إعداد مشروعك
للبدء، ثبت حزمة NuGet Azure.Storage.Files.DataLake.
افتح نافذة أوامر (على سبيل المثال: Windows PowerShell).
من دليل المشروع، ثبت حزمة معاينة Azure.Storage.Files.DataLake باستخدام الأمر
dotnet add package.dotnet add package Azure.Storage.Files.DataLake -v 12.6.0 -s https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.jsonبعد ذلك، أضف عبارات الاستخدام هذه إلى أعلى ملف التعليمات البرمجية.
using Azure; using Azure.Core; using Azure.Storage; using Azure.Storage.Files.DataLake; using Azure.Storage.Files.DataLake.Models; using System.Collections.Generic; using System.Threading.Tasks;
الاتصال بالحساب
لاستخدام القصاصات البرمجية الموجودة في هذه المقالة، ستحتاج إلى إنشاء مثيل DataLakeServiceClient الذي يُمثل حساب التخزين.
الاتصال باستخدام Microsoft Azure Active Directory (AD)
ملاحظة
إذا كنت تستخدم Azure Active Directory (Azure AD) لتخويل الوصول، فتأكد من تعيين دور مالك بيانات كائن تخزين ثنائي كبير الحجم للأمان الأساسي. لمعرفة المزيد عن كيفية تطبيق أذونات قائمة التحكم بالوصول وتأثيرات تغييرها، راجع نموذج التحكم بالوصول في Azure Data Lake Storage Gen2.
يمكنك استخدام مكتبة عميل هوية Azure لـ.NET لمصادقة تطبيقك باستخدام Microsoft Azure AD.
بعد تثبيت الحزمة، أضف عبارة الاستخدام هذه إلى أعلى ملف التعليمات البرمجية.
using Azure.Identity;
احصل على معرّف العميل وسر العميل ومعرّف المستأجر. للقيام بذلك، راجع الحصول على رمز مميز من Microsoft Azure Active Directory لتخويل الطلبات من تطبيق عميل. وكجزء من هذه العملية، سيتعين عليك تعيين أحد أدوار التحكم في الوصول استناداً إلى دور Azure (Azure RBAC) التالية للأمان الأساسي.
| الدور | إمكانية إعداد قائمة التحكم بالوصول |
|---|---|
| مالك بيانات كائن ثنائي كبير الحجم للتخزين | جميع الدلائل والملفات في الحساب. |
| مساهم بيانات للبيانات الثنائية الكبيرة للتخزين | فقط الدلائل والملفات التي يملكها الأمان الأساسي. |
ينشئ هذا المثال مثيل DataLakeServiceClient باستخدام معرّف العميل وسر العميل ومعرّف المستأجر.
public static void GetDataLakeServiceClient(ref DataLakeServiceClient dataLakeServiceClient,
String accountName, String clientID, string clientSecret, string tenantID)
{
TokenCredential credential = new ClientSecretCredential(
tenantID, clientID, clientSecret, new TokenCredentialOptions());
string dfsUri = "https://" + accountName + ".dfs.core.windows.net";
dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
}
ملاحظة
لمزيد من الأمثلة، راجع مكتبة عميل هوية Azure للحصول على وثائق .NET..
الاتصال باستخدام مفتاح حساب
هذه هي أسهل طريقة للاتصال بحساب.
يُنشئ هذا المثال مثيل DataLakeServiceClient باستخدام مفتاح حساب.
public static void GetDataLakeServiceClient(ref DataLakeServiceClient dataLakeServiceClient,
string accountName, string accountKey)
{
StorageSharedKeyCredential sharedKeyCredential =
new StorageSharedKeyCredential(accountName, accountKey);
string dfsUri = "https://" + accountName + ".dfs.core.windows.net";
dataLakeServiceClient = new DataLakeServiceClient
(new Uri(dfsUri), sharedKeyCredential);
}
تعيين قوائم التحكم بالوصول
عند تعيين قائمة التحكم بالوصول (ACL)، يمكنك استبدال قائمة التحكم بالوصول بالكامل بما في ذلك جميع إدخالاتها. إذا كنت ترغب في تغيير مستوى أذونات الأمان الأساسي أو إضافة أمان أساسي جديد إلى قائمة التحكم بالوصول دون التأثير على الإدخالات الموجودة الأخرى، يجب عليك تحديث قائمة التحكم بالوصول بدلاً من ذلك. لتحديث قائمة التحكم بالوصول بدلاً من استبدالها، راجع قسم تحديث قوائم التحكم بالوصول من هذه المقالة.
إذا اخترت تعيين قائمة التحكم بالوصول، يجب عليك إضافة إدخال للمستخدم المالك وإدخال للمجموعة المالكة وإدخال لجميع المستخدمين الآخرين. لمعرفة المزيد عن المستخدم المالك والمجموعة المالكة وجميع المستخدمين الآخرين، راجع المستخدمين والهويات.
يوضح لك هذا القسم كيفية:
- تعيين قائمة التحكم بالوصول (ACL) لدليل
- تعيين قائمة التحكم بالوصول (ACL) لملف
- تعيين قوائم التحكم في الوصول بشكل متكرر
تعيين قائمة التحكم بالوصول (ACL) لدليل
الحصول على قائمة التحكم بالوصول (ACL) من دليل عن طريق استدعاء الأسلوب DataLakeDirectoryClient.GetAccessControlAsync وتعيين قائمة التحكم بالوصول عن طريق استدعاء الأسلوب DataLakeDirectoryClient.SetAccessControlList.
يحصل هذا المثال على قائمة التحكم بالوصول لدليل يُسمى my-directory. تمنح السلسلة user::rwx,group::r-x,other::rw- المستخدم المالك أذونات القراءة والكتابة والتنفيذ، وتمنح المجموعة المالكة أذونات القراءة والتنفيذ فقط، وتمنح الآخرين كلهم أذونات القراءة والكتابة.
public async Task ManageDirectoryACLs(DataLakeFileSystemClient fileSystemClient)
{
DataLakeDirectoryClient directoryClient =
fileSystemClient.GetDirectoryClient("");
PathAccessControl directoryAccessControl =
await directoryClient.GetAccessControlAsync();
foreach (var item in directoryAccessControl.AccessControlList)
{
Console.WriteLine(item.ToString());
}
IList<PathAccessControlItem> accessControlList
= PathAccessControlExtensions.ParseAccessControlList
("user::rwx,group::r-x,other::rw-");
directoryClient.SetAccessControlList(accessControlList);
}
يمكنك أيضاً الحصول على قائمة التحكم بالوصول (ACL) للدليل الجذر للحاوية وتعيينها. للحصول على الدليل الجذر، مرر سلسلة فارغة ("") إلى الأسلوب DataLakeFileSystemClient.GetDirectoryClient.
تعيين قائمة التحكم بالوصول (ACL) لملف
الحصول على قائمة التحكم بالوصول (ACL) من ملف عن طريق استدعاء الأسلوبDataLakeFileClient.GetAccessControlAsync وتعيين قائمة التحكم بالوصول عن طريق استدعاء الأسلوب DataLakeFileClient.SetAccessControlList.
يحصل هذا المثال على قائمة التحكم في الوصول لملف يُسمى my-file.txt. تمنح السلسلة user::rwx,group::r-x,other::rw- المستخدم المالك أذونات القراءة والكتابة والتنفيذ، وتمنح المجموعة المالكة أذونات القراءة والتنفيذ فقط، وتمنح الآخرين كلهم أذونات القراءة والكتابة.
public async Task ManageFileACLs(DataLakeFileSystemClient fileSystemClient)
{
DataLakeDirectoryClient directoryClient =
fileSystemClient.GetDirectoryClient("my-directory");
DataLakeFileClient fileClient =
directoryClient.GetFileClient("hello.txt");
PathAccessControl FileAccessControl =
await fileClient.GetAccessControlAsync();
foreach (var item in FileAccessControl.AccessControlList)
{
Console.WriteLine(item.ToString());
}
IList<PathAccessControlItem> accessControlList
= PathAccessControlExtensions.ParseAccessControlList
("user::rwx,group::r-x,other::rw-");
fileClient.SetAccessControlList(accessControlList);
}
تعيين قوائم التحكم في الوصول بشكل متكرر
تعيين قوائم التحكم بالوصول بشكل متكرر عن طريق استدعاء الأسلوب DataLakeDirectoryClient.SetAccessControlRecursiveAsync. يُمرر هذا الأسلوب قائمةPathAccessControlItem. يُعرّف كل PathAccessControlItem إدخال قائمة التحكم بالوصول.
إذا كنت ترغب في تعيين إدخال ACL إلى الافتراضي، يمكنك تعيين الخاصية PathAccessControlItem.DefaultScope الخاصة بـPathAccessControlItem إلى "true".
يُعين هذا المثال قائمة التحكم بالوصول لدليل يُسمى my-parent-directory. يقبل هذا الأسلوب معلمة منطقية تُسمى isDefaultScope التي تحدد ما إذا كان سيتم تعيين ACL الافتراضي أم لا. تُستخدم هذه المعلمة في الدالة الإنشائية PathAccessControlItem. تمنح إدخالات ACL المستخدم المالك أذونات القراءة والكتابة والتنفيذ، وتمنح المجموعة المالكة أذونات القراءة والتنفيذ فقط، ولا تمنح جميع المستخدمين الآخرين أي وصول. يُعطي إدخال ACL الأخير في هذا المثال مستخدماً معيناً لديه معرّف العنصر "xxxx-xxxx-xxxx-xxxx-xxxx-xxxx" أذونات القراءة والتنفيذ.
public async Task SetACLRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
DataLakeDirectoryClient directoryClient =
serviceClient.GetFileSystemClient("my-container").
GetDirectoryClient("my-parent-directory");
List<PathAccessControlItem> accessControlList =
new List<PathAccessControlItem>()
{
new PathAccessControlItem(AccessControlType.User,
RolePermissions.Read |
RolePermissions.Write |
RolePermissions.Execute, isDefaultScope),
new PathAccessControlItem(AccessControlType.Group,
RolePermissions.Read |
RolePermissions.Execute, isDefaultScope),
new PathAccessControlItem(AccessControlType.Other,
RolePermissions.None, isDefaultScope),
new PathAccessControlItem(AccessControlType.User,
RolePermissions.Read |
RolePermissions.Execute, isDefaultScope,
entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
};
await directoryClient.SetAccessControlRecursiveAsync
(accessControlList, null);
}
تحديث قوائم التحكم بالوصول
عند تحديث قائمة التحكم بالوصول (ACL)، يمكنك تعديل قائمة التحكم بالوصول بدلاً من استبدالها. على سبيل المثال، يمكنك إضافة أمان أساسي جديد إلى قائمة التحكم بالوصول دون التأثير على الأمان الأساسي الأخر المُدرج في قائمة التحكم بالوصول. لاستبدال قائمة التحكم بالوصول بدلاً من تحديثها، راجع القسم تعيين قوائم التحكم بالوصول من هذه المقالة.
يوضح لك هذا القسم كيفية:
- تحديث قائمة التحكم بالوصول (ACL)
- تحديث قوائم التحكم في الوصول (ACL) بشكل متكرر
تحديث قائمة التحكم بالوصول (ACL)
أولاً، احصل على قائمة التحكم بالوصول (ACL) لدليل عن طريق استدعاء الأسلوب DataLakeDirectoryClient.GetAccessControlAsync. انسخ قائمة إدخالات ACL إلى قائمة جديدة من عناصر PathAccessControl. ثم حدد موقع الإدخال الذي تريد تحديثه واستبدله في القائمة. تعيين قائمة التحكم بالوصول عن طريق استدعاء الأسلوب DataLakeDirectoryClient.SetAccessControlList.
يُحدّث هذا المثال ACL الجذر لحاوية عن طريق استبدال إدخال قائمة التحكم بالوصول لجميع المستخدمين الآخرين.
public async Task UpdateDirectoryACLs(DataLakeFileSystemClient fileSystemClient)
{
DataLakeDirectoryClient directoryClient =
fileSystemClient.GetDirectoryClient("");
PathAccessControl directoryAccessControl =
await directoryClient.GetAccessControlAsync();
List<PathAccessControlItem> accessControlListUpdate
= (List<PathAccessControlItem>)directoryAccessControl.AccessControlList;
int index = -1;
foreach (var item in accessControlListUpdate)
{
if (item.AccessControlType == AccessControlType.Other)
{
index = accessControlListUpdate.IndexOf(item);
break;
}
}
if (index > -1)
{
accessControlListUpdate[index] = new PathAccessControlItem(AccessControlType.Other,
RolePermissions.Read |
RolePermissions.Execute);
directoryClient.SetAccessControlList(accessControlListUpdate);
}
}
تحديث قوائم التحكم في الوصول (ACL) بشكل متكرر
لتحديث قائمة التحكم بالوصول بشكل متكرر، أنشئ عنصر ACL جديداً باستخدام إدخال ACL الذي تريد تحديثه، ثم استخدم هذا الكائن في عملية قائمة التحكم بالوصول المحدثة. لا تحصل على قائمة التحكم بالوصول الحالية، فقط توفر إدخالات قائمة التحكم بالوصول المراد تحديثها.
تحديث قائمة التحكم بالوصول بشكل متكرر عن طريق استدعاء الأسلوب DataLakeDirectoryClient.UpdateAccessControlRecursiveAsync. يُمرر هذا الأسلوب قائمةPathAccessControlItem. يُعرّف كل PathAccessControlItem إدخال قائمة التحكم بالوصول.
إذا كنت ترغب في تحديث إدخال ACL إلى الافتراضي، يمكنك تعيين الخاصية PathAccessControlItem.DefaultScope الخاصة بـPathAccessControlItem إلى "true".
يُحدّث هذا المثال إدخال قائمة التحكم بالوصول بإذن كتابة. يقبل هذا الأسلوب معلمة منطقية تُسمى isDefaultScope التي تحدد ما إذا كان سيتم تحديث ACL الافتراضي أم لا. تُستخدم هذه المعلمة في الدالة الإنشائية PathAccessControlItem.
public async Task UpdateACLsRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
DataLakeDirectoryClient directoryClient =
serviceClient.GetFileSystemClient("my-container").
GetDirectoryClient("my-parent-directory");
List<PathAccessControlItem> accessControlListUpdate =
new List<PathAccessControlItem>()
{
new PathAccessControlItem(AccessControlType.User,
RolePermissions.Read |
RolePermissions.Write |
RolePermissions.Execute, isDefaultScope,
entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
};
await directoryClient.UpdateAccessControlRecursiveAsync
(accessControlListUpdate, null);
}
إزالة إدخالات قائمة التحكم بالوصول
يمكنك إزالة واحد أو أكثر من إدخالات قائمة التحكم بالوصول. يوضح لك هذا القسم كيفية:
- إزالة إدخال قائمة التحكم بالوصول
- إزالة إدخالات قائمة التحكم في الوصول بشكل متكرر
إزالة إدخال قائمة التحكم بالوصول
أولاً، احصل على قائمة التحكم بالوصول (ACL) لدليل عن طريق استدعاء الأسلوب DataLakeDirectoryClient.GetAccessControlAsync. انسخ قائمة إدخالات ACL إلى قائمة جديدة من عناصر PathAccessControl. ثم حدد موقع الإدخال الذي تريد إزالته واستدعِ أسلوب إزالة المجموعة. تعيين قائمة التحكم بالوصول المحدثة عن طريق استدعاء الأسلوب DataLakeDirectoryClient.SetAccessControlList.
يُحدّث هذا المثال ACL الجذر لحاوية عن طريق استبدال إدخال قائمة التحكم بالوصول لجميع المستخدمين الآخرين.
public async Task RemoveDirectoryACLEntry
(DataLakeFileSystemClient fileSystemClient)
{
DataLakeDirectoryClient directoryClient =
fileSystemClient.GetDirectoryClient("");
PathAccessControl directoryAccessControl =
await directoryClient.GetAccessControlAsync();
List<PathAccessControlItem> accessControlListUpdate
= (List<PathAccessControlItem>)directoryAccessControl.AccessControlList;
PathAccessControlItem entryToRemove = null;
foreach (var item in accessControlListUpdate)
{
if (item.EntityId == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
{
entryToRemove = item;
break;
}
}
if (entryToRemove != null)
{
accessControlListUpdate.Remove(entryToRemove);
directoryClient.SetAccessControlList(accessControlListUpdate);
}
}
إزالة إدخالات قائمة التحكم في الوصول بشكل متكرر
لإزالة إدخالات قائمة التحكم في الوصول بشكل متكرر، أنشئ عنصر قائمة التحكم بالوصول جديداً لإدخال قائمة التحكم بالوصول للإزالة، ثم استخدم هذا العنصر في إزالة عملية قائمة التحكم بالوصول. لا تحصل على قائمة التحكم بالوصول الحالية، فقط توفر إدخالات قائمة التحكم بالوصول المراد إزالتها.
إزالة إدخالات ACL عن طريق استدعاء الأسلوب DataLakeDirectoryClient.RemoveAccessControlRecursiveAsync. يُمرر هذا الأسلوب قائمةPathAccessControlItem. يُعرّف كل PathAccessControlItem إدخال قائمة التحكم بالوصول.
إذا كنت ترغب في إزالة إدخال ACL الافتراضي، يمكنك تعيين الخاصية PathAccessControlItem.DefaultScope الخاصة بـPathAccessControlItem إلى "true".
يزيل هذا المثال إدخال ACL من قائمة التحكم بالوصول للدليل المسمى my-parent-directory. يقبل هذا الأسلوب معلمة منطقية تُسمى isDefaultScope التي تحدد ما إذا كان ستتم إزالة إدخال ACL الافتراضي أم لا. تُستخدم هذه المعلمة في الدالة الإنشائية PathAccessControlItem.
public async Task RemoveACLsRecursively(DataLakeServiceClient serviceClient, bool isDefaultScope)
{
DataLakeDirectoryClient directoryClient =
serviceClient.GetFileSystemClient("my-container").
GetDirectoryClient("my-parent-directory");
List<RemovePathAccessControlItem> accessControlListForRemoval =
new List<RemovePathAccessControlItem>()
{
new RemovePathAccessControlItem(AccessControlType.User, isDefaultScope,
entityId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"),
};
await directoryClient.RemoveAccessControlRecursiveAsync
(accessControlListForRemoval, null);
}
الاسترداد من الفشل
قد تواجه أخطاء وقت التشغيل أو الأذونات عند تعديل قوائم التحكم بالوصول بشكل متكرر. بالنسبة لأخطاء وقت التشغيل، أعد تشغيل العملية من البداية. يمكن أن تحدث أخطاء الأذونات إذا لم يكن لدى الأمان الأساسي إذن كافٍ لتعديل قائمة التحكم بالوصول لدليل أو ملف موجود في التدرج الهرمي للدليل الذي يتم تعديله. عالج مشكلة الأذونات، ثم اختر إما استئناف العملية من نقطة الفشل باستخدام رمز المتابعة المميز أو إعادة تشغيل العملية من البداية. ليس عليك استخدام رمز المتابعة المميز إذا كنت تفضل إعادة التشغيل من البداية. يمكنك إعادة تطبيق إدخالات قائمة التحكم بالوصول دون أي تأثير سلبي.
يُرجع هذا المثال رمز المتابعة المميز في حالة حدوث فشل. يمكن للتطبيق استدعاء أسلوب المثال هذا مرة أخرى بعد معالجة الخطأ، وتمرير رمز المتابعة المميز. في حالة استدعاء أسلوب المثال هذا لأول مرة، يمكن أن يُمرر التطبيق قيمة null لمعلمة رمز المتابعة المميز.
public async Task<string> ResumeAsync(DataLakeServiceClient serviceClient,
DataLakeDirectoryClient directoryClient,
List<PathAccessControlItem> accessControlList,
string continuationToken)
{
try
{
var accessControlChangeResult =
await directoryClient.SetAccessControlRecursiveAsync(
accessControlList, continuationToken: continuationToken, null);
if (accessControlChangeResult.Value.Counters.FailedChangesCount > 0)
{
continuationToken =
accessControlChangeResult.Value.ContinuationToken;
}
return continuationToken;
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
return continuationToken;
}
}
إذا كنت تريد أن تكتمل العملية دون انقطاع بسبب أخطاء الأذونات، يمكنك تحديد ذلك.
لضمان اكتمال العملية دون انقطاع، مرر عنصر AccessControlChangeOptions ومرر الخاصية ContinueOnFailure الخاصة بهذا العنصر إلى true.
يُعين هذا المثال إدخالات قائمة التحكم بالوصول بشكل متكرر. إذا واجهت هذه التعليمة البرمجية خطأً في الأذونات، فإنه يسجل هذا الفشل ويستمر التنفيذ. يطبع هذا المثال عدد حالات الفشل في وحدة التحكم.
public async Task ContinueOnFailureAsync(DataLakeServiceClient serviceClient,
DataLakeDirectoryClient directoryClient,
List<PathAccessControlItem> accessControlList)
{
var accessControlChangeResult =
await directoryClient.SetAccessControlRecursiveAsync(
accessControlList, null, new AccessControlChangeOptions()
{ ContinueOnFailure = true });
var counters = accessControlChangeResult.Value.Counters;
Console.WriteLine("Number of directories changed: " +
counters.ChangedDirectoriesCount.ToString());
Console.WriteLine("Number of files changed: " +
counters.ChangedFilesCount.ToString());
Console.WriteLine("Number of failures: " +
counters.FailedChangesCount.ToString());
}
أفضل الممارسات
يوفر لك هذا القسم بعض إرشادات أفضل الممارسات لإعداد قوائم التحكم بالوصول بشكل متكرر.
التعامل مع أخطاء وقت التشغيل
يمكن أن يحدث خطأ في وقت التشغيل لأسباب عديدة (على سبيل المثال: انقطاع أو مشكلة في اتصال العميل). إذا واجهت خطأ وقت التشغيل، فأعد تشغيل عملية قائمة التحكم بالوصول المتكررة. يمكن إعادة تطبيق قوائم التحكم بالوصول على العناصر دون التسبب في تأثير سلبي.
معالجة أخطاء الأذونات (403)
إذا واجهت استثناء للتحكم بالوصول أثناء تشغيل عملية قائمة التحكم بالوصول متكررة، فقد لا يكون لدى الأمان الأساسي لـAD الإذن الكافي لتطبيق قائمة التحكم بالوصول على واحد أو أكثر من العناصر التابعة في التدرج الهرمي للدليل. عند حدوث خطأ في الإذن، تتوقف العملية ويتم توفير رمز المتابعة المميز. عالج مشكلة الأذونات، ثم استخدم رمز المتابعة المميز لمعالجة مجموعة البيانات المتبقية. لن تُعالج الدلائل والملفات التي تمت معالجتها بنجاح بالفعل مرة أخرى. يمكنك أيضاً اختيار إعادة تشغيل عملية قائمة التحكم بالوصول المتكررة. يمكن إعادة تطبيق قوائم التحكم بالوصول على العناصر دون التسبب في تأثير سلبي.
بيانات الاعتماد
نوصيك بتوفير أمان Azure AD الأساسي الذي عيّن دور مالك بيانات تخزين الكائن الثنائي كبير الحجم في نطاق حساب التخزين الهدف أو الحاوية.
الأداء
لتقليل زمن الانتقال، نوصي بتشغيل عملية قائمة التحكم بالوصول المتكررة في جهاز Azure الظاهري (VM) الموجود في نفس المنطقة مثل حساب التخزين الخاص بك.
حدود ACL
الحد الأقصى لعدد قوائم التحكم بالوصول التي يمكنك تطبيقها على دليل أو ملف هو 32 قائمة تحكم بالوصول و32 قائمة تحكم بالوصول افتراضية. لمزيد من المعلومات، راجع التحكم بالوصول في Azure Data Lake Storage Gen2.