Skip to main content
Version: Next

Task 02: Apply Azure Policy Initiatives

Runbook Azure

DOCUMENT CATEGORY: Runbook SCOPE: Azure Policy configuration PURPOSE: Apply governance and compliance policies MASTER REFERENCE: Microsoft Learn - Azure Policy

Status: Active


Azure Policy enforces organizational standards and assesses compliance at scale. This step applies policy initiatives specifically designed for Azure Local deployments, including security baselines and governance policies.

Policy Initiatives vs Individual Policies

Policy Initiatives (also called policy sets) group related policies together. For Azure Local, Microsoft provides built-in initiatives that bundle recommended security configurations.

Overview

InitiativeScopePurpose
Azure Security BenchmarkManagement GroupComprehensive security controls aligned to industry standards
Azure Local Security BaselineSubscriptionMicrosoft-recommended configurations for Azure Local
Guest ConfigurationResource GroupIn-guest policy enforcement for Windows/Linux
Tagging GovernanceSubscriptionEnforce required tags for cost management

Prerequisites

  • Azure subscription with Owner or Policy Contributor role
  • Management groups configured (if applying at MG scope)
  • Log Analytics workspace for compliance data

Variables from variables.yml

VariableConfig PathExample
AZURE_SUBSCRIPTION_IDazure.subscription.id00000000-0000-0000-0000-000000000000
AZURE_RESOURCE_GROUPazure.resource_group.namerg-azurelocal-prod-eus2
AZURE_REGIONazure.resource_group.locationeastus2

Procedure

Assign Azure Security Benchmark

  1. Navigate to Azure Policy
  • In Azure Portal, search for Policy
  • Click Definitions in the left menu
  1. Find Security Benchmark Initiative
  • Set Definition type to Initiative
  • Search for Azure Security Benchmark
  • Click on the initiative to view details
  1. Assign the Initiative
  • Click Assign
  • Scope: Select your subscription or management group
  • Exclusions: Add any resources to exclude (optional)
  • Assignment name: Azure Security Benchmark - Azure Local
  1. Configure Parameters
  • Review default parameters
  • Adjust as needed for your environment
  • Click Review + create
  • Click Create

Assign Azure Local-Specific Policies

  1. Search for Azure Local Policies
  • In Policy Definitions, search for Azure Stack HCI or Azure Local
  • Review available built-in policies
  1. Assign Key Policies
  • Audit Azure Stack HCI clusters for compliance
  • Configure Azure Stack HCI to use Azure Monitor Agent
  • Configure periodic checking for missing security updates
  1. Create Policy Initiative (Optional)
  • Click Definitions+ Initiative definition
  • Name: Azure Local Security Baseline
  • Add relevant policies
  • Save and assign to subscription

Enable Guest Configuration

  1. Assign Guest Configuration Initiative
  • Search for Guest Configuration
  • Find: Audit Windows machines that do not have the specified Windows PowerShell execution policy
  • Assign to your resource group containing Arc-enabled servers
  1. Deploy Prerequisites
  • Assign: Deploy prerequisites to enable Guest Configuration policies on virtual machines
  • This installs the Guest Configuration extension on VMs

Validation

# Check policy assignments
$assignments = Get-AzPolicyAssignment -Scope "/subscriptions/$subscriptionId"
Write-Host "Policy Assignments:" -ForegroundColor Cyan
$assignments | Format-Table DisplayName, EnforcementMode -AutoSize

# Check compliance state (may take up to 24 hours for initial scan)
$complianceStates = Get-AzPolicyState -SubscriptionId $subscriptionId -Top 10
Write-Host "`nRecent Compliance States:" -ForegroundColor Cyan
$complianceStates | Group-Object ComplianceState | Format-Table Name, Count

Expected Output

Policy Assignments:
DisplayName EnforcementMode
----------- ---------------
Azure Security Benchmark - Azure Local Default
Require Environment Tag Default
Deploy Guest Configuration Prerequisites Default

Recent Compliance States:
Name Count
---- -----
Compliant 45
NonCompliant 3
Unknown 2

Common Policies for Azure Local

Policy NameIDPurpose
Audit VMs without disaster recovery0015ea4d-51ff-4ce3-8d8c-f3f8f0179a56Ensure DR is configured
Configure periodic checking for updates59efceea-0c96-497e-a4a1-4eb2290dac15Security update compliance
Deploy Log Analytics agent053d3325-282c-4e5c-b944-24faffd30d77Monitoring agent deployment
Require tag on resources871b6d14-10aa-478d-b590-94f262ecfa99Cost management tags

Troubleshooting

IssueCauseResolution
Policy assignment fails with permission errorAccount lacks Policy Contributor role at target scopeAssign Resource Policy Contributor role at the subscription or management group level
Resources remain non-compliant after remediationRemediation task not triggered or still in progressCheck remediation task status in Policy > Remediation; create a new remediation task if needed
Policy effects not enforced on new resourcesAssignment uses Audit instead of Deny effectUpdate the assignment parameters to use Deny for enforcement; existing resources need remediation separately

Next Steps

Proceed to Task 4: Configure Security Baselines to review and remediate Defender recommendations.


PreviousUpNext
← Task 01: Enable Defender for CloudPhase 04: Security & GovernanceTask 03: Security Baselines →

VersionDateAuthorChanges
1.0.02026-03-24Azure Local Cloudnology TeamInitial release