You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Docs/manual-configuration.md
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,13 +3,14 @@
3
3
This guide walks you through manually setting up EPAC when the Hydration Kit doesn't meet your specific requirements.
4
4
5
5
**When to use Manual Configuration:**
6
+
6
7
- Complex multi-tenant scenarios
7
8
- Custom folder structures or naming conventions
8
9
- Advanced customization requirements
9
10
- Specific compliance or organizational constraints
10
11
11
12
> [!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.
> 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`.
Copy file name to clipboardExpand all lines: Docs/start-hydration-kit.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,38 +69,38 @@ The Hydration Kit will present you with a series of questions that will drive co
69
69
70
70
#### Initial Configuration
71
71
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.
76
76
77
77
#### Cloud Adoption Framework (CAF) Naming
78
78
If you elect to deploy the CAFv3 Management Group structure, you will additionally be prompted for:
79
79
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
82
82
83
83
#### EPAC Environment Setup
84
84
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`).
86
86
- 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.
88
88
- 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
90
90
91
91
#### epac-dev Naming
92
92
93
93
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:
94
94
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`
97
97
98
98
#### Policy Import and Compliance Frameworks
99
99
100
100
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:
101
101
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.
104
104
- PCI-DSS compliance framework
105
105
- NIST 800-53 v5 compliance framework.
106
106
- 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
114
114
#### CI/CD Pipeline Configuration
115
115
116
116
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
Copy file name to clipboardExpand all lines: Docs/start-implementing.md
+14-4Lines changed: 14 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,10 @@
3
3
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.
4
4
5
5
> [!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.
7
7
8
8
**What you'll learn:**
9
+
9
10
- Core EPAC concepts and terminology
10
11
- Prerequisites and permissions needed
11
12
- Implementation options (Hydration Kit vs Manual)
@@ -17,6 +18,7 @@ Before implementing EPAC, ensure you have the required knowledge, software, and
-[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
81
83

82
84
83
85
> [!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).
85
87
86
88
### EPAC Environments Overview
87
89
88
90
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.
89
91
90
92
**The Challenge:** Testing new policies, or policy updates anywhere within your standard Management Group hierarchy could:
93
+
91
94
- Disrupt existing workloads
92
95
- Create compliance issues
93
96
- Impact other teams' work
94
97
95
98
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.
96
99
97
100
**The Solution:** EPAC has the concept of **EPAC Environments**, or `pacEnvironments` providing isolated policy management with its own deployment scope.
101
+
98
102
- Each **EPAC Environment** has a symbolic name (`pacSelector`) and its own distinct `deploymentRootScope`
99
103
- Each **EPAC Environment** is targeted separately for deployments, allowing you to manage policies independently.
100
104
@@ -103,10 +107,12 @@ For example, you may have an Azure policy assigned to control networking configu
103
107
Each **EPAC Environment** provides isolated policy management with its own deployment scope. This separation is crucial for safe policy development.
104
108
105
109
**Typical Setup:**
110
+
106
111
-**Tenant Environment** (`tenant01`): Manages policies in your main Management Group hierarchy
107
112
-**Development Environment** (`epac-dev`): Manages policies in a separate, cloned Management Group hierarchy
108
113
109
114
**Benefits of Separate Environments:**
115
+
110
116
- Test policy changes without affecting other workloads
111
117
- Validate compliance frameworks before deployment
112
118
- Safely experiment with new policy configurations
@@ -136,10 +142,10 @@ The `global-settings` file, would then look something like this:
136
142
}
137
143
```
138
144
> [!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.
140
146
141
147
> [!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.
143
149
144
150
### Managed Identities
145
151
@@ -170,6 +176,7 @@ DeployifNotExists (DINE) policies require a managed identity to function. If you
170
176
### Multi-Tenant Capabilities
171
177
172
178
EPAC supports single and multi-tenant configurations including:
179
+
173
180
-**Multiple Azure tenants** from a single EPAC instance
174
181
-**Azure Lighthouse managed tenants**
175
182
-**Cross-tenant role assignments** for centralized management
@@ -206,6 +213,7 @@ EPAC uses a simple folder structure to organize all policy resources:
0 commit comments