فهم تعريفات دور Azure

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

تعريف الدور

يُعد ⁧⁩تعريف الدور⁧⁩ مجموعة من الأذونات. يطلق عليه أحيانا دور فقط. يسرد تعريف الدور الإجراءات التي يمكن تنفيذها، مثل القراءة، والكتابة، والحذف. ويمكنه أيضا سرد الإجراءات المستبعدة من الإجراءات المسموح بها أو الإجراءات المتعلقة بالبيانات الأساسية.

يوضح ما يلي مثالا على الخصائص الموجودة في تعريف دور عند عرضها باستخدام Azure PowerShell:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []

يوضح ما يلي مثالا على الخصائص الموجودة في تعريف دور عند عرضها باستخدام مدخل Azure أو Azure CLI أو واجهة برمجة تطبيقات REST:

roleName
name
type
description
actions []
notActions []
dataActions []
notDataActions []
assignableScopes []

يصف الجدول التالي ما تعنيه خصائص الدور.

الخاصية الوصف
Name
roleName
اسم العرض للدور.
Id
name
المعرف الفريد للدور. تحتوي الأدوار المضمنة على نفس معرف الدور عبر السحابات.
IsCustom
roleType
يشير إلى ما إذا كان هذا دورا مخصصا أم لا. قم بالتعيين إلى true الأدوار المخصصة أو CustomRole لها. قم بالتعيين إلى false الأدوار المضمنة أو BuiltInRole لأجلها.
Description
description
وصف الدور.
Actions
actions
مجموعة من السلاسل التي تحدد إجراءات مستوى التحكم التي يسمح الدور بتنفيذها.
NotActions
notActions
صفيف من السلاسل التي تحدد إجراءات مستوى التحكم المستبعدة من المسموح به Actions.
DataActions
dataActions
صفيف من السلاسل التي تحدد إجراءات مستوى البيانات التي يسمح الدور بتنفيذها على بياناتك داخل هذا الكائن.
NotDataActions
notDataActions
صفيف من السلاسل التي تحدد إجراءات مستوى البيانات المستبعدة من المسموح به DataActions.
AssignableScopes
assignableScopes
صفيف من السلاسل التي تحدد النطاقات التي يتوفر فيها الدور للتعيين.

تنسيق الإجراءات

يتم تحديد الإجراءات بسلاسل لها التنسيق التالي:

  • {Company}.{ProviderName}/{resourceType}/{action}

{action} يحدد جزء سلسلة الإجراءات نوع الإجراءات التي يمكنك تنفيذها على نوع مورد. على سبيل المثال، سترى السلاسل الفرعية التالية في {action}:

سلسلة فرعية للإجراءات الوصف
* يمنح حرف البدل حق الوصول إلى كافة الإجراءات التي تطابق السلسلة.
read تمكين إجراءات القراءة (GET).
write تمكين إجراءات الكتابة (PUT أو PATCH).
action تمكين الإجراءات المخصصة مثل إعادة تشغيل الأجهزة الظاهرية (POST).
delete تمكين إجراءات الحذف (DELETE).

مثال على تعريف الدور

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

دور المساهم كما هو معروض في Azure PowerShell:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

دور المساهم كما هو معروض في Azure CLI:

{
  "assignableScopes": [
    "/"
  ],
  "description": "Lets you manage everything except access to resources.",
  "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
  "name": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "permissions": [
    {
      "actions": [
        "*"
      ],
      "notActions": [
        "Microsoft.Authorization/*/Delete",
        "Microsoft.Authorization/*/Write",
        "Microsoft.Authorization/elevateAccess/Action",
        "Microsoft.Blueprint/blueprintAssignments/write",
        "Microsoft.Blueprint/blueprintAssignments/delete"
      ],
      "dataActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "Contributor",
  "roleType": "BuiltInRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

إجراءات التحكم والبيانات

يتم تحديد التحكم في الوصول المستند إلى الدور لإجراءات مستوى التحكم في Actions تعريف الدور وخصائصه NotActions . فيما يلي بعض الأمثلة على إجراءات مستوى التحكم في Azure:

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

لا يتم توريث الوصول إلى مستوى التحكم إلى مستوى البيانات الخاص بك شريطة تعيين طريقة مصادقة الحاوية إلى "حساب مستخدم Azure AD" وليس "مفتاح الوصول". يمنع هذا الفصل الأدوار ذات أحرف البدل (*) من الوصول غير المقيد إلى بياناتك. على سبيل المثال، إذا كان للمستخدم دور Reader في اشتراك، فيمكنه عرض حساب التخزين، ولكن بشكل افتراضي لا يمكنه عرض البيانات الأساسية.

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

لدعم إجراءات مستوى البيانات، تمت إضافة خصائص بيانات جديدة إلى تعريف الدور. يتم تحديد إجراءات مستوى البيانات في DataActions الخصائص و NotDataActions . بإضافة خصائص البيانات هذه ، يتم الحفاظ على الفصل بين مستوى التحكم ومستوى البيانات. يمنع هذا تعيينات الأدوار الحالية باستخدام أحرف البدل (*) من الوصول فجأة إلى البيانات. فيما يلي بعض إجراءات مستوى البيانات التي يمكن تحديدها في DataActions و NotDataActions:

  • قراءة قائمة النقط في حاوية
  • كتابة نقطة تخزين في حاوية
  • حذف رسالة في قائمة انتظار

إليك تعريف دور قارئ بيانات Storage Blob ، والذي يتضمن إجراءات في كل من الخصائص ActionsDataActions . يسمح لك هذا الدور بقراءة حاوية blob وكذلك بيانات blob الأساسية.

دور قارئ بيانات Storage Blob كما هو معروض في Azure PowerShell:

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read",
    "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

دور قارئ بيانات كتلة التخزين كما هو معروض في Azure CLI:

{
  "assignableScopes": [
    "/"
  ],
  "description": "Allows for read access to Azure Storage blob containers and data",
  "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "name": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "permissions": [
    {
      "actions": [
        "Microsoft.Storage/storageAccounts/blobServices/containers/read",
        "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
      ],
      "notActions": [],
      "dataActions": [
        "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
      ],
      "notDataActions": []
    }
  ],
  "roleName": "Storage Blob Data Reader",
  "roleType": "BuiltInRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

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

يتم التعامل مع التخويل لجميع استدعاءات واجهة برمجة التطبيقات لمستوى التحكم بواسطة Azure Resource Manager. تتم معالجة تخويل استدعاءات واجهة برمجة التطبيقات لمستوى البيانات إما بواسطة موفر موارد أو Azure Resource Manager.

مثال على إجراءات البيانات

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

Role-based access control has been extended to support both control plane and data plane actions

يحتوي دور المالك ل Alice ودور مساهم بيانات Storage Blob ل Bob على الإجراءات التالية:

مالك

    الإجراءات
    *

مساهم بيانات Storage Blob

    الإجراءات
    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write
    Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
    إجراءات البيانات
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

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

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

لمزيد من المعلومات حول التحكم وأمان مستوى البيانات للتخزين، راجع دليل أمان تخزين Azure.

ما هي الأدوات التي تدعم استخدام أدوار Azure لإجراءات البيانات؟

لعرض إجراءات البيانات والعمل عليها، يجب أن يكون لديك الإصدارات الصحيحة من الأدوات أو مجموعات تطوير البرامج (SDK):

الأداة إصدار
Azure PowerShell 1.1.0 أو أحدث
Azure CLI 2.0.30 أو أحدث
Azure for .NET 2.8.0-معاينة أو أحدث
Azure SDK لـ Go 15.0.0 أو أحدث
Azure for Java 1.9.0 أو أحدث
Azure for Python 0.40.0 أو أحدث
Azure SDK لـ Ruby 0.17.1 أو أحدث

لعرض إجراءات البيانات واستخدامها في واجهة برمجة تطبيقات REST، يجب تعيين معلمة إصدار واجهة برمجة التطبيقات إلى الإصدار التالي أو أحدث:

  • 2018-07-01

الإجراءات

Actions يحدد الإذن إجراءات مستوى التحكم التي يسمح الدور بتنفيذها. إنها مجموعة من السلاسل التي تحدد الإجراءات القابلة للتأمين لموفري موارد Azure. فيما يلي بعض الأمثلة على إجراءات مستوى التحكم التي يمكن استخدامها في Actions.

سلسلة الإجراءات الوصف
*/read يمنح حق الوصول إلى إجراءات القراءة لجميع أنواع الموارد لجميع موفري موارد Azure.
Microsoft.Compute/* يمنح حق الوصول إلى كافة الإجراءات لكافة أنواع الموارد في موفر موارد Microsoft.Compute.
Microsoft.Network/*/read يمنح حق الوصول إلى إجراءات القراءة لكافة أنواع الموارد في موفر موارد Microsoft.Network.
Microsoft.Compute/virtualMachines/* يمنح حق الوصول إلى جميع إجراءات الأجهزة الظاهرية وأنواع الموارد التابعة لها.
microsoft.web/sites/restart/Action يمنح حق الوصول لإعادة تشغيل تطبيق ويب.

عدم الإجراءات

NotActions يحدد الإذن إجراءات مستوى التحكم التي يتم طرحها أو استبعادها من المسموح به Actions التي تحتوي على حرف بدل (*). استخدم الإذن NotActions إذا تم تعريف مجموعة الإجراءات التي تريد السماح بها بسهولة أكبر عن طريق الطرح من Actions تلك التي تحتوي على حرف بدل (*). يتم حساب الوصول الممنوح من قبل دور (أذونات فعالة) عن طريق طرح NotActions الإجراءات من الإجراءات Actions .

Actions - NotActions = Effective control plane permissions

يوضح الجدول التالي مثالين على أذونات مستوى التحكم الفعالة لإجراء حرف بدل Microsoft.CostManagement :

الإجراءات عدم الإجراءات أذونات مستوى التحكم الفعالة
Microsoft.CostManagement/exports/* اي Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Microsoft.CostManagement/exports/* Microsoft.CostManagement/exports/delete Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/run/action

ملاحظة

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

الاختلافات بين NotActions ورفض التعيينات

NotActions ورفض المهام ليست هي نفسها وتخدم أغراضا مختلفة. NotActions هي طريقة ملائمة لطرح إجراءات محددة من إجراء حرف بدل (*) .

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

إجراءات البيانات

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

سلسلة إجراءات البيانات الوصف
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read إرجاع نقطة أو قائمة من النقط.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write ترجع هذه الدالة نتيجة كتابة نقطة.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read إرجاع رسالة.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* إرجاع رسالة أو نتيجة كتابة رسالة أو حذفها.

NotDataActions

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

DataActions - NotDataActions = Effective data plane permissions

يوضح الجدول التالي مثالين على أذونات مستوى تاريخ السريان لإجراء حرف بدل Microsoft.Storage :

إجراءات البيانات NotDataActions أذونات مستوى البيانات الفعالة
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* اي Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action

ملاحظة

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

نطاقات قابلة للتخصيص

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

تم AssignableScopes تعيين الأدوار المضمنة إلى نطاق الجذر ("/"). يشير نطاق الجذر إلى أن الدور متاح للتعيين في جميع النطاقات. ومن أمثلة النطاقات الصالحة القابلة للإحالة ما يلي:

الدور متاح للتعيين مثال
اشتراك واحد "/subscriptions/{subscriptionId1}"
اشتراكان "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
مجموعة موارد الشبكة "/subscriptions/{subscriptionId1}/resourceGroups/Network"
مجموعة إدارة واحدة "/providers/Microsoft.Management/managementGroups/{groupId1}"
مجموعة الإدارة والاشتراك "/providers/Microsoft.Management/managementGroups/{groupId1}", "/subscriptions/{subscriptionId1}",
جميع النطاقات (تنطبق فقط على الأدوار المضمنة) "/"

للحصول على معلومات حول AssignableScopes الأدوار المخصصة، راجع أدوار Azure المخصصة.

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