The Azure resource hierarchy
Azure organizes resources in a four-level hierarchy: Management Groups at the top, then Subscriptions, then Resource Groups, then individual Resources. Policies, RBAC assignments, and cost tracking all flow down this hierarchy. Applying a policy at a management group level automatically applies it to all subscriptions, resource groups, and resources below it.
Subscriptions are billing boundaries and access control boundaries. Each subscription has its own spending limits, invoice, and set of Azure RBAC assignments. Separating environments (production, development, testing) into separate subscriptions gives you clean cost tracking and prevents a misconfiguration in one environment from affecting another.
Resource groups are the logical containers for related Azure resources. Every resource must belong to exactly one resource group. Resources in the same resource group can be in different Azure regions. Resource groups are useful for lifecycle management: deleting a resource group deletes all resources inside it. Apply tags to resource groups to organize cost reporting and automate management.
Azure RBAC, ARM templates, and Azure Policy
Azure RBAC (Role-Based Access Control) controls who can do what to which resources. RBAC assignments consist of three parts: a security principal (user, group, service principal, or managed identity), a role definition (what actions are allowed), and a scope (where the assignment applies). Roles are inherited downward through the hierarchy: a Contributor at the subscription level can modify any resource in that subscription.
ARM templates are JSON files that declare the desired state of your Azure infrastructure. Deploy the template and ARM creates, updates, or deletes resources to match the declaration. This is infrastructure as code. Incremental mode only changes what is different from the current state. Complete mode deletes any resource in the resource group not defined in the template, which can cause unintended deletions if used carelessly. Bicep is Microsoft's domain-specific language that compiles to ARM templates with cleaner, more readable syntax.
Azure Policy evaluates resources against rules you define: every storage account must have encryption enabled, every VM must use approved image types, no public IP addresses may be created. Policies can be in Audit mode (flag violations without blocking) or Deny mode (block the deployment entirely). Policy initiatives group related policies together for simpler assignment.
How to choose the correct answer
Scope for RBAC: assign at the highest scope that works. Owner at subscription = can manage all resources in that subscription. Reader at a specific resource group = read-only for that group only.
ARM template deployment modes: Incremental = safe, adds or updates, does not delete untracked resources. Complete = enforces exact template state, deletes resources not in the template.
Azure Policy vs RBAC: RBAC controls who can take actions. Policy controls what configurations are allowed. You can have permission to create a storage account (RBAC) but policy can prevent it from being created without encryption.
Management groups: apply policy and RBAC at scale across multiple subscriptions. Root management group applies to the entire tenant.
Locks: ReadOnly lock prevents any modifications or deletions. CanNotDelete lock prevents deletion but allows modifications. Locks override RBAC: even an Owner cannot delete a resource protected by a CanNotDelete lock without first removing the lock.