تعيين أدوار Azure باستخدام واجهة برمجة تطبيقات REST

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

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

لتعيين أدوار Azure، يجب أن يكون لديك:

يجب استخدام الإصدارات التالية:

  • 2015-07-01 أو لاحقا لتعيين دور Azure
  • 2018-09-01-preview أو لاحقا لتعيين دور Azure إلى كيان خدمة جديد

لمزيد من المعلومات، راجع إصدارات واجهة برمجة التطبيقات من واجهات برمجة تطبيقات AZURE RBAC REST.

تعيين دور Azure

لتعيين دور، استخدم Role Assignments - Create REST API وحدد أساس الأمان وتعريف الدور والنطاق. لاستدعاء واجهة برمجة التطبيقات هذه، يجب أن يكون لديك حق الوصول إلى Microsoft.Authorization/roleAssignments/write الإجراء، مثل التحكم في الوصول المستند إلى الدور مسؤول istrator.

  1. استخدم Role Definitions - List REST API أو راجع الأدوار المضمنة للحصول على معرف تعريف الدور الذي تريد تعيينه.

  2. استخدم أداة GUID لإنشاء معرف فريد سيتم استخدامه لمعرف تعيين الدور. يحتوي المعرف على التنسيق: 00000000-0000-0000-0000-000000000000

  3. ابدأ بالطلب والنص التاليين:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
    
    {
      "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}"
      }
    }
    
  4. ضمن URI، استبدل {scope} بالنطاق الخاص بتعيين الدور.

    النطاق نوع
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 مجموعة الموارد
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Resource

    في المثال السابق، microsoft.web هو موفر موارد يشير إلى مثيل App Service. وبالمثل، يمكنك استخدام أي موفري موارد آخرين وتحديد النطاق. لمزيد من المعلومات، راجع موفري موارد Azure وأنواعها وعمليات موفر موارد Azure المدعومة.

  5. استبدل {roleAssignmentId} بمعرف GUID لتعيين الدور.

  6. ضمن نص الطلب، استبدل {scope} بنفس النطاق كما هو الحال في URI.

  7. استبدل {roleDefinitionId} بمعرف تعريف الدور.

  8. استبدل {principalId} بمعرف الكائن للمستخدم أو المجموعة أو كيان الخدمة الذي سيتم تعيين الدور له.

يعين الطلب والنص التاليان دور قارئ النسخ الاحتياطي لمستخدم في نطاق الاشتراك:

PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
    "principalId": "{objectId1}"
  }
}

يوضح ما يلي مثالا على الإخراج:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
        "principalId": "{objectId1}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId1}",
        "condition": null,
        "conditionVersion": null,
        "createdOn": "2022-05-06T23:55:23.7679147Z",
        "updatedOn": "2022-05-06T23:55:23.7679147Z",
        "createdBy": null,
        "updatedBy": "{updatedByObjectId1}",
        "delegatedManagedIdentityResourceId": null,
        "description": null
    },
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId1}"
}

كيان خدمة جديد

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

لمعالجة هذا السيناريو، استخدم تعيينات الدور - إنشاء واجهة برمجة تطبيقات REST وتعيين الخاصية principalType إلى ServicePrincipal. يجب عليك أيضا تعيين apiVersion إلى 2018-09-01-preview أو أحدث. 2022-04-01 هو الإصدار المستقر الأول.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
  "properties": {
    "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
    "principalId": "{principalId}",
    "principalType": "ServicePrincipal"
  }
}

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