From 3ff5b1fd91a395895e3e0ce8b7123fa12a65ecae Mon Sep 17 00:00:00 2001 From: Haflidi Fridthjofsson <26624010+haflidif@users.noreply.github.com> Date: Tue, 4 Oct 2022 07:34:46 +0200 Subject: [PATCH 1/5] Adding required role to New-AzPolicyReaderRole script to mitigate unauthorized on Management Group Level --- Scripts/Operations/New-AzPolicyReaderRole.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/Scripts/Operations/New-AzPolicyReaderRole.ps1 b/Scripts/Operations/New-AzPolicyReaderRole.ps1 index 28f24359..f33bd32c 100644 --- a/Scripts/Operations/New-AzPolicyReaderRole.ps1 +++ b/Scripts/Operations/New-AzPolicyReaderRole.ps1 @@ -32,6 +32,7 @@ $role.Description = 'Read access to Azure Policy.' $role.IsCustom = $true $perms = @( "*/read", + "Microsoft.Management/register/action", "Microsoft.Authorization/policyassignments/read", "Microsoft.Authorization/policydefinitions/read", "Microsoft.Authorization/policyexemptions/read", From d1719c46db0922ac636d92449318ca988ae68418 Mon Sep 17 00:00:00 2001 From: Haflidi Fridthjofsson <26624010+haflidif@users.noreply.github.com> Date: Tue, 4 Oct 2022 07:37:25 +0200 Subject: [PATCH 2/5] Adding the new permission role to documentation --- README.md | 1 + Scripts/Operations/README.md | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c5e06a57..746516f4 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,7 @@ The solution has a starter kit (folder `StarterKit`). Copy the contents of the ` ### EPAC Policy Reader role (custom) Create a custom role to be used by the planing stages' service connections **EPAC Policy Reader role**. Script `./Scripts/Operations/New-AzPolicyReaderRole.ps1` will create the role at the scope defined in `global-settings.json`. It will contain: + - `Microsoft.Management/register/action` - `Microsoft.Authorization/policyassignments/read` - `Microsoft.Authorization/policydefinitions/read` - `Microsoft.Authorization/policyexemptions/read` diff --git a/Scripts/Operations/README.md b/Scripts/Operations/README.md index 41858117..e615afc0 100644 --- a/Scripts/Operations/README.md +++ b/Scripts/Operations/README.md @@ -19,11 +19,15 @@ Many scripts use a configuration value called `RootScope`. It denotes the locati ## New-AzPolicyReaderRole.ps1 -Creates a custom role `Policy Contributor` at the scope selected with `PacEnvironmentSelector`: - -- `Microsoft.Authorization/policyAssignments/read` -- `Microsoft.Authorization/policyDefinitions/read` -- `Microsoft.Authorization/policySetDefinitions/read` +Creates a custom role `Policy Reader` at the scope selected with `PacEnvironmentSelector`: + +- `Microsoft.Management/register/action` +- `Microsoft.Authorization/policyassignments/read` +- `Microsoft.Authorization/policydefinitions/read` +- `Microsoft.Authorization/policyexemptions/read` +- `Microsoft.Authorization/policysetdefinitions/read` +- `Microsoft.PolicyInsights/*` +- `Microsoft.Support/*` |Parameter | Required | Explanation | |----------|----------|-------------| From 78c753f43e26f36b2a33d9754b06fd5588a66f4c Mon Sep 17 00:00:00 2001 From: Haflidi Fridthjofsson <26624010+haflidif@users.noreply.github.com> Date: Tue, 4 Oct 2022 08:27:21 +0200 Subject: [PATCH 3/5] Update README.md with Service Connection note Updating documentation with Service Connection note on scope level --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 746516f4..ef669d3e 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,12 @@ Create Service Principals for the pipeline execution and setup your DevOps envir - Security Reader and Policy Contributor for deploying Policies, Initiatives and Assignments in the EPAC prod environment - User Administrator for assigning roles to the Assignments' Managed Identities (for remediation tasks) in the EPAC prod environment +> **Note:** +> When creating a Service Connection in Azure DevOps you can set up the service connections on Subscription or a Management Group scope level, when configuring the service connection for the EPAC Developer and Test subscriptions the service connections scope level is **Subscription**, however when creating a Service Connections for EPAC Prod Plan, EPAC Prod Deployment and EPAC Role Assignment the service connection scope level is **Management Group**. + +![image](https://user-images.githubusercontent.com/26624010/193749033-a74c871e-a372-4003-9b20-0efea1e11ee3.png) +![image](https://user-images.githubusercontent.com/26624010/193749169-9514c483-a37b-493c-96d1-c193ea846daa.png) + ### EPAC environments setup Like any other software or X as Code solution, EPAC needs areas for developing and testing new Policies, Initiatives and Assignments before any deployment to EPAC prod environments. In most cases you will need one subscription each for development and testing. EPAC's prod environment will govern all other IaC environments (e.g., sandbox, development, integration, test/qa, pre-prod, prod, ...). This can be slightly confusing. From 728ae140c26b0e1c4a5d7f737742de6e7069c5ed Mon Sep 17 00:00:00 2001 From: Haflidi Fridthjofsson <26624010+haflidif@users.noreply.github.com> Date: Tue, 4 Oct 2022 08:36:05 +0200 Subject: [PATCH 4/5] Update README.md with Service Connection note --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ef669d3e..280a6ed8 100644 --- a/README.md +++ b/README.md @@ -143,8 +143,9 @@ Create Service Principals for the pipeline execution and setup your DevOps envir > **Note:** > When creating a Service Connection in Azure DevOps you can set up the service connections on Subscription or a Management Group scope level, when configuring the service connection for the EPAC Developer and Test subscriptions the service connections scope level is **Subscription**, however when creating a Service Connections for EPAC Prod Plan, EPAC Prod Deployment and EPAC Role Assignment the service connection scope level is **Management Group**. -![image](https://user-images.githubusercontent.com/26624010/193749033-a74c871e-a372-4003-9b20-0efea1e11ee3.png) -![image](https://user-images.githubusercontent.com/26624010/193749169-9514c483-a37b-493c-96d1-c193ea846daa.png) +Subscription scope level | Management Group scope level +:-----------:|:----------------: +![image](https://user-images.githubusercontent.com/26624010/193749033-a74c871e-a372-4003-9b20-0efea1e11ee3.png) | ![image](https://user-images.githubusercontent.com/26624010/193749169-9514c483-a37b-493c-96d1-c193ea846daa.png) ### EPAC environments setup From 1a9ca8a435e4bac678554853fb45897dc1ab2b47 Mon Sep 17 00:00:00 2001 From: Haflidi Fridthjofsson <26624010+haflidif@users.noreply.github.com> Date: Tue, 4 Oct 2022 15:16:34 +0200 Subject: [PATCH 5/5] Adding Source Images for AzDo Service Connection Config to ./Docs/Images --- Docs/Images/azdoServiceConnectionMGConf.png | Bin 0 -> 15929 bytes Docs/Images/azdoServiceConnectionSubConf.png | Bin 0 -> 15800 bytes README.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Docs/Images/azdoServiceConnectionMGConf.png create mode 100644 Docs/Images/azdoServiceConnectionSubConf.png diff --git a/Docs/Images/azdoServiceConnectionMGConf.png b/Docs/Images/azdoServiceConnectionMGConf.png new file mode 100644 index 0000000000000000000000000000000000000000..fcac14dfd856a6812dc12bc9f8067b697dcedf29 GIT binary patch literal 15929 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 literal 0 HcmV?d00001 diff --git a/Docs/Images/azdoServiceConnectionSubConf.png b/Docs/Images/azdoServiceConnectionSubConf.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf0deaa5c9f268929e15acbc68f7d2aa5a75475 GIT binary patch literal 15800 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 H