Skip to content

Commit c2e3278

Browse files
authored
Merge pull request #1027 from Azure/hotfix/documentationSyntaxFix
Syntax fix
2 parents 3b49f1b + 298d56e commit c2e3278

File tree

3 files changed

+34
-22
lines changed

3 files changed

+34
-22
lines changed

Docs/manual-configuration.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
This guide walks you through manually setting up EPAC when the Hydration Kit doesn't meet your specific requirements.
44

55
**When to use Manual Configuration:**
6+
67
- Complex multi-tenant scenarios
78
- Custom folder structures or naming conventions
89
- Advanced customization requirements
910
- Specific compliance or organizational constraints
1011

1112
> [!TIP]
12-
> **Consider the Hydration Kit first** - Even for advanced scenarios, you might start with the Hydration Kit and then customize the generated configuration. This can save time and provide a solid foundation. If they Hydration Kit is lacking on specific functionality that prevents its use in your environment, please **[Open a GitHub Issue](https://github.com/Azure/enterprise-azure-policy-as-code/issues)** to provide feedback and feature requests.
13+
> **Consider the Hydration Kit first:** Even for advanced scenarios, you might start with the Hydration Kit and then customize the generated configuration. This can save time and provide a solid foundation. If they Hydration Kit is lacking on specific functionality that prevents its use in your environment, please **[Open a GitHub Issue](https://github.com/Azure/enterprise-azure-policy-as-code/issues)** to provide feedback and feature requests.
1314
1415
## Prerequisites
1516

@@ -77,8 +78,9 @@ Deploy-RolesPlan -PacEnvironmentSelector "epac-dev"
7778

7879
> [!NOTE]
7980
> Many scripts use parameters for input and output folders. They default to the current directory. We recommend that you do one of the following approaches instead of accepting the default to prevent your files being created in the wrong location:
80-
- [Preferred] Set the environment variables `PAC_DEFINITIONS_FOLDER`, `PAC_OUTPUT_FOLDER`, and `PAC_INPUT_FOLDER`.
81-
- [Alternative] Use the script parameters `-DefinitionsRootFolder`, `-OutputFolder`, and `-InputFolder`.
81+
>
82+
>- [Preferred] Set the environment variables `PAC_DEFINITIONS_FOLDER`, `PAC_OUTPUT_FOLDER`, and `PAC_INPUT_FOLDER`.
83+
>- [Alternative] Use the script parameters `-DefinitionsRootFolder`, `-OutputFolder`, and `-InputFolder`.
8284
8385
## Starter Kit Pipelines
8486

Docs/start-hydration-kit.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,38 +69,38 @@ The Hydration Kit will present you with a series of questions that will drive co
6969

7070
#### Initial Configuration
7171

72-
1. **Confirm your Tenant ID** - Verify you're authenticated to the correct Azure tenant
73-
1. **Set a PAC Owner ID** - Manually Specify a `pacOwnerId` or let the Hydration Kit auto-generate a GUID
74-
1. **Implement CAFv3** - Decide whether to deploy the CAFv3 Management Group Structure within the specified `tenantIntermediateRoot`.
75-
1. **Confirm provided scope** - Verify the `tenantIntermediateRoot` Management Group specified exists, and create one if not.
72+
1. **Confirm your Tenant ID:** Verify you're authenticated to the correct Azure tenant
73+
1. **Set a PAC Owner ID:** Manually Specify a `pacOwnerId` or let the Hydration Kit auto-generate a GUID
74+
1. **Implement CAFv3:** Decide whether to deploy the CAFv3 Management Group Structure within the specified `tenantIntermediateRoot`.
75+
1. **Confirm provided scope:** Verify the `tenantIntermediateRoot` Management Group specified exists, and create one if not.
7676

7777
#### Cloud Adoption Framework (CAF) Naming
7878
If you elect to deploy the CAFv3 Management Group structure, you will additionally be prompted for:
7979

80-
1. **Prefix for Management Groups** - (optional) Add a prefix to the CAFv3 Management Groups that will be created
81-
1. **Suffix for Management Groups** - (optional) Add a suffix to the CAFv3 Management Groups that will be created
80+
1. **Prefix for Management Groups:** (optional) Add a prefix to the CAFv3 Management Groups that will be created
81+
1. **Suffix for Management Groups:** (optional) Add a suffix to the CAFv3 Management Groups that will be created
8282

8383
#### EPAC Environment Setup
8484

85-
1. **Main PacSelector** - Provide a symbolic `PacSelector` Name for the main EPAC Environment (`pacEnvironment`).
85+
1. **Main PacSelector:** Provide a symbolic `PacSelector` Name for the main EPAC Environment (`pacEnvironment`).
8686
- The `tenantIntermediateRoot` specified will be the `deploymentRootScope` for this `pacEnvironment`.
87-
1. **epac-dev Parent** - Provide a Management Group that the `epac-dev` environment will be created.
87+
1. **epac-dev Parent:** Provide a Management Group that the `epac-dev` environment will be created.
8888
- A copy of the `tenantIntermediateRoot` Management Group specified (and all its child Management Groups) will be created as a child of this management group.
89-
1. **Managed Identity Location** - Choose a default Managed Identity Location for DeployIfNotExists and Modify Policies
89+
1. **Managed Identity Location:** Choose a default Managed Identity Location for DeployIfNotExists and Modify Policies
9090

9191
#### epac-dev Naming
9292

9393
To support the `epac-dev` environment being deployed, a copy of the `tenantIntermediateRoot` Management Group (and all its child Management Groups) will be deployed. You have the option to:
9494

95-
1. **Prefix for Management Groups** - (optional) Add a prefix to the copied Management Groups that will be created for `epac-dev`
96-
1. **Suffix for Management Groups** - (optional) Add a suffix to the copied Management Groups that will be created for `epac-dev`
95+
1. **Prefix for Management Groups:** (optional) Add a prefix to the copied Management Groups that will be created for `epac-dev`
96+
1. **Suffix for Management Groups:** (optional) Add a suffix to the copied Management Groups that will be created for `epac-dev`
9797

9898
#### Policy Import and Compliance Frameworks
9999

100100
The Hydration Kit can help you get started with some initial policies, as well as import existing polices. You will be given the option to:
101101

102-
1. **Import Policies** - Import existing policies into EPAC - this will create the required EPAC files for managing these policies.
103-
1. **Deploy Compliance Frameworks** - Add additional compliance frameworks to EPAC.
102+
1. **Import Policies:** Import existing policies into EPAC - this will create the required EPAC files for managing these policies.
103+
1. **Deploy Compliance Frameworks:** Add additional compliance frameworks to EPAC.
104104
- PCI-DSS compliance framework
105105
- NIST 800-53 v5 compliance framework.
106106
- Additional Built-In Policy Sets (specified via definition ID)
@@ -114,8 +114,8 @@ The Hydration Kit can help you get started with some initial policies, as well a
114114
#### CI/CD Pipeline Configuration
115115

116116
EPAC supports various options for running EPAC through CI/CD pipelines. Choose the DevOps approach that best fits your existing toolsets:
117-
1. **Execution method:** - Run EPAC via PowerShell Module (recommended) or source code
118-
1. **Platform:** - Select starter pipelines built for GitHub Actions or Azure DevOps Pipelines
117+
1. **Execution method:** Run EPAC via PowerShell Module (recommended) or source code
118+
1. **Platform:** Select starter pipelines built for GitHub Actions or Azure DevOps Pipelines
119119

120120
## Current Limitations
121121

Docs/start-implementing.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
EPAC (Enterprise Azure Policy as Code) enables you to manage Azure Policy at scale using Infrastructure as Code principles. This guide will help you understand core concepts and choose the right implementation path for your organization.
44

55
> [!IMPORTANT]
6-
> **Take time to understand the concepts** - Understanding EPAC's core concepts is crucial for successful implementation. Don't skip the EPAC Overview section.
6+
> **Take time to understand the concepts:** Understanding EPAC's core concepts is crucial for successful implementation. Don't skip the EPAC Overview section.
77
88
**What you'll learn:**
9+
910
- Core EPAC concepts and terminology
1011
- Prerequisites and permissions needed
1112
- Implementation options (Hydration Kit vs Manual)
@@ -17,6 +18,7 @@ Before implementing EPAC, ensure you have the required knowledge, software, and
1718

1819
### Knowledge Requirements
1920
You should understand these Azure concepts:
21+
2022
- [Azure Management Groups](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview)
2123
- [Azure Policy](https://learn.microsoft.com/en-us/azure/governance/policy/overview)
2224
- [Scope in Azure Policy](https://learn.microsoft.com/en-us/azure/governance/policy/concepts/scope)
@@ -81,20 +83,22 @@ The `deploymentRootScope` defines where EPAC manages policies. EPAC can deploy a
8183
![Sample Management Group Structure](./Images/sample-mg-structure.png)
8284

8385
> [!IMPORTANT]
84-
> **Avoid Tenant Root Group** - Set your `deploymentRootScope` to an Intermediate Root Management Group rather than the Tenant Root Group to maintain flexibility and avoid lockout scenarios. This is discussed in further detail in the Azure Cloud Adoption Framework [guidance](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups).
86+
> **Avoid Tenant Root Group:** Set your `deploymentRootScope` to an Intermediate Root Management Group rather than the Tenant Root Group to maintain flexibility and avoid lockout scenarios. This is discussed in further detail in the Azure Cloud Adoption Framework [guidance](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups).
8587
8688
### EPAC Environments Overview
8789

8890
Like any other solution or application, a development area is required to test and validate the solution before deploying to production. EPAC is the same, **however**, since Azure Policy affects all resources in your tenant, you need isolated space for policy development.
8991

9092
**The Challenge:** Testing new policies, or policy updates anywhere within your standard Management Group hierarchy could:
93+
9194
- Disrupt existing workloads
9295
- Create compliance issues
9396
- Impact other teams' work
9497

9598
For example, you may have an Azure policy assigned to control networking configuration, say to manage the firewall settings on storage accounts. This applies afor all workload types (platform, security, applications) and for all SDLC environments (production, development, sandbox, etc). You may need to update this policy, for instance to add a new allowed IP address. This policy needs to be tested before it rolls out to any scope within your environment to ensure there's no issues and its behaving accordingly.
9699

97100
**The Solution:** EPAC has the concept of **EPAC Environments**, or `pacEnvironments` providing isolated policy management with its own deployment scope.
101+
98102
- Each **EPAC Environment** has a symbolic name (`pacSelector`) and its own distinct `deploymentRootScope`
99103
- Each **EPAC Environment** is targeted separately for deployments, allowing you to manage policies independently.
100104

@@ -103,10 +107,12 @@ For example, you may have an Azure policy assigned to control networking configu
103107
Each **EPAC Environment** provides isolated policy management with its own deployment scope. This separation is crucial for safe policy development.
104108

105109
**Typical Setup:**
110+
106111
- **Tenant Environment** (`tenant01`): Manages policies in your main Management Group hierarchy
107112
- **Development Environment** (`epac-dev`): Manages policies in a separate, cloned Management Group hierarchy
108113

109114
**Benefits of Separate Environments:**
115+
110116
- Test policy changes without affecting other workloads
111117
- Validate compliance frameworks before deployment
112118
- Safely experiment with new policy configurations
@@ -136,10 +142,10 @@ The `global-settings` file, would then look something like this:
136142
}
137143
```
138144
> [!IMPORTANT]
139-
> **epac-dev** - It is **strongly recommended** to create your development **EPAC Environment** with a `deploymentRootScope` that is **separate** from the rest of your tenant. Remember that EPAC expects to manage **ALL** policies within its `deploymentRootScope` and each `pacEnvironment` is independent, so creating an **EPAC Environment** that is nested within the `deploymentRootScope` of another **EPAC Environment** is generally not recommended.
145+
> **epac-dev:**It is **strongly recommended** to create your development **EPAC Environment** with a `deploymentRootScope` that is **separate** from the rest of your tenant. Remember that EPAC expects to manage **ALL** policies within its `deploymentRootScope` and each `pacEnvironment` is independent, so creating an **EPAC Environment** that is nested within the `deploymentRootScope` of another **EPAC Environment** is generally not recommended.
140146
141147
> [!Tip]
142-
> **Main pacEnvironment Name** - You'll notice that we gave our main `pacEnvironment` the name `tenant01` instead of something like `production` and that **"EPAC Environment"** has been consistently bolded throughout the documentation. This is to create a distinction between environments that EPAC uses (`pacEnvironments`) and your general SDLC environments within your company (Prod, test, qa, dev, etc.) and Azure tenant. As discussed, it is important to separate the "Development" **EPAC Environment** from your regular development environments.
148+
> **Main pacEnvironment Name:** You'll notice that we gave our main `pacEnvironment` the name `tenant01` instead of something like `production` and that **"EPAC Environment"** has been consistently bolded throughout the documentation. This is to create a distinction between environments that EPAC uses (`pacEnvironments`) and your general SDLC environments within your company (Prod, test, qa, dev, etc.) and Azure tenant. As discussed, it is important to separate the "Development" **EPAC Environment** from your regular development environments.
143149
144150
### Managed Identities
145151

@@ -170,6 +176,7 @@ DeployifNotExists (DINE) policies require a managed identity to function. If you
170176
### Multi-Tenant Capabilities
171177

172178
EPAC supports single and multi-tenant configurations including:
179+
173180
- **Multiple Azure tenants** from a single EPAC instance
174181
- **Azure Lighthouse managed tenants**
175182
- **Cross-tenant role assignments** for centralized management
@@ -206,6 +213,7 @@ EPAC uses a simple folder structure to organize all policy resources:
206213
![Definitions Folder Structure](./Images/definitions-folder-structure.png)
207214

208215
**Key Files:**
216+
209217
- **`global-settings.jsonc`**: Central configuration file defining environments and settings
210218
- **`policyDefinitions/`**: Custom policy definitions
211219
- **`policySetDefinitions/`**: Policy initiative (set) definitions
@@ -231,6 +239,7 @@ Do you have complex multi-tenant requirements? → YES → Manual Configuration
231239
**Best for:** Most users, especially those new to EPAC
232240

233241
**What it provides:**
242+
234243
- Interactive setup with guided decisions
235244
- Setup of folder structure & generation of `global-settings.jsonc`
236245
- Automatic creation of `epac-dev` environment
@@ -244,6 +253,7 @@ Do you have complex multi-tenant requirements? → YES → Manual Configuration
244253
**Best for:** Advanced users with specific customization needs
245254

246255
**What it provides:**
256+
247257
- Full control over every configuration aspect
248258
- Ability to integrate with existing setups
249259
- Custom folder structures and naming

0 commit comments

Comments
 (0)