إنشاء أو تحديث Azure أدوار مخصصة باستخدام Azure CLI⁦

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

للحصول على برنامج تعليمي خطوة بخطوة حول كيفية إنشاء دور مخصص، راجع البرنامج التعليمي: إنشاء دور مخصص Azure باستخدام Azure CLI.

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

لإنشاء أدوار مخصصة، تحتاج إلى:

الأدوار المخصصة بالقائمة

لسرد الأدوار المخصصة المتوفرة للتعيين، استخدم قائمة تعريف الدور az. يسرد المثال التالي جميع الأدوار المخصصة في الاشتراك الحالي.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

سرد تعريف دور مخصص

لسرد تعريف دور مخصص، استخدم قائمة تعريف الدور az. هذا الأمر هو نفس الأمر الذي ستستخدمه لدور مضمن.

az role definition list --name {roleName}

يسرد المثال التالي تعريف دور عامل تشغيل الجهاز الظاهري:

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "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/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

يسرد المثال التالي فقط إجراءات دور عامل تشغيل الجهاز الظاهري:

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

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

لإنشاء دور مخصص، استخدم az role definition create. يمكن أن يكون تعريف الدور وصف JSON أو مسارا إلى ملف يحتوي على وصف JSON.

az role definition create --role-definition {roleDefinition}

ينشئ المثال التالي دورا مخصصا يسمى عامل تشغيل الجهاز الظاهري. يعين هذا الدور المخصص الوصول إلى جميع إجراءات القراءة من موفري موارد Microsoft.Compute وMicrosoft.Storage وMicrosoft.Network ويعين الوصول لبدء تشغيل الأجهزة الظاهرية وإعادة تشغيلها ومراقبتها. يمكن استخدام هذا الدور المخصص في اشتراكين. يستخدم هذا المثال ملف JSON كمدخل.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "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/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

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

لتحديث دور مخصص، استخدم أولا قائمة تعريف الدور az لاسترداد تعريف الدور. ثانيا، قم بإجراء التغييرات المطلوبة على تعريف الدور. وأخيرا، استخدم az role definition update لحفظ تعريف الدور المحدث.

az role definition update --role-definition {roleDefinition}

يضيف المثال التالي الإجراء Microsoft.Insights/diagnostic الإعدادات/إلى Actions ويضيف مجموعة إدارة إلى AssignableScopes للدور المخصص لعامل تشغيل الجهاز الظاهري.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "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/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

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

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

  2. استخدم az role definition delete لحذف الدور المخصص. لتحديد الدور المراد حذفه، استخدم اسم الدور أو معرف الدور. لتحديد معرف الدور، استخدم قائمة تعريف الدور az.

    az role definition delete --name {roleNameOrId}
    

    يحذف المثال التالي الدور المخصص لعامل تشغيل الجهاز الظاهري.

    az role definition delete --name "Virtual Machine Operator"
    

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