توسيع نطاق إدارة تعيينات دور Azure باستخدام الشروط وسمات الأمان المخصصة

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

توضح هذه المقالة حلا لتوسيع نطاق إدارة تعيينات الأدوار باستخدام شروط التحكم في الوصول المستندة إلى سمات Azure (Azure ABAC) وسمات الأمان المخصصة ل Microsoft Entra للكيانات.

سيناريو مثال

ضع في اعتبارك شركة تسمى Contoso مع الآلاف من العملاء الذين يريدون إعداد التكوين التالي:

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

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

Diagram showing thousands for role assignments.

مثال على الحل

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

Diagram showing one role assignment and a condition.

فيما يلي التعبير في الشرط الذي يجعل هذا الحل يعمل:

  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name]
  StringEquals
  @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]

سيكون الشرط الكامل مشابها لما يلي. يمكن تعديل قائمة الإجراءات وفقا للإجراءات التي تحتاجها فقط.

(
 (
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/deleteBlobVersion/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/permanentDelete/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read'})
  AND
  !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write'})
 )
 OR 
 (
  @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals @Principal[Microsoft.Directory/CustomSecurityAttributes/Id:Contosocustomer_name]
 )
)

لماذا تستخدم هذا الحل؟

هناك العديد من آليات التحكم في الوصول التي يمكنك استخدامها لتوفير الوصول إلى موارد مستوى البيانات.

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

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

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

فيما يلي بعض فوائد هذا الحل:

  • التحكم المركزي في الوصول
  • أسهل في الصيانة
  • لا يعتمد على مفاتيح الوصول أو رموز SAS المميزة
  • لا يتطلب منك إدارة الوصول على كل كائن
  • يمكن أن يحسن وضع الأمان الخاص بك

هل يمكنك استخدام هذا الحل؟

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

الخطوة 1: تحديد ما إذا كنت تفي بالمتطلبات الأساسية

لاستخدام هذا الحل، يجب أن يكون لديك:

الخطوة 2: تحديد السمات التي يمكنك استخدامها في حالتك

هناك العديد من السمات التي يمكنك استخدامها في حالتك، مثل ما يلي:

  • اسم الحاوية
  • مسار البيانات كبيرة الحجم
  • علامات فهرس الكائنات الثنائية كبيرة الحجم (مفاتيح)
  • علامات فهرس الكائن الثنائي كبير الحجم [القيم في المفتاح]

يمكنك أيضا تحديد سمات الأمان المخصصة الخاصة بك للمستخدمين وتطبيقات المؤسسة والهويات المدارة.

لمزيد من المعلومات، راجع تنسيق حالة تعيين دور Azure وبناء الجملة وما هي سمات الأمان المخصصة في معرف Microsoft Entra؟.

الخطوة 3: إنشاء شرط في نطاق أعلى

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

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