{"id":2446,"date":"2024-03-26T12:04:06","date_gmt":"2024-03-26T11:04:06","guid":{"rendered":"https:\/\/www.ituziast.com\/?p=2446"},"modified":"2024-11-27T12:35:06","modified_gmt":"2024-11-27T11:35:06","slug":"azure-landing-zone-design-azure-policy","status":"publish","type":"post","link":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/","title":{"rendered":"Azure Landing Zone design: Azure Policy"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Setting the stage<\/h3>\n\n\n\n<p>I believe that if You are working with Microsoft Azure, You must be familiar with the Azure <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/ready\/landing-zone\/?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Landing Zone<\/a> construct, part of the <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Cloud Adoption Framework for Azure<\/a>. In case You are not, it represents a structured environment adhering to fundamental design principles across eight distinct areas:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Azure billing and Microsoft Entra tenant; (A)<\/li>\n\n\n\n<li>Identity and access management; (B)<\/li>\n\n\n\n<li>Resource organization; (C)<\/li>\n\n\n\n<li>Network topology and connectivity; (E)<\/li>\n\n\n\n<li>Security; (F)<\/li>\n\n\n\n<li>Management; (D, G, H)<\/li>\n\n\n\n<li>Governance; (C, D)<\/li>\n\n\n\n<li>Platform automation and DevOps. (I)<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note:<\/p>\n<cite>We discussed the Cloud Adoption Framework several times. Refer to the links at the bottom of this article for more information.<\/cite><\/blockquote>\n\n\n\n<p>Below is an illustration of the conceptual architecture for Azure landing zones, showcasing a scaled-out target structure aimed at assisting organizations in effectively managing cloud environments to propel their business forward while upholding optimal standards for security and governance. Every implementation option for Azure landing zones offers a deployment strategy and clear design principles.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/ready\/enterprise-scale\/media\/ns-arch-cust-expanded.svg?WT.mc_id=AZ-MVP-5002880#lightbox\" alt=\"\" class=\"no-lazyload\" \/><figcaption class=\"wp-element-caption\"><em>Azure landing zone conceptual architecture<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<p>These principles cater to diverse application portfolios, facilitating the seamless migration, modernization, and expansion of applications on a large scale. Utilizing subscriptions, an Azure landing zone segregates and amplifies both application and platform resources. Specifically, subscriptions designated for application resources are referred to as application landing zones, while those allocated for platform resources are known as platform landing zones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Landing Zone Design area: Resource organization<\/h3>\n\n\n\n<p>As part of the Resource Organization (C), I want to focus on the <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/ready\/landing-zone\/design-principles?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Design Principles<\/a>, more specifically on the <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/ready\/enterprise-scale\/dine-guidance?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">policy-driven guardrails<\/a> (Azure Policy). The Azure Policy is for governance, monitoring, security and compliance. If You need to prohibit specific named users and\/or service principals from doing something, then You need Role-Based Access Control, or as it is mentioned above &#8211; Identity and access management (B).<\/p>\n\n\n\n<p>This is covered in the policy-driven guardrails documentation, as referenced above. It provides an comprehensive coverage of DeployIfNotExists (DINE) or Modify policies from making changes within your Azure environment. <\/p>\n\n\n\n<p>In this article I want to point out some design areas as well as recommendations to follow during implementation of Azure Policies in Your environments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"MG-structure\">Landing Zone Design area: Management Group structure<\/h3>\n\n\n\n<p>Policy\/Initiative Definitions and Policy Assignments need to be deployed at a scope. This is valid for both built-in and custom ones. The scope You should be looking at is the Management Group (MG) in each tenant. <\/p>\n\n\n\n<p>That Management Group level should be the single group, underneath the \u201cTenant Root group\u201d as recommended in the <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/ready\/landing-zone\/design-areas?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Design Areas (Cloud Adoption Framework)<\/a> or at the actual \u201cTenant root group\u201d if You have simple structure.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Best practice:<\/p>\n<cite>Keep the Management Group tree depth to maximum two levels.<\/cite><\/blockquote>\n\n\n\n<p>Each new or de-allocated subscription must be placed in appropriate Management Group for such purpose (in the image above that Management Group is &#8220;Decommissioned&#8221;) or below the scope of specific security-driven policy assignment. With that, You will prevent those subscriptions from bypassing the established security controls relevant for the organization.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note:<\/p>\n<cite>If You look at the image above, it implies that the policies are applied on the Subscription level. This actually is not true, the methodology references the Management Groups.<\/cite><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Landing Zone design area: Policy Assignments<\/h3>\n\n\n\n<p>Until You assign a Policy, it&#8217;s an inert element in Your Tenant. The assignment is on a scope (Tenant Root Group, Management Group, Subscription). When You create an assignment, mind the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use naming convention that makes sense to You: it is clear enough to understand what it is all about;<\/li>\n\n\n\n<li>Always add description, outlining at least what the policy is all about, some basic information and which department(s) own(s) it (can be up to 512 characters);<\/li>\n\n\n\n<li>You can use the metadata to store some additional information (up to 1024 characters);<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note: <\/p>\n<cite>A subset of metadata are reserved for common properties, such as createdBy, assignedBy, createdOn, parametersScope, updatedBy, updatedOn, evidenceStorages<br>More information can be found <a href=\"https:\/\/learn.microsoft.com\/azure\/governance\/policy\/concepts\/assignment-structure?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/cite><\/blockquote>\n\n\n\n<p>You should also be aware, that with each subscription, Defended for Cloud, automatically assigns the &#8220;ASC Default (subscription: XYXYXY)&#8221; initiative (I know, this is an old name). It also contains the subscription ID in its name.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"471\" height=\"96\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy1.jpg\" alt=\"\" class=\"wp-image-2474 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy1.jpg 471w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy1-300x61.jpg 300w\" sizes=\"(max-width: 471px) 100vw, 471px\" \/><figcaption class=\"wp-element-caption\">Sample of default Policy initiatives in a Tenant with three subscriptions<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Each one of those contains 242 Policy definitions inside (at the moment). All policies inside are set to &#8220;Audit&#8221;. This is a great start, of you haven&#8217;t defined the policy settings by yourself. <\/p>\n\n\n\n<p>It actually gives you a great security baseline, on which You can build up on. For small and mid-sized organizations this might be more than enough. But, once You consider following the framework recommendation and assign it on the Management Group level, be careful of overlapping.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Best practice:<\/p>\n<cite>In most scenarios, you will set some of the effects to \u201cDeny\u201d. Create a new Assignment at a Management Group level to change the effects accordingly (see <a href=\"#MG-structure\">Management Group structure<\/a>). Once done you should remove the auto-assigned Policy Assignments to avoid difficulties on overlaps.<\/cite><\/blockquote>\n\n\n\n<p>In some cases You will need to assign additional security and\/or compliance related initiatives (i.e. ISO27001, NIST, etc). Just don&#8217;t over do it.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"918\" height=\"111\" src=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy2.jpg\" alt=\"\" class=\"wp-image-2494 no-lazyload\" srcset=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy2.jpg 918w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy2-300x36.jpg 300w, https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/AZLZ_AzurePolicy2-768x93.jpg 768w\" sizes=\"(max-width: 918px) 100vw, 918px\" \/><figcaption class=\"wp-element-caption\">Regulatory compliance dashboard in Azure Portal<\/figcaption><\/figure>\n<\/div>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Best practice:<\/p>\n<cite>Don&#8217;t use more than three initiatives, including any custom policy initiatives. Maintenance, managing exemptions and troubleshooting is almost impossible for more than that.<\/cite><\/blockquote>\n\n\n\n<p>Within the assignments, any policy that will perform modification or deployment of resource\/component that does not exist, will require a Managed Identity (with specific role to perform this action).<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Decision point:<\/p>\n<cite>System-assigned Managed Identity service principal is always bound to one assignment. This will eliminate malicious usage of that service principal, since Azure is going to &#8220;keep an eye&#8221; on it. <br>User-assigned Managed Identity service principal can reduce the number of Azure role assignments for service principal accounts. But, additional security measures and\/or exemption from ones, need to be considered for that service principal.<\/cite><\/blockquote>\n\n\n\n<p>These accounts will be important when You execute specific Policy remediation tasks. We use scripting to perform this operation, and not the CI\/CD tools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Landing Zone design area: Policy customization<\/h3>\n\n\n\n<p>Each time You decide to run a custom policy definition and\/or imitative, this would be the a well considered in advanced option. When opting in for this model, there are couple of things to remember:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The elements of a policy are unchanged in value, no matter how many times You assign that policy.<\/li>\n\n\n\n<li>Support Your organization <a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/operating-model\/compare?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">operating model<\/a>: depending on the structure, You might have different teams in charge of different Policy definitions\/initiatives.<\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noreferrer noopener\">Don&#8217;t repeat y<\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\">ourself<\/a>: reduce repetition of information which is likely to change, replacing it with abstractions that are less likely to change, or using data normalization which avoids redundancy in the first place.<\/li>\n<\/ul>\n\n\n\n<p>Now customization will create a different level of complexity &#8211; You need to manage these policies. As time progresses, Azure landing zone custom policies and policy initiatives evolve to newer iterations, offering enhancements that you can integrate into your Azure environment. This is where the problem lies &#8211; following the changes, testing and updating the policy assignments. Using CI\/CD process (i.e <a href=\"https:\/\/learn.microsoft.com\/azure\/devops\/?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Azure DevO<\/a><a href=\"https:\/\/learn.microsoft.com\/azure\/devops\/?WT.mc_id=AZ-MVP-5002880\">ps<\/a>, <a href=\"https:\/\/github.com\/features\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a>, Jira, etc) helps maintain visibility and control.<\/p>\n\n\n\n<p>The following diagram explains how the process goes, as per Cloud Adoption Framework guidance:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/_images\/govern\/azure-landing-zone-policy-to-newer-version-large.png?WT.mc_id=AZ-MVP-5002880#lightbox\" alt=\"\" class=\"no-lazyload\" \/><figcaption class=\"wp-element-caption\">Decision tree and process flow for Azure landing zone custom policy updates<\/figcaption><\/figure>\n<\/div>\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Decision point:<\/p>\n<cite>This is where You need to decide should the policy definitions\/initiatives be customized, or should You opt-in for the built-in ones?<\/cite><\/blockquote>\n\n\n\n<p>Although there are some constrains with the built-in policies, but still its far more easier for implementation. You don&#8217;t need to handle the naming conventions, description, versioning, assignments, testing, and troubleshooting. This becomes more evident in multi-tenant scenarios. There are couple of links at the end, with tools and sources that will help You in that case.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Landing Zone design area: Policy exemptions<\/h3>\n\n\n\n<p>The Azure Policy exemptions feature serves as a valuable tool for excluding either an entire resource hierarchy or individual resources from the evaluation process of initiatives or definitions. While exempted resources still contribute to the overall compliance status, they are temporarily exempted from evaluation. <\/p>\n\n\n\n<p>It&#8217;s important to note that exemptions offer flexibility in compliance management, allowing organizations to tailor their policies according to specific needs and scenarios. Additionally, exemptions can be applied strategically to address temporary requirements or unique circumstances within the Azure environment.<\/p>\n\n\n\n<p>There are two categories:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Mitigated<\/strong>: This exemption is authorized when the policy&#8217;s objectives are fulfilled through alternative means.<\/li>\n\n\n\n<li><strong>Waiver<\/strong>: This exemption is authorized when a resource&#8217;s non-compliance status is temporarily acknowledged. <\/li>\n<\/ul>\n\n\n\n<p>Another scenario where Waiver category is applicable is for resources or resource hierarchies that require exclusion from specific definitions within an initiative, without necessitating exclusion from the entire initiative.<\/p>\n\n\n\n<p>The policy exemption (JSON) contains elements for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Display name<\/li>\n\n\n\n<li>Description<\/li>\n\n\n\n<li>Metadata<\/li>\n\n\n\n<li>Policy assignment<\/li>\n\n\n\n<li>Policy definitions within an initiative<\/li>\n\n\n\n<li>Exemption category<\/li>\n\n\n\n<li>Expiration<\/li>\n\n\n\n<li>Resource selectors<\/li>\n\n\n\n<li>Assignment scope validation<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Best practice:<\/p>\n<cite>The metadata property allows creating any child property needed for storing relevant information (string). Use it to store link with additional information, to keep information why and who granted the exemption.<\/cite><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Additional information<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.ituziast.com\/index.php\/2020\/04\/17\/cloud-adoption-in-the-era-of-accelerated-digital-transformation-part-1\/\">Cloud adoption in the era of accelerated Digital Transformation<\/a><br><a href=\"https:\/\/learn.microsoft.com\/azure\/governance\/policy\/concepts\/assignment-structure?WT.mc_id=AZ-MVP-5002880\">Azure Policy assignment structure<\/a><br><a href=\"https:\/\/github.com\/Azure\/azure-policy?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Azure\/azure-policy: Repository for Azure Resource Policy built-in definitions and samples (github.com)<\/a><br><a href=\"https:\/\/azure.github.io\/enterprise-azure-policy-as-code?WT.mc_id=ES-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Enterprise Azure Policy as Code (EPAC)<\/a><br><a href=\"https:\/\/www.azadvertizer.net\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">AzAdvertizer<\/a><br><a href=\"https:\/\/github.com\/Azure\/Enterprise-Scale\/wiki\/Whats-new\" target=\"_blank\" rel=\"noreferrer noopener\">Azure Policy &#8211; What&#8217;s new (GitHub)<\/a><br><a href=\"https:\/\/learn.microsoft.com\/azure\/cloud-adoption-framework\/govern\/guides\/standard\/update-custom-policies?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Update Azure landing zone custom policies<\/a><br><a href=\"https:\/\/learn.microsoft.com\/azure\/governance\/policy\/concepts\/policy-as-code?WT.mc_id=AZ-MVP-5002880\" target=\"_blank\" rel=\"noreferrer noopener\">Design Azure Policy as Code workflows<\/a><br><a href=\"https:\/\/github.com\/grozdanovd\/UsefulLinks\">Useful links <\/a><a href=\"https:\/\/github.com\/grozdanovd\/UsefulLinks\" target=\"_blank\" rel=\"noreferrer noopener\">repository (GitHub)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\">Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the Microsoft Cloud Adoption Framework for Azure. In case You <a class=\"mh-excerpt-more\" href=\"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/\" title=\"Azure Landing Zone design: Azure Policy\">[&#8230;]<\/a><\/div>\n","protected":false},"author":2,"featured_media":2493,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,63],"tags":[12,209,155,78,48,204,102,76],"coauthors":[],"class_list":{"0":"post-2446","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-azure","8":"category-cloud","9":"tag-azure","10":"tag-azure-policy","11":"tag-best-practices","12":"tag-cloud","13":"tag-cloud-adoption-framework","14":"tag-governance","15":"tag-microsoft-azure","16":"tag-solution-architecture"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Azure Landing Zone design: Azure Policy - ITuziast<\/title>\r\n<meta name=\"description\" content=\"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Azure Landing Zone design: Azure Policy - ITuziast\" \/>\r\n<meta property=\"og:description\" content=\"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ITuziast\" \/>\r\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITuziast\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/bsky.app\/profile\/grozdanovd.bsky.social\" \/>\r\n<meta property=\"article:published_time\" content=\"2024-03-26T11:04:06+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2024-11-27T11:35:06+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Dimitar Grozdanov\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@grozdanovd\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dimitar Grozdanov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/\"},\"author\":{\"name\":\"Dimitar Grozdanov\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/8596bb127b83987935c0355c8ed6130c\"},\"headline\":\"Azure Landing Zone design: Azure Policy\",\"datePublished\":\"2024-03-26T11:04:06+00:00\",\"dateModified\":\"2024-11-27T11:35:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/\"},\"wordCount\":1569,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/BringOrderWithChaos4.jpg\",\"keywords\":[\"Azure\",\"Azure Policy\",\"Best Practices\",\"Cloud\",\"Cloud Adoption Framework\",\"Governance\",\"Microsoft Azure\",\"Solution Architecture\"],\"articleSection\":[\"Azure\",\"Cloud\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/\",\"name\":\"Azure Landing Zone design: Azure Policy - ITuziast\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/BringOrderWithChaos4.jpg\",\"datePublished\":\"2024-03-26T11:04:06+00:00\",\"dateModified\":\"2024-11-27T11:35:06+00:00\",\"description\":\"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/BringOrderWithChaos4.jpg\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/BringOrderWithChaos4.jpg\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/2024\\\/03\\\/26\\\/azure-landing-zone-design-azure-policy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ituziast.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Landing Zone design: Azure Policy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#website\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"name\":\"ITuziast\",\"description\":\"Bits and Bytes of Technology\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ituziast.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#organization\",\"name\":\"ITuziast\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.ituziast.com\\\/wp-content\\\/uploads\\\/2020\\\/09\\\/ituziast-logo.png\",\"width\":512,\"height\":512,\"caption\":\"ITuziast\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ITuziast\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ituziast.com\\\/#\\\/schema\\\/person\\\/8596bb127b83987935c0355c8ed6130c\",\"name\":\"Dimitar Grozdanov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=gb1156e7caf65275f1df79df9ad892041\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g\",\"caption\":\"Dimitar Grozdanov\"},\"description\":\"Engineer. 25+ years \u201cin the field\u201d. Cloud Solution Architect. Microsoft 365 MVP. Trainer. Co-founder\\\/Supporter of Tech Communities. Speaker. Blogger. Parent. Passionate about craft beer and hanging out with family and friends.\",\"sameAs\":[\"https:\\\/\\\/mvp.microsoft.com\\\/en-us\\\/PublicProfile\\\/5002880?fullName=Dimitar%20Grozdanov\",\"https:\\\/\\\/bsky.app\\\/profile\\\/grozdanovd.bsky.social\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/dimitar-grozdanov\\\/\",\"https:\\\/\\\/x.com\\\/grozdanovd\",\"https:\\\/\\\/www.youtube.com\\\/@dimitargrozdanov\"],\"url\":\"https:\\\/\\\/www.ituziast.com\\\/index.php\\\/author\\\/grozdanovd\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Landing Zone design: Azure Policy - ITuziast","description":"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/","og_locale":"en_US","og_type":"article","og_title":"Azure Landing Zone design: Azure Policy - ITuziast","og_description":"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the","og_url":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/","og_site_name":"ITuziast","article_publisher":"https:\/\/www.facebook.com\/ITuziast","article_author":"https:\/\/bsky.app\/profile\/grozdanovd.bsky.social","article_published_time":"2024-03-26T11:04:06+00:00","article_modified_time":"2024-11-27T11:35:06+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg","type":"image\/jpeg"}],"author":"Dimitar Grozdanov","twitter_card":"summary_large_image","twitter_creator":"@grozdanovd","twitter_misc":{"Written by":"Dimitar Grozdanov","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#article","isPartOf":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/"},"author":{"name":"Dimitar Grozdanov","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/8596bb127b83987935c0355c8ed6130c"},"headline":"Azure Landing Zone design: Azure Policy","datePublished":"2024-03-26T11:04:06+00:00","dateModified":"2024-11-27T11:35:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/"},"wordCount":1569,"commentCount":0,"publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg","keywords":["Azure","Azure Policy","Best Practices","Cloud","Cloud Adoption Framework","Governance","Microsoft Azure","Solution Architecture"],"articleSection":["Azure","Cloud"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/","url":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/","name":"Azure Landing Zone design: Azure Policy - ITuziast","isPartOf":{"@id":"https:\/\/www.ituziast.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#primaryimage"},"image":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg","datePublished":"2024-03-26T11:04:06+00:00","dateModified":"2024-11-27T11:35:06+00:00","description":"Setting the stage I believe that if You are working with Microsoft Azure, You must be familiar with the Azure Landing Zone construct, part of the","breadcrumb":{"@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#primaryimage","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2024\/03\/BringOrderWithChaos4.jpg","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.ituziast.com\/index.php\/2024\/03\/26\/azure-landing-zone-design-azure-policy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ituziast.com\/"},{"@type":"ListItem","position":2,"name":"Azure Landing Zone design: Azure Policy"}]},{"@type":"WebSite","@id":"https:\/\/www.ituziast.com\/#website","url":"https:\/\/www.ituziast.com\/","name":"ITuziast","description":"Bits and Bytes of Technology","publisher":{"@id":"https:\/\/www.ituziast.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ituziast.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.ituziast.com\/#organization","name":"ITuziast","url":"https:\/\/www.ituziast.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","contentUrl":"https:\/\/www.ituziast.com\/wp-content\/uploads\/2020\/09\/ituziast-logo.png","width":512,"height":512,"caption":"ITuziast"},"image":{"@id":"https:\/\/www.ituziast.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITuziast"]},{"@type":"Person","@id":"https:\/\/www.ituziast.com\/#\/schema\/person\/8596bb127b83987935c0355c8ed6130c","name":"Dimitar Grozdanov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=gb1156e7caf65275f1df79df9ad892041","url":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/970f950d69334bef706f381f8022be295b3e85d8d3214f8b5cd6fcc0e7cad338?s=96&d=mm&r=g","caption":"Dimitar Grozdanov"},"description":"Engineer. 25+ years \u201cin the field\u201d. Cloud Solution Architect. Microsoft 365 MVP. Trainer. Co-founder\/Supporter of Tech Communities. Speaker. Blogger. Parent. Passionate about craft beer and hanging out with family and friends.","sameAs":["https:\/\/mvp.microsoft.com\/en-us\/PublicProfile\/5002880?fullName=Dimitar%20Grozdanov","https:\/\/bsky.app\/profile\/grozdanovd.bsky.social","https:\/\/www.linkedin.com\/in\/dimitar-grozdanov\/","https:\/\/x.com\/grozdanovd","https:\/\/www.youtube.com\/@dimitargrozdanov"],"url":"https:\/\/www.ituziast.com\/index.php\/author\/grozdanovd\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/comments?post=2446"}],"version-history":[{"count":46,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2446\/revisions"}],"predecessor-version":[{"id":2496,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/posts\/2446\/revisions\/2496"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media\/2493"}],"wp:attachment":[{"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/media?parent=2446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/categories?post=2446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/tags?post=2446"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.ituziast.com\/index.php\/wp-json\/wp\/v2\/coauthors?post=2446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}