Azure Resource Manager (ARM) Concepts

Understand the foundational concepts of Azure Resource Manager to effectively manage your cloud resources.

Core Concepts of Azure Resource Manager

Azure Resource Manager (ARM) is the deployment and management service for Azure. It provides a management layer that enables you to create, update, and delete resources in your Azure account. ARM offers a consistent management experience across the various management tools available for Azure.

Resources and Resource Groups

In Azure, a resource is anything that can be managed on Azure. Some common examples of resources are virtual machines, storage accounts, virtual networks, web apps, databases, and SQL databases.

A resource group is a logical container that holds related Azure resources for an Azure solution. The resource group can contain the resources that you want to manage as a group. You decide how to allocate resources to resource groups based on what makes the most sense for your organization.

Key benefits of using resource groups:

ARM Templates

ARM templates are JavaScript Object Notation (JSON) files that declaratively define the infrastructure and configuration for your Azure solution. An ARM template is a string that contains one or more JSON resource definitions. You can use a template to deploy a new instance of your solution consistently and repeatedly.

An ARM template has at least one required property, schema, which specifies the version of the ARM template schema to use. The core of the template is the resources array, which defines the Azure resources you want to deploy.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[concat(uniqueString(resourceGroup().id), 'storage')]",
      "location": "[resourceGroup().location]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    }
  ],
  "outputs": {}
}

Deployments

A deployment is the process of using an ARM template to create resources in a resource group. You can deploy a template to a new or existing resource group.

When you deploy a template, ARM processes the JSON file and creates the specified resources in your Azure subscription. Deployments can be made through various tools like the Azure portal, Azure CLI, Azure PowerShell, and REST APIs.

Azure Policy

Azure Policy is a service that you use to create, assign, and manage policies. Policies enforce different rules and effects over your resources so that those resources comply with your corporate standards and service level agreements. Azure Policy helps you enforce standards and assess compliance at scale.

You can use policies to control:

Role-Based Access Control (RBAC)

Role-Based Access Control (RBAC) is a system that you use to manage access to Azure resources. With RBAC, you can grant specific permissions to users, groups, or service principals. RBAC is a critical component of managing security in Azure.

Permissions are granted by assigning a role to a principal at a certain scope.