مشاركة عبر


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

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