Azure Citadel
  • Blogs

  • Azure Arc
    • Overview
    • Azure Arc-enabled Kubernetes
      • Prereqs
      • Background
      • Deploy Cluster
      • Connect to Arc
      • Enable GitOps
      • Deploy Application
      • Enable Azure AD
      • Enforce Policy
      • Enable Monitoring
      • Enable Azure Defender
      • Enable Data Services
      • Enable Application Delivery
    • Azure Arc-enabled Servers
      • Prereqs
      • Scenario
      • Hack Overview
      • Azure Landing Zone
      • Arc Pilot resource group
      • Azure Monitoring Agent
      • Additional policy assignments
      • Access your on prem VMs
      • Create onboarding scripts
      • Onboarding using scripts
      • Inventory
      • Monitoring
      • SSH
      • Windows Admin Center
      • Governance
      • Custom Script Extension
      • Key Vault Extension
      • Managed Identity
    • Useful Links
  • Azure CLI
    • Install
    • Get started
    • JMESPATH queries
    • Integrate with Bash
  • Azure Landing Zones
    • ALZ Accelerator
      • Bootstrap
      • Prereqs
      • Elevate
      • Demote
      • Components
    • Deploy an Azure Landing Zone
      • Create an initial ALZ config
      • Test locally
      • Run through the CI/CD workflow
    • Understanding Libraries
      • Library overview
      • Policies and Roles
      • Archetypes
      • Architectures
      • Metadata
    • Example Library Configs
      • Azure Landing Zone library
      • Azure Landing Zone library with overrides
  • Azure Lighthouse
    • Minimal Lighthouse definition
    • Using service principals
    • Privileged Identity Management
  • Azure Policy
    • Azure Policy Basics
      • Policy Basics in the Azure Portal
      • Creating Policy via the CLI
      • Deploy If Not Exists
      • Management Groups and Initiatives
    • Creating Custom Policies
      • Customer scenario
      • Policy Aliases
      • Determine the logic
      • Create the custom policy
      • Define, assign and test
  • Marketplace
    • Introduction
      • Terminology
      • Offer Types
    • Partner Center
    • Offer Type
    • Publish a VM Offer HOL
      • Getting Started
      • Create VM Image
      • Test VM Image
      • VM Offer with SIG
      • VM Offer with SAS
      • Publish Offer
      • Other VM Resources
    • Publish a Solution Template HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Publish a Managed App HOL
      • Getting Started
      • Create ARM Template
      • Validate ARM Template
      • Create UI Definition
      • Package Assets
      • Publish Offer
    • Managed Apps with AKS HOL
    • Other Managed App Resources
    • SaaS Offer HOLs
    • SaaS Offer Video Series
      • Video 1 - SaaS Offer Overview
      • Video 2 - Purchasing a SaaS Offer
      • Video 3 - Purchasing a Private SaaS Plan
      • Video 4 - Publishing a SaaS Offer
      • Video 5 - Publishing a Private SaaS Plan
      • Video 6 - SaaS Offer Technical Overview
      • Video 7 - Azure AD Application Registrations
      • Video 8 - Using the SaaS Offer REST Fulfillment API
      • Video 9 - The SaaS Client Library for .NET
      • Video 10 - Building a Simple SaaS Landing Page in .NET
      • Video 11 - Building a Simple SaaS Publisher Portal in .NET
      • Video 12 - SaaS Webhook Overview
      • Video 13 - Implementing a Simple SaaS Webhook in .NET
      • Video 14 - Securing a Simple SaaS Webhook in .NET
      • Video 15 - SaaS Metered Billing Overview
      • Video 16 - The SaaS Metered Billing API with REST
  • Microsoft Fabric
    • Theory
    • Prereqs
    • Fabric Capacity
    • Set up a Remote State
    • Create a repo from a GitHub template
    • Configure an app reg for development
    • Initial Terraform workflow
    • Expanding your config
    • Configure a workload identity
    • GitHub Actions for Microsoft Fabric
    • GitLab pipeline for Microsoft Fabric
  • Packer & Ansible
    • Packer
    • Ansible
    • Dynamic Inventories
    • Playbooks & Roles
    • Custom Roles
    • Shared Image Gallery
  • Partner Admin Link
    • Understanding PAL
    • User IDs & PAL
    • Service principals & PAL
    • CI/CD pipelines & PAL
    • Creating a dedicated PAL service principal
    • Azure Lighthouse & PAL
    • PAL FAQ
  • REST API
    • REST API theory
    • Using az rest
  • Setup
  • Sovereign Landing Zones
    • ALZ Accelerator
      • Prereqs
      • Elevate
      • Bootstrap
      • Demote
      • Components
    • Deploy Sovereign Landing Zone
      • Create an initial SLZ config
      • Test locally
      • Run through the CI/CD workflow
    • Custom Libraries
      • Overview of Libraries
      • Policies, Assignments and Roles
      • Archetypes, Overrides and Architecture
    • Reference Library Configs
      • Sovereign Landing Zone
      • Sovereign Landing Zone library with overrides
      • SLZ extended with a country pack
  • Terraform
    • Fundamentals
      • Initialise
      • Format
      • Validate
      • Plan
      • Apply
      • Adding resources
      • Locals and outputs
      • Managing state
      • Importing resources
      • Destroy
    • Get set up for Terraform
      • Cloud Shell
      • macOS
      • Windows with PowerShell
      • Windows with Ubuntu in WSL2
    • Using AzAPI
      • Using the REST API
      • azapi_resource
      • Removing azapi_resource
      • azapi_update_resource
      • Data sources and outputs
      • Removing azapi_update_resource
  • Virtual Machines
    • Azure Bastion with native tools & AAD
    • Managed Identities

  • About
  • Archive
  1. Home
  2. Sovereign Landing Zones
  3. Custom Libraries
  4. Overview of Libraries
Overview of Libraries
Overview of Libraries
Custom Libraries
Overview of Libraries
Policies, Assignments and Roles
Archetypes, Overrides and Architecture
  • Library structure
  • Next

Overview of Libraries

Introduction to the Azure Landing Zones Library system, its components, and how they work together to provide standardized governance for sovereign environments.

Table of Contents

  • Library structure
  • Next

What is in a library?

The Azure Landing Zones library format is a prescribed structure containing JSON and YAML files to provide assets and controls for use by the Terraform alz provider.

The sole purpose it to define the management group structure used to govern environments and associated assets. This is known as the architecture.

The architecture describes the management group names and display names, plus the list of archetypes that are used at that management group scope.

The archetypes are collections of assets that are used at that scope point. Multiple archetypes can be used at any management group. You can also define archetype overrides that define a delta from the base archetype.

The assets are comprised of

  • policy definitions
  • policy set definitions (also known as policy initiatives)
  • policy assignments
  • RBAC role definitions

The policy assignments can assign any combination of built-in and custom policy and policy initiatives.

The metadata JSON file defined the library’s name, display name, description, and any dependencies it has on other libraries.

Finally, the optional policy default values file allows the definition of policy assignment values that can be used consistently across multiple policy assignments in the library.

Library structure

--- title: Azure Landing Zone structure --- graph TD M([Metadata]) A([Architecture]) V([Policy Default Values]) A --> AT[Archetype] A --> AO(Archetype Overrides) AO --> AT AT --> PA[Policy Assignments] AT --> PS[Policy Set Definitions] AT --> PD[Policy Definitions] AT --> RD[Role Definitions]

Note that there can be multiple of all files. The bottom row are collectively called assets.

File and directory naming

The filename convention for each file type is very specific. The directory structure is not strictly forced, but is highly recommended as a standard. The link on the folder names in the tables below take you to the official documentation page for each asset type.

Folder Naming YAML
archetype_definitions <name>.alz_archetype_definition.json ✅
archetype_overrides <name>.alz_archetype_override.json ✅
architecture_definitions <name>.alz_architecture_definition.json ✅
policy_assignments <name>.alz_policy_assignment.json
policy_definitions <name>.alz_policy_definition.json
policy_set_definitions <name>.alz_policy_set_definition.json
role_definitions <name>.alz_role_definition.json ✅
default_policy_values* alz_policy_default_values.json ✅
library_metadata* alz_library_metadata.json

The last two rows have an asterisk as they are usually located in the root of the library. JSON is supported for all assets. Certain file types also support YAML with either .yaml or .tml extensions.

The contents of the files are based on the public Azure schema definitions for the policy and role files, plus the schemas in the schemas folder for the main Azure Landing ZOne library.

Modularity and extensibility

The system supports multiple library sources and dependency chains, enabling organizations to build upon Microsoft baselines while adding custom requirements.

All library components follow semantic versioning principles, ensuring predictable updates and backward compatibility.

Azure Landing Zone Library

These are your platform libraries. All are found in the platform folder of Azure/Azure-Landing-Zones-Library and are maintained by Microsoft with semantic versioning for the releases.

  • Microsoft ALZ Library: Core Azure Landing Zone definitions

    Example release: platform/alz/2025.09.3

    provider "alz" {
      library_references = [
        {
          path = "platform/alz"
          ref  = "2025.09.3"
        }
      ]
    }
    
    No dependencies.
    
  • Microsoft SLZ Library: Sovereign Landing Zone extensions

    This is stacked on top of Azure Landing Zone with additional management groups and archetypes for sovereignty scenarios.

    Example release: platform/slz/2025.10.1

    provider "alz" {
      library_references = [
        {
          path = "platform/slz"
          ref  = "2025.10.1"
        }
      ]
    }
    

    The metadata file has a dependency on ALZ.

  • Microsoft AMBA Library: Azure Monitoring Baseline Alerts

    Additional platform library with policies relating to Azure Monitoring Baseline Alerts. Can be used standalone or in addition to ALZ/SLZ.

    Example release: platform/amba/2025.11.0

    provider "alz" {
      library_references = [
        {
          path = "platform/amba"
          ref  = "2025.11.0"
        }
      ]
    }
    

    No dependencies.

Local libraries

Local libraries are commonly used, enabling archetype_overrides so that customers can define deltas from the default baselines in the main libraries.

This is the recommended approach even if you are not overriding anything on day one. You can extend with side loaded custom libraries using the alz provider block array, and stack on top of the alz and slz platform using the local library’s metadata dependencies.

  • ./lib: Local override library

    Example override library for ALZ.

    provider "alz" {
      library_references = [
        {
          custom_url = "${path.root}/lib"
        }
      ]
    }
    

    Customer specific assets can also be included if they need bespoke policies or role definitions.

    Example lib/alz_library_metadata.json in a local library, stacked on top the Azure Landing Zone library.

    {
      "$schema": "https://raw.githubusercontent.com/Azure/Azure-Landing-Zones-Library/main/schemas/library_metadata.json",
      "name": "local",
      "display_name": "ALZ Accelerator - Azure Verified Modules for SLZ Platform Landing Zone",
      "description": "This library allows overriding policies, archetypes, and management group architecture in the ALZ Accelerator.",
      "dependencies": [
        {
          "path": "platform/alz",
          "ref": "2025.09.3"
        }
      ]
    }
    

Centralised Custom Libraries

There is no restriction on how custom libraries are used, but here are a few examples for reuse.

  • Partner Libraries: Libraries of partner IP fo accelerating customer governance

  • Country Packs: Sovereign requirements for specific regions

    nl/bio/2026.01.0: My example country pack for The Netherlands’ BIO compliancy.

    In this example the local metadata file is using both the slz and bio libraries.

    {
      "$schema": "https://raw.githubusercontent.com/Azure/Azure-Landing-Zones-Library/main/schemas/library_metadata.json",
      "name": "local",
      "display_name": "ALZ Accelerator - Azure Verified Modules for SLZ Platform Landing Zone",
      "description": "This library allows overriding policies, archetypes, and management group architecture in the ALZ Accelerator.",
      "dependencies": [
        {
          "path": "platform/slz",
          "ref": "2025.10.1"
        },
        {
          "custom_url": "github.com/richeney-org/Sovereign-Landing-Zone-Packs//country/nl/bio?ref=2026.01.0"
        }
      ]
    }
    
  • Industry Packs: Industry-specific governance patterns

References

  • https://aka.ms/alz/library
  • https://aka.ms/alz/library/site

Next

We’ll look at the example BIO custom library for The Netherlands.

Source: https://www.azurecitadel.com/slz/custom_libraries/overview/
Published: 20 Nov 2025
Printed:
Custom Libraries Overview of Libraries Policies, Assignments and Roles