Freigeben über


Festlegen des Geltungsbereichs für Erweiterungsressourcen in ARM-Vorlagen

Erfahren Sie, wie Sie die scope Eigenschaft mit Erweiterungsressourcentypen in Azure Resource Manager(ARM)-Vorlagen verwenden. Mithilfe von Erweiterungsressourcen können Sie andere Ressourcen funktionen ändern oder hinzufügen, z. B. das Zuweisen einer Rolle oder das Anwenden einer Sperre.

Erweiterungsressourcen sind eine leistungsstarke Möglichkeit zum Verwalten von Berechtigungen, Richtlinien und anderen Einstellungen für Azure-Ressourcen. Eine vollständige Liste finden Sie unter "Ressourcentypen", die Funktionen anderer Ressourcen erweitern.

Die scope Eigenschaft ist nur für Erweiterungsressourcentypen verfügbar. Wenn Sie einen anderen Bereich für einen Ressourcentyp angeben möchten, der kein Erweiterungstyp ist, verwenden Sie eine geschachtelte oder verknüpfte Bereitstellung. Weitere Informationen finden Sie unter:

Anwenden im Bereitstellungsbereich

Um einen Erweiterungsressourcentyp im Zielbereitstellungsbereich anzuwenden, fügen Sie die Ressource wie bei jedem Ressourcentyp zu Ihrer Vorlage hinzu. Die verfügbaren Bereiche sind:

  • Ressourcengruppe
  • Abonnement
  • Verwaltungsgruppe
  • Mieter

Die folgende Vorlage stellt eine Sperre bereit.

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

Bei der Bereitstellung in einer Ressourcengruppe wird die Ressourcengruppe gesperrt.

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"

Im nächsten Beispiel wird eine Rolle zugewiesen.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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",
      "metadata": {
        "description": "The role assignment name"
      }
    }
  },
  "variables": {
    "roleDefinitionIds": {
      "Owner": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635', subscription().subscriptionId)]",
      "Contributor": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', subscription().subscriptionId)]",
      "Reader": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7', subscription().subscriptionId)]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2022-04-01",
      "name": "[parameters('roleNameGuid')]",
      "properties": {
        "roleDefinitionId": "[variables('roleDefinitionIds')[parameters('builtInRoleType')]]",
        "principalId": "[parameters('principalId')]"
      }
    }
  ]
}

Bei der Bereitstellung in einem Abonnement wird dem Abonnement die Rolle zugewiesen.

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"

Auf eine Ressource anwenden

Verwenden Sie die scope Eigenschaft, um eine Erweiterungsressource auf eine Ressource anzuwenden. Legen Sie die Bereichseigenschaft auf den Namen der Ressource fest, der Sie die Erweiterung hinzufügen. Die Bereichseigenschaft ist eine Stammeigenschaft für den Erweiterungsressourcentyp.

Im folgenden Beispiel wird ein Speicherkonto erstellt und eine Rolle darauf angewendet.

{
  "$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]",
      "metadata": {
        "description": "The ___location for the resources"
      }
    }
  },
  "variables": {
    "roleDefinitionIds": {
      "Owner": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635', subscription().subscriptionId)]",
      "Contributor": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', subscription().subscriptionId)]",
      "Reader": "[format('/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7', subscription().subscriptionId)]"
    },
    "storageName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-01-01",
      "name": "[variables('storageName')]",
      "___location": "[parameters('___location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    },
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2022-04-01",
      "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageName'))]",
      "name": "[parameters('roleNameGuid')]",
      "properties": {
        "roleDefinitionId": "[variables('roleDefinitionIds')[parameters('builtInRoleType')]]",
        "principalId": "[parameters('principalId')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]"
      ]
    }
  ]
}

Die Eigenschaften "resourceGroup" und "subscription" sind nur für geschachtelte oder verknüpfte Bereitstellungen zulässig. Diese Eigenschaften sind für einzelne Ressourcen nicht zulässig. Verwenden Sie geschachtelte oder verknüpfte Bereitstellungen, wenn Sie eine Erweiterungsressource mit dem Bereich bereitstellen möchten, der auf eine Ressource in einer anderen Ressourcengruppe festgelegt ist.

Nächste Schritte