From 317081f683a065aae93aeb65769b497787ee8cff Mon Sep 17 00:00:00 2001 From: Sacha Narinx Date: Thu, 21 Dec 2023 19:29:57 +0400 Subject: [PATCH] New Policy/Assignment: Resource Group and Resource locations should match (#1507) Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- docs/wiki/ALZ-Policies-FAQ.md | 4 +- docs/wiki/ALZ-Policies.md | 3 +- docs/wiki/Whats-new.md | 3 + .../wiki/media/ALZ Policy Assignments v2.xlsx | Bin 37070 -> 37411 bytes eslzArm/eslzArm.json | 26 +++++++++ ...IT-ResourceRGLocationPolicyAssignment.json | 54 ++++++++++++++++++ .../policyDefinitions/policies.json | 4 +- .../customRoleDefinitions.json | 4 +- 8 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 eslzArm/managementGroupTemplates/policyAssignments/AUDIT-ResourceRGLocationPolicyAssignment.json diff --git a/docs/wiki/ALZ-Policies-FAQ.md b/docs/wiki/ALZ-Policies-FAQ.md index 4bb99c45e0..5f3a6f46a7 100644 --- a/docs/wiki/ALZ-Policies-FAQ.md +++ b/docs/wiki/ALZ-Policies-FAQ.md @@ -4,7 +4,7 @@ There is a lot of change happening for policies in Azure, and by extension ALZ, and we have a number of common issues being raised by our customers and partners. This page is intended to address those issues. -### Diagnostic Settings v2 (May 2023) +### Diagnostic Settings v2 (December 2023) There are several issues raised around Diagnostic Settings, and we acknowledge that this is a complex area that is causing a lot of pain. @@ -14,6 +14,8 @@ Check back here for updates, and be sure to bookmark [What's New](https://aka.ms To view the current list of GitHub issues related to diagnostic settings, please see [this link](https://github.com/Azure/Enterprise-Scale/labels/Area:%20Diagnostic%20Settings). +> **UPDATE** New built-in Diagnostic Settings policies and initiatives will be landing in early CY2024. As a heads-up we will begin deprecating all our custom diagnostic settings policies, and changing our default assignment to leverage the associated built-in initiative for Log Analytics (as the target) - additional options will include targeting Event Hubs or Storage accounts. + ### Azure Monitor Agent (May 2023) Similarly, as Microsoft Monitor Agent (MMA) is on a deprecation path, Azure Monitor Agent (AMA) is the recommended replacement and there are a number of requests to support AMA specific policies. AMA is currently in preview, and we are working with the product group to ensure that the policies are updated as soon as possible. Some policies are ready, however, the initiative to activate all components is still being worked on. diff --git a/docs/wiki/ALZ-Policies.md b/docs/wiki/ALZ-Policies.md index cef05074be..5be1df643a 100644 --- a/docs/wiki/ALZ-Policies.md +++ b/docs/wiki/ALZ-Policies.md @@ -68,7 +68,7 @@ This management group is a parent to all the other management groups created wit | **Policy Type** | **Count** | | :--- | :---: | | `Policy Definition Sets` | **11** | -| `Policy Definitions` | **2** | +| `Policy Definitions` | **3** | The table below provides the specific **Custom** and **Built-in** **policy definitions** and **policy definitions sets** assigned at the **Intermediate Root Management Group**. @@ -89,6 +89,7 @@ The table below provides the specific **Custom** and **Built-in** **policy defin | **Deny Virtual Machines and Virtual Machine Scale Sets from not using OS Managed Disks** | **Deny Virtual Machines and Virtual Machine Scale Sets from not using OS Managed Disks** | `Policy Definition`, **Built-In** | Deny virtual machines not using managed disk. It checks the managedDisk property on virtual machine OS Disk fields. | Deny | | **Deploy Azure Monitor Baseline Alerts for Service Health** | **Deploy Azure Monitor Baseline Alerts for Service Health** | `Policy Definition Set`, **Custom** | Deploys service health alerts, action group and alert processing rule. For more detail on policies included please refer to https://aka.ms/amba/alz/wiki under Policy Initiatives/Service Health initiative. | DeployIfNotExists | | **Resources should be Zone Resilient** | **Resources should be Zone Resilient** | `Policy Definition Set`, **Built-in** | Some resource types can be deployed Zone Redundant (e.g. SQL Databases); some can be deploy Zone Aligned (e.g. Virtual Machines); and some can be deployed either Zone Aligned or Zone Redundant (e.g. Virtual Machine Scale Sets). Being zone aligned does not guarantee resilience, but it is the foundation on which a resilient solution can be built (e.g. three Virtual Machine Scale Sets zone aligned to three different zones in the same region with a load balancer). See https://aka.ms/AZResilience for more info. | Audit | +| **Resource Group and Resource locations should match** | **Resource Group and Resource locations should match** | `Policy Definition`, **Built-in** | In order to improve resilience and reliability, you need to be aware of where resources are deployed. To aid this awareness, ensure that the location of the resource group matches the location of the resources it contains. | Audit | ### Platform diff --git a/docs/wiki/Whats-new.md b/docs/wiki/Whats-new.md index 5c3ab17ad7..558ead6b04 100644 --- a/docs/wiki/Whats-new.md +++ b/docs/wiki/Whats-new.md @@ -44,7 +44,10 @@ Here's what's changed in Enterprise Scale/Azure Landing Zones: #### Policy +> **IMPORTANT** We've updated the ALZ Policy FAQ with important information about the new Diagnostic Settings v2 policies and initiatives that are will be landing soon. Please read the [ALZ Policy FAQ and Tips](./ALZ-Policies-FAQ) for more information. + - Added new initiative default assignment at the Intermediate Root Management Group for [Resources should be Zone Resilient](https://www.azadvertizer.net/azpolicyinitiativesadvertizer/130fb88f-0fc9-4678-bfe1-31022d71c7d5.html) in Audit mode. +- Added new default assignment at the Intermediate Root Management Group for [Resource Group and Resource locations should match](https://www.azadvertizer.net/azpolicyadvertizer/0a914e76-4921-4c19-b460-a2d36003525a.html), which will help customers better manage and identify regionally deployed resources and ultimately support improved resilience. #### Docs diff --git a/docs/wiki/media/ALZ Policy Assignments v2.xlsx b/docs/wiki/media/ALZ Policy Assignments v2.xlsx index 5e8dc4529f7bb780ad9e633ca2ee98c87e4a2476..80fef44bf4249ed7f9da16f981321d326e50d885 100644 GIT binary patch delta 14555 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 M5&>*~%zq&KAKNv&tN;K2 delta 14227 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