تحديد نطاق لموارد الامتداد في قوالب 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 والاشتراك فقط في عمليات النشر المتداخلة أو المرتبطة. هذه الخصائص غير مسموح بها على الموارد الفردية. استخدم عمليات النشر المتداخلة أو المرتبطة إذا كنت تريد نشر مورد ملحق مع تعيين النطاق إلى مورد في مجموعة موارد مختلفة.

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