تحديد نطاق لموارد الامتداد في قوالب ARM

مورد الامتداد هو مورد يقوم بتعديل مورد آخر. على سبيل المثال، يمكنك تعيين دور لمورد من الموارد. تعيين الدور هو نوع مورد ملحق.

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

توضح هذه المقالة كيفية تعيين النطاق لنوع مورد الملحق عند النشر باستخدام قالب Azure Resource Manager (قالب ARM). كما تشرح خاصية النطاق المتوفرة لموارد الملحق عند تطبيقها على أحد الموارد.

ملاحظة

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

تنطبق في نطاق النشر

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

القالب التالي يوزع قفلاً.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/locks",
      "apiVersion": "2016-09-01",
      "name": "rgLock",
      "properties": {
        "level": "CanNotDelete",
        "notes": "Resource Group should not be deleted."
      }
    }
  ]
}

عند نشرها إلى مجموعة موارد، فإنها تقوم بتأمين مجموعة الموارد.

az deployment group create \
  --resource-group ExampleGroup \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/locktargetscope.json"

المثال التالي يعين دوراً.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "parameters": {
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "The principal to assign the role to"
      }
    },
    "builtInRoleType": {
      "type": "string",
      "allowedValues": [
        "Owner",
        "Contributor",
        "Reader"
      ],
      "metadata": {
        "description": "Built-in role to assign"
      }
    },
    "roleNameGuid": {
      "type": "string",
      "metadata": {
        "description": "The role assignment name"
      }
    }
  },
  "variables": {
    "Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
    "Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
    "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2020-10-01-preview",
      "name": "[parameters('roleNameGuid')]",
      "properties": {
        "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
        "principalId": "[parameters('principalId')]"
      }
    }
  ],
  "outputs": {}
}

عند نشره في اشتراك، فإنه يقوم بتعيين الدور للاشتراك.

az deployment sub create \
  --name demoSubDeployment \
  --location centralus \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/roletargetscope.json"

تنطبق على الموارد

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

يوضح المثال التالي إنشاء حساب تخزين وتطبيق أحد الأدوار فيه.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "principalId": {
      "type": "string",
      "metadata": {
        "description": "The principal to assign the role to"
      }
    },
    "builtInRoleType": {
      "type": "string",
      "allowedValues": [
        "Owner",
        "Contributor",
        "Reader"
      ],
      "metadata": {
        "description": "Built-in role to assign"
      }
    },
    "roleNameGuid": {
      "type": "string",
      "defaultValue": "[newGuid()]",
      "metadata": {
        "description": "A new GUID used to identify the role assignment"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
    "Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
    "Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
    "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    },
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2020-10-01-preview",
      "name": "[parameters('roleNameGuid')]",
      "scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageName'))]",
      "dependsOn": [
        "[variables('storageName')]"
      ],
      "properties": {
        "roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
        "principalId": "[parameters('principalId')]"
      }
    }
  ]
}

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

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