فهم نطاق Azure RBAC

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

مستويات النطاق

في Azure، يمكنك تحديد نطاق على أربعة مستويات: مجموعة الإدارة والاشتراك ومجموعة الموارد والموارد. تُنظم النطاقات على أساس العلاقات الأصل-الفرعي. يجعل كل مستوى من التدرج الهرمي النطاق أكثر تحديدًا. يُمكنك تعيين أدوار على جميع مستويات النطاق. يقرر المستوى الذي تحدده مدى تطبيق الدور. ترث المستويات الأدنى الإعدادات من المستويات الأعلى.

Scope for a role assignment

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

Management group and subscription hierarchy

تنسيق النطاق

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

يتكون النطاق من سلسلة من المعرفات مفصولة بحرف الشرطة المائلة (/). يمكنك التفكير في هذه السلسلة على أنها تعبر عن التسلسل الهرمي التالي، حيث يكون النص بدون عناصر نائبة ({}) معرفات ثابتة:

/subscriptions
    /{subscriptionId}
        /resourcegroups
            /{resourceGroupName}
                /providers
                    /{providerName}
                        /{resourceType}
                            /{resourceSubType1}
                                /{resourceSubType2}
                                    /{resourceName}
  • {subscriptionId} هو معرف الاشتراك المراد استخدامه (GUID).
  • {resourceGroupName} هو اسم مجموعة الموارد التي تحتوي عليها.
  • {providerName} هو اسم موفر الموارد الذي يتعامل مع المورد، ثم {resourceType}{resourceSubType*} تحديد مستويات أخرى داخل موفر المورد هذا.
  • {resourceName} هو الجزء الأخير من السلسلة التي تعرف موردا معينا.

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

/providers
    /Microsoft.Management
        /managementGroups
            /{managmentGroupName}

أمثلة النطاق

النطاق مثال
مجموعة الإدارة /providers/Microsoft.Management/managementGroups/marketing-group
الوصف /subscriptions/00000000-0000-0000-0000-000000000000
مجموعة الموارد /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
Resource /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345

كيفية تحديد نطاق مورد

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

  • في مدخل Microsoft Azure، افتح المورد ثم انظر إلى الخصائص. يجب أن يسرد المورد معرف المورد حيث يمكنك تحديد النطاق. على سبيل المثال، فيما يلي معرفات الموارد لحساب تخزين.

    Screenshot that shows resource IDs for a storage account in Azure portal.

  • طريقة أخرى هي استخدام مدخل Microsoft Azure لتعيين دور مؤقتا في نطاق المورد ثم استخدام Azure PowerShell أو Azure CLI لسرد تعيين الدور. في الإخراج، سيتم سرد النطاق كخاصية.

    RoleAssignmentId   : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro
                         viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
    Scope              : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
    DisplayName        : User
    SignInName         : user@contoso.com
    RoleDefinitionName : Storage Blob Data Reader
    RoleDefinitionId   : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
    ObjectId           : <principalId>
    ObjectType         : User
    CanDelegate        : False
    Description        :
    ConditionVersion   :
    Condition          :
    
    {
        "canDelegate": null,
        "condition": null,
        "conditionVersion": null,
        "description": null,
        "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
        "name": "{roleAssignmentId}",
        "principalId": "{principalId}",
        "principalName": "user@contoso.com",
        "principalType": "User",
        "resourceGroup": "test-rg",
        "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "roleDefinitionName": "Storage Blob Data Reader",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01",
        "type": "Microsoft.Authorization/roleAssignments"
      }
    

قوالب النطاق وARM

تعيين الدور هو نوع خاص في Azure Resource Manager يسمى مورد ملحق. مورد الامتداد هو مورد يضيف إلى إمكانات مورد آخر. وهي موجودة دائما كملحق (مثل تابع) لمورد آخر. على سبيل المثال، تعيين دور في نطاق الاشتراك هو مورد ملحق للاشتراك. اسم تعيين الدور هو دائما اسم المورد الذي تقوم بتوسيعه بالإضافة إلى /Microsoft.Authorization/roleAssignments/{roleAssignmentId}. عند تعيين الأدوار باستخدام قالب Azure Resource Manager (قالب ARM)، لا تحتاج عادة إلى توفير النطاق. والسبب هو أن حقل النطاق ينتهي دائما بمعرف المورد الذي تقوم بتوسيعه. يمكن تحديد النطاق من معرف تعيين الدور نفسه. يعرض الجدول التالي أمثلة لمعرف تعيين دور والنطاق المقابل:

معرف تعيين الدور النطاق
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg

لمزيد من المعلومات حول النطاق وقوالب ARM، راجع تعيين أدوار Azure باستخدام قوالب Azure Resource Manager. للحصول على قائمة كاملة بأنواع موارد الملحق، راجع أنواع الموارد التي توسع قدرات الموارد الأخرى.

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