إنشاء أو تحديث أدوار Azure المخصصة باستخدام واجهة برمجة تطبيقات REST

إذا لم تلبِّ الأدوار المضمنة في Azureالاحتياجات المحددة لمؤسستك، يمكنك إنشاء أدوار مخصصة خاصة بك. توضح هذه المقالة كيفية سرد الأدوار المخصصة أو إنشاؤها أو تحديثها أو حذفها باستخدام واجهة برمجة تطبيقات REST.

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

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

  • 2015-07-01 أو أحدث

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

سرد جميع تعريفات الأدوار المخصصة

لسرد جميع تعريفات الأدوار المخصصة في المستأجر، استخدم Role Definitions - List REST API.

  • يسرد المثال التالي جميع تعريفات الأدوار المخصصة في المستأجر:

    Request

    GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    استجابة

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

سرد جميع تعريفات الأدوار المخصصة في نطاق

لسرد تعريفات الأدوار المخصصة في نطاق، استخدم Role Definitions - List REST API.

  1. ابدأ بالطلب التالي:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. ضمن URI، استبدل {scope} بالنطاق الذي تريد سرد الأدوار له.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} مورد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  3. استبدل {filter} بنوع الدور.

    تصفية ‏‏الوصف
    $filter=type+eq+'CustomRole' تصفية استنادا إلى نوع CustomRole

    يسرد المثال التالي جميع تعريفات الأدوار المخصصة في اشتراك:

    Request

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    استجابة

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

سرد تعريف دور مخصص حسب الاسم

للحصول على معلومات حول تعريف دور مخصص باسم العرض الخاص به، استخدم Role Definitions - Get REST API.

  1. ابدأ بالطلب التالي:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. ضمن URI، استبدل {scope} بالنطاق الذي تريد سرد الأدوار له.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} مورد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  3. استبدل {filter} باسم العرض للدور.

    تصفية ‏‏الوصف
    $filter=roleName+eq+'{roleDisplayName}' استخدم نموذج URL المشفر لاسم العرض الدقيق للدور. على سبيل المثال، $filter=roleName+eq+'Virtual%20Machine%20Contributor'

    يسرد المثال التالي تعريف دور مخصص يسمى Billing Reader Plus في اشتراك:

    Request

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName+eq+'Billing Reader Plus'&api-version=2022-04-01
    

    استجابة

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

سرد تعريف دور مخصص حسب المعرف

للحصول على معلومات حول تعريف دور مخصص بواسطة معرفه الفريد، استخدم Role Definitions - Get REST API.

  1. استخدم Role Definitions - List REST API للحصول على معرف GUID للدور.

  2. ابدأ بالطلب التالي:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. ضمن URI، استبدل {scope} بالنطاق الذي تريد سرد الأدوار له.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} مورد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  4. استبدل {roleDefinitionId} بمعرف GUID لتعريف الدور.

    يسرد المثال التالي تعريف دور مخصص بالمعرف 17adabda-4bf1-4f4e-8c97-1f0cab6dea1c في اشتراك:

    Request

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c?api-version=2022-04-01
    

    استجابة

    {
        "properties": {
            "roleName": "Billing Reader Plus",
            "type": "CustomRole",
            "description": "Read billing data and download invoices",
            "assignableScopes": [
                "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
            ],
            "permissions": [
                {
                    "actions": [
                        "Microsoft.Authorization/*/read",
                        "Microsoft.Billing/*/read",
                        "Microsoft.Commerce/*/read",
                        "Microsoft.Consumption/*/read",
                        "Microsoft.Management/managementGroups/read",
                        "Microsoft.CostManagement/*/read",
                        "Microsoft.Billing/invoices/download/action",
                        "Microsoft.CostManagement/exports/*"
                    ],
                    "notActions": [
                        "Microsoft.CostManagement/exports/delete"
                    ],
                    "dataActions": [],
                    "notDataActions": []
                }
            ],
            "createdOn": "2021-05-22T21:57:23.5764138Z",
            "updatedOn": "2021-05-22T21:57:23.5764138Z",
            "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
            "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
        },
        "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
        "type": "Microsoft.Authorization/roleDefinitions",
        "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
    }
    

إنشاء دور مخصص

لإنشاء دور مخصص، استخدم Role Definitions - Create or Update REST API. لاستدعاء واجهة برمجة التطبيقات هذه، يجب تسجيل الدخول باستخدام مستخدم تم تعيين دور له Microsoft.Authorization/roleDefinitions/write الإذن على كافة assignableScopes. من الأدوار المضمنة، يتضمن المالك ووصول المستخدم فقط مسؤول istrator هذا الإذن.

  1. راجع قائمة عمليات موفر الموارد المتوفرة لإنشاء أذونات لدورك المخصص.

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

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

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  4. ضمن URI، استبدل {scope} بأول assignableScopes دور مخصص.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  5. استبدل {roleDefinitionId} بمعرف GUID للدور المخصص.

  6. ضمن نص الطلب، استبدل {roleDefinitionId} بمعرف GUID.

  7. إذا كان assignableScopes اشتراكا أو مجموعة موارد، فاستبدل مثيلات {subscriptionId} أو {resourceGroup} بالمعرفات الخاصة بك.

  8. إذا كانت assignableScopes مجموعة إدارة، فاستبدل مثيل {groupId} بمعرف مجموعة الإدارة.

  9. في الخاصية actions ، أضف الإجراءات التي يسمح الدور بتنفيذها.

  10. في الخاصية notActions ، أضف الإجراءات المستبعدة من المسموح به actions.

  11. في الخاصيتين roleName و description ، حدد اسم دور فريد ووصفا. لمزيد من المعلومات حول الخصائص، راجع أدوار Azure المخصصة.

    يوضح ما يلي مثالا لنص الطلب:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

تحديث الدور المخصص

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

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

  2. ابدأ بالطلب التالي:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. ضمن URI، استبدل {scope} بأول assignableScopes دور مخصص.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  4. استبدل {roleDefinitionId} بمعرف GUID للدور المخصص.

  5. استنادا إلى المعلومات حول الدور المخصص، أنشئ نص طلب بالتنسيق التالي:

    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  6. قم بتحديث نص الطلب بالتغييرات التي تريد إجراؤها على الدور المخصص.

    يوضح ما يلي مثالا على نص طلب مع إضافة إجراء إعدادات تشخيص جديد:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Insights/diagnosticSettings/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

حذف الدور المخصص

لحذف دور مخصص، استخدم Role Definitions - Delete REST API. لاستدعاء واجهة برمجة التطبيقات هذه، يجب تسجيل الدخول باستخدام مستخدم تم تعيين دور له Microsoft.Authorization/roleDefinitions/delete الإذن على كافة assignableScopes. من الأدوار المضمنة، يتضمن المالك ووصول المستخدم فقط مسؤول istrator هذا الإذن.

  1. قم بإزالة أي تعيينات دور تستخدم الدور المخصص. لمزيد من المعلومات، راجع البحث عن تعيينات الأدوار لحذف دور مخصص.

  2. استخدم تعريفات الدور - قائمة أو تعريفات الأدوار - احصل على واجهة برمجة تطبيقات REST للحصول على معرف GUID للدور المخصص. لمزيد من المعلومات، راجع القسم السابق سرد كافة تعريفات الأدوار المخصصة.

  3. ابدأ بالطلب التالي:

    DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  4. ضمن URI، استبدل {scope} بالنطاق الذي تريد حذف الدور المخصص.

    النطاق نوع
    subscriptions/{subscriptionId1} الوصف
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} مجموعة الموارد
    providers/Microsoft.Management/managementGroups/{groupId1} مجموعة الإدارة
  5. استبدل {roleDefinitionId} بمعرف GUID للدور المخصص.

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