Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Regulatory Compliance Policy Assignment Flexibility Feature #1588

Merged
merged 68 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
93cb4c8
Add regulatory compliance policy selection dropdown
jtracey93 Feb 12, 2024
f3dba2d
Update required flag for regulatory compliance policies
jtracey93 Feb 12, 2024
5e81c5b
Add regulatory compliance information to ESLZ portal
jtracey93 Feb 12, 2024
571ba74
Update regulatory compliance settings in portal.json
jtracey93 Feb 12, 2024
a3cb2eb
Fix formatting issue in eslz-portal.json
jtracey93 Feb 12, 2024
5941352
Refactor regulatory compliance policy assignment in Azure Landing Zon…
jtracey93 Feb 13, 2024
49397cd
Add option to assign additional Regulatory Compliance Policy Initiatives
jtracey93 Feb 13, 2024
16f2c1e
Update regulatory compliance policy assignments in Azure Landing Zone…
jtracey93 Feb 14, 2024
acfe6ed
Update regulatoryComplianceInitativesToAssign value
jtracey93 Feb 14, 2024
ce91baf
Update multiLine property to true in filter component
jtracey93 Feb 14, 2024
13cf1fc
Fix image source URL in ESLZ portal description
jtracey93 Feb 14, 2024
4894814
Merge branch 'main' into feat/add-regulatroy-compliance-policy-selector
jtracey93 Feb 14, 2024
faee4d8
Add warning for single platform and improve mg descriptions
jtracey93 Feb 14, 2024
39f6f0a
Merge branch 'feat/add-regulatroy-compliance-policy-selector' of http…
jtracey93 Feb 14, 2024
cf991c9
Update regulatory compliance policy query and add policy assignment t…
jtracey93 Feb 14, 2024
f297277
inject mg replace for reg compliance
jtracey93 Feb 14, 2024
fe6d2cc
Fix query in eslz-portal.json
jtracey93 Feb 14, 2024
aa4e851
Update regulatory compliance assignments in ESLZ ARM template
jtracey93 Feb 14, 2024
637b533
Update visibility condition for regComplianceWarnLite
jtracey93 Feb 14, 2024
4860ca5
Update column IDs in eslz-portal.json
jtracey93 Feb 14, 2024
a116d5e
Update value for Sandbox Management Group
jtracey93 Feb 14, 2024
c75a72d
Fix deployment name concatenation in regulatoryComplianceInitativesTo…
jtracey93 Feb 14, 2024
f156eed
Add regulatory compliance diagram to ESLZ portal
jtracey93 Feb 14, 2024
ba7fc28
Update text in ESLZ portal JSON file
jtracey93 Feb 14, 2024
d63a880
Fix deployment name concatenation in regulatoryComplianceInitativesTo…
jtracey93 Feb 15, 2024
cd39419
Update regulatoryComplianceInitativesToAssignDeploymentName in eslzAr…
jtracey93 Feb 15, 2024
c5924fc
Fix deployment name concatenation in regulatoryComplianceInitativesTo…
jtracey93 Feb 15, 2024
566e626
Add regulatory policy warning message
jtracey93 Feb 16, 2024
bd56aba
Add regulatory compliance warning message
jtracey93 Feb 16, 2024
4463048
Remove unused code for regulatory compliance policy warning
jtracey93 Feb 16, 2024
b13e94f
fix logic for policy parameter drop down and add new zeland as first …
jtracey93 Feb 22, 2024
2ac6b2a
Add regulatory compliance warning message
jtracey93 Feb 22, 2024
c20b10f
Add regulatory policy parameters for Australian Government ISM PROTEC…
jtracey93 Feb 27, 2024
9d77181
Add required constraint to user input fields in eslz-portal.json
jtracey93 Feb 27, 2024
5e75f26
Add MPAA Regulatory Policy Initative Parameters
jtracey93 Feb 27, 2024
4c21a47
add sov params
jtracey93 Feb 27, 2024
a5fa215
Update regulatory compliance info box text and add link to Azure Poli…
jtracey93 Feb 28, 2024
bfd361c
Update required field constraints in eslz-portal.json
jtracey93 Feb 28, 2024
1122f91
Update regCompPolParSovBaseGlobalRegions value in eslz-portal.json
jtracey93 Feb 28, 2024
de56289
Add regulatory policy parameters for SWIFT CSP-CSCF v2020
jtracey93 Feb 28, 2024
60cdc28
Update regulatory policy parameters in ESLZ portal configuration
jtracey93 Feb 28, 2024
ee7727d
Add regulatory policy parameters for CIS Microsoft Azure Foundations …
jtracey93 Feb 28, 2024
a45954d
Add regCompPolParCisV2KeyVaultKeysRotateDays parameter
jtracey93 Feb 28, 2024
b2a1393
Add CMMC Level 3 policy parameters
jtracey93 Feb 28, 2024
0ef344d
add HIPAA
jtracey93 Feb 28, 2024
f16d2f9
Add IRS1075 September 2016 policy parameters
jtracey93 Feb 28, 2024
a028894
Add NIST SP 800-171 Rev. 2 policy parameters
jtracey93 Feb 28, 2024
c752884
Add SOC 2 Type 2 regulatory policy parameters
jtracey93 Feb 28, 2024
27f09a8
add sov conf
jtracey93 Feb 28, 2024
b0b2bd3
Add new parameters to ENFORCE-RegulatoryCompliancePolicyAssignment.json
jtracey93 Feb 29, 2024
fbed2c2
update polciy assignment to handle known ploicies that need params
jtracey93 Mar 1, 2024
4f5542d
Add updates to policy assignnemnts
jtracey93 Mar 1, 2024
621328b
add remianin policy assignments and flick to equals from contains
jtracey93 Mar 3, 2024
03fcff3
Add defaultValue for logAnalyticsWorkspaceId
jtracey93 Mar 3, 2024
7d5d91c
add params to top level template
jtracey93 Mar 3, 2024
43f36e8
Remove logAnalyticsWorkspaceId and add dependencies for regulatoryCom…
jtracey93 Mar 3, 2024
d9e6496
Add userAssignedIdentity to regCompAssignments
jtracey93 Mar 3, 2024
30cee78
Auto-update Portal experience [jtracey93/888e2418]
github-actions[bot] Mar 3, 2024
29b3f61
Add defaultValue to regCompPolParSovBaseConfRegions and regCompPolPar…
jtracey93 Mar 3, 2024
8f2d64d
Merge branch 'feat/add-regulatroy-compliance-policy-selector' of http…
jtracey93 Mar 3, 2024
76447da
Merge branch 'main' into feat/add-regulatroy-compliance-policy-selector
jtracey93 Mar 3, 2024
e9b6c96
Add new Regulatory Compliance Policy Assignment flexibility feature
jtracey93 Mar 3, 2024
05ceb42
Remove Canada Federal PBMM policy assignment duplicate
jtracey93 Mar 3, 2024
d49c4db
Remove "userAssignedIdentity" from resource dependencies
jtracey93 Mar 3, 2024
fcbb370
Update eslz-portal.json
jtracey93 Mar 4, 2024
fcf37bb
Update eslz-portal.json
jtracey93 Mar 4, 2024
15cb30f
Update eslz-portal.json
jtracey93 Mar 4, 2024
d5060cd
Update eslz-portal.json
jtracey93 Mar 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/wiki/Whats-new.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ Here's what's changed in Enterprise Scale/Azure Landing Zones:

- Added new AMA Policies and Initiatives to [ALZ Policies](./ALZ-Policies) documentation.

#### Tooling

- Add new Regulatory Compliance Policy Assignment flexibility feature

### February 2024

#### Tooling
Expand Down
1,543 changes: 1,541 additions & 2 deletions eslzArm/eslz-portal.json

Large diffs are not rendered by default.

275 changes: 272 additions & 3 deletions eslzArm/eslzArm.json
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,129 @@
"metadata": {
"description": "Name of the resource group to be created for the User Assigned Managed Identity in each subscription."
}
},
"regulatoryComplianceInitativesToAssign": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of objects containing built-in Regulatory Compliance policies to assign to sepcfied Management Groups"
}
},
"regCompPolParAusGovIsmRestrictedVmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParAusGovIsmRestrictedResourceTypes": {
"type": "string",
"defaultValue": "all"
},
"regCompPolParMPAACertificateThumb": {
"type": "string",
"defaultValue": ""
},
"regCompPolParMPAAApplicationName": {
"type": "string",
"defaultValue": ""
},
"regCompPolParMPAAStoragePrefix": {
"type": "string",
"defaultValue": ""
},
"regCompPolParMPAAResGroupPrefix": {
"type": "string",
"defaultValue": ""
},
"regCompPolParMPAARBatchMetricName": {
"type": "string",
"defaultValue": ""
},
"regCompPolParSovBaseConfRegions": {
"type": "array",
"defaultValue": []
},
"regCompPolParSovBaseGlobalRegions": {
"type": "array",
"defaultValue": []
},
"regCompPolParSwift2020VmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParSwift2020DomainFqdn": {
"type": "string",
"defaultValue": ""
},
"regCompPolParCanadaFedPbmmVmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParCanadaFedPbmmVmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParCisV2KeyVaultKeysRotateDays": {
"type": "int",
"defaultValue": 90
},
"regCompPolParCmmcL3VmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParCmmcL3VmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParHitrustHipaaApplicationName": {
"type": "string",
"defaultValue": ""
},
"regCompPolParHitrustHipaaStoragePrefix": {
"type": "string",
"defaultValue": ""
},
"regCompPolParHitrustHipaaResGroupPrefix": {
"type": "string",
"defaultValue": ""
},
"regCompPolParHitrustHipaaCertificateThumb": {
"type": "string",
"defaultValue": ""
},
"regCompPolParIrs1075Sep2016VmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParIrs1075Sep2016VmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParNZIsmRestrictedVmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParNZIsmRestrictedVmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParNistSp800171R2VmAdminsExclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParNistSp800171R2VmAdminsInclude": {
"type": "string",
"defaultValue": ""
},
"regCompPolParSoc2Type2AllowedRegistries": {
"type": "string",
"defaultValue": "^[^\\/]+\\.azurecr\\.io\\/.+$"
},
"regCompPolParSoc2Type2MaxCpuUnits": {
"type": "string",
"defaultValue": "200m"
},
"regCompPolParSoc2Type2MaxMemoryBytes": {
"type": "string",
"defaultValue": "1Gi"
}
},
"variables": {
Expand Down Expand Up @@ -869,7 +992,7 @@
"input": "[items(variables('mgmtGroupsLite'))[copyIndex('mgmtGroupsESLiteArray')].value]"
}
],

// Declaring scopes that will be used for optional deployments, such as platform components (monitoring, networking, identity), policy assignments, subscription placement etc.
"scopes": {
"eslzRootManagementGroup": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('mgmtGroups').eslzRoot)]",
Expand Down Expand Up @@ -910,6 +1033,7 @@
"logAnalyticsPolicyAssignment": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/DINE-LogAnalyticsPolicyAssignment.json')]",
"monitoringSolutions": "[uri(deployment().properties.templateLink.uri, 'subscriptionTemplates/logAnalyticsSolutions.json')]",
"asbPolicyInitiative": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/DINE-ASBPolicyAssignment.json')]",
"regulatoryComplianceInitaitves": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/ENFORCE-RegulatoryCompliancePolicyAssignment.json')]",
"resourceDiagnosticsInitiative": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/DINE-ResourceDiagnosticsPolicyAssignment.json')]",
"activityDiagnosticsPolicyAssignment": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/DINE-ActivityLogPolicyAssignment.json')]",
"mdfcConfigPolicyInitiative": "[uri(deployment().properties.templateLink.uri, 'managementGroupTemplates/policyAssignments/DINE-MDFCConfigPolicyAssignment.json')]",
Expand Down Expand Up @@ -991,6 +1115,7 @@
"monitorServiceHealthDeploymentName": "[take(concat('alz-SvcHealthMonitor', variables('deploymentSuffix')), 64)]",
"monitoringSolutionsDeploymentName": "[take(concat('alz-Solutions', variables('deploymentSuffix')), 64)]",
"asbPolicyDeploymentName": "[take(concat('alz-ASB', variables('deploymentSuffix')), 64)]",
"regulatoryComplianceInitativesToAssignDeploymentName": "[take(concat('alz-RegComp-', deployment().location, '-', uniqueString(parameters('currentDateTimeUtcNow')), '-'), 64)]",
"resourceDiagnosticsPolicyDeploymentName": "[take(concat('alz-ResourceDiagnostics', variables('deploymentSuffix')), 64)]",
"activityDiagnosticsPolicyDeploymentName": "[take(concat('alz-ActivityDiagnostics', variables('deploymentSuffix')), 64)]",
"ascPolicyDeploymentName": "[take(concat('alz-ASC', variables('deploymentSuffix')), 64)]",
Expand Down Expand Up @@ -1920,6 +2045,150 @@
"parameters": {}
}
},
{
// Assigning Regulatory Compliance polices to desired management groups if condition is true
"condition": "[not(empty(parameters('regulatoryComplianceInitativesToAssign')))]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "[take(concat(variables('deploymentNames').regulatoryComplianceInitativesToAssignDeploymentName, if(contains(parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg, '-'), split(parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg, '-')[1], parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg), '-', uniqueString(parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg, parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].policy.id)), 64)]",
"scope": "[concat('Microsoft.Management/managementGroups/', replace(parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg, 'contoso', parameters('enterpriseScaleCompanyPrefix')))]",
"location": "[deployment().location]",
"dependsOn": [
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').mgmtSubscriptionPlacement)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').vnetConnectivityHubDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').vwanConnectivityHubDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').nvaConnectivityHubDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').ddosLzPolicyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').policyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').activityDiagnosticsPolicyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').ascPolicyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').ascGovPolicyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').resourceDiagnosticsPolicyDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('esLiteDeploymentNames').vwanConnectivityHubLiteDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('esLiteDeploymentNames').vnetConnectivityHubLiteDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('esLiteDeploymentNames').nvaConnectivityHubLiteDeploymentName)]",
"[resourceId('Microsoft.Resources/deployments', variables('deploymentNames').monitoringDeploymentName)]",
"corpConnectedMoveLzs"
],
"copy": {
"name": "regCompAssignments",
"count": "[length(parameters('regulatoryComplianceInitativesToAssign'))]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"contentVersion": "1.0.0.0",
"uri": "[variables('deploymentUris').regulatoryComplianceInitaitves]"
},
"parameters": {
"topLevelManagementGroupPrefix": {
"value": "[parameters('enterpriseScaleCompanyPrefix')]"
},
"policySetDefinitionId": {
"value": "[parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].policy.id]"
},
"policySetDefinitionDisplayName": {
"value": "[parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].policy.displayName]"
},
"policySetDefinitionDescription": {
"value": "[parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].policy.description]"
},
"policyAssignmentName": {
"value": "[take(concat('Enforce-RegComp-',uniqueString(replace(parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].mg, 'contoso', parameters('enterpriseScaleCompanyPrefix')), parameters('regulatoryComplianceInitativesToAssign')[copyIndex()].policy.id)), 24)]"
},
"logAnalyticsWorkspaceId": {
"value": "[variables('platformResourceIds').logAnalyticsResourceId]"
},
"regCompPolParAusGovIsmRestrictedVmAdminsExclude": {
"value": "[parameters('regCompPolParAusGovIsmRestrictedVmAdminsExclude')]"
},
"regCompPolParAusGovIsmRestrictedResourceTypes": {
"value": "[parameters('regCompPolParAusGovIsmRestrictedResourceTypes')]"
},
"regCompPolParMPAACertificateThumb": {
"value": "[parameters('regCompPolParMPAACertificateThumb')]"
},
"regCompPolParMPAAApplicationName": {
"value": "[parameters('regCompPolParMPAAApplicationName')]"
},
"regCompPolParMPAAStoragePrefix": {
"value": "[parameters('regCompPolParMPAAStoragePrefix')]"
},
"regCompPolParMPAAResGroupPrefix": {
"value": "[parameters('regCompPolParMPAAResGroupPrefix')]"
},
"regCompPolParMPAARBatchMetricName": {
"value": "[parameters('regCompPolParMPAARBatchMetricName')]"
},
"regCompPolParSovBaseConfRegions": {
"value": "[parameters('regCompPolParSovBaseConfRegions')]"
},
"regCompPolParSovBaseGlobalRegions": {
"value": "[parameters('regCompPolParSovBaseGlobalRegions')]"
},
"regCompPolParSwift2020VmAdminsInclude": {
"value": "[parameters('regCompPolParSwift2020VmAdminsInclude')]"
},
"regCompPolParSwift2020DomainFqdn": {
"value": "[parameters('regCompPolParSwift2020DomainFqdn')]"
},
"regCompPolParCanadaFedPbmmVmAdminsInclude": {
"value": "[parameters('regCompPolParCanadaFedPbmmVmAdminsInclude')]"
},
"regCompPolParCanadaFedPbmmVmAdminsExclude": {
"value": "[parameters('regCompPolParCanadaFedPbmmVmAdminsExclude')]"
},
"regCompPolParCisV2KeyVaultKeysRotateDays": {
"value": "[parameters('regCompPolParCisV2KeyVaultKeysRotateDays')]"
},
"regCompPolParCmmcL3VmAdminsInclude": {
"value": "[parameters('regCompPolParCmmcL3VmAdminsInclude')]"
},
"regCompPolParCmmcL3VmAdminsExclude": {
"value": "[parameters('regCompPolParCmmcL3VmAdminsExclude')]"
},
"regCompPolParHitrustHipaaApplicationName": {
"value": "[parameters('regCompPolParHitrustHipaaApplicationName')]"
},
"regCompPolParHitrustHipaaStoragePrefix": {
"value": "[parameters('regCompPolParHitrustHipaaStoragePrefix')]"
},
"regCompPolParHitrustHipaaResGroupPrefix": {
"value": "[parameters('regCompPolParHitrustHipaaResGroupPrefix')]"
},
"regCompPolParHitrustHipaaCertificateThumb": {
"value": "[parameters('regCompPolParHitrustHipaaCertificateThumb')]"
},
"regCompPolParIrs1075Sep2016VmAdminsExclude": {
"value": "[parameters('regCompPolParIrs1075Sep2016VmAdminsExclude')]"
},
"regCompPolParIrs1075Sep2016VmAdminsInclude": {
"value": "[parameters('regCompPolParIrs1075Sep2016VmAdminsInclude')]"
},
"regCompPolParNZIsmRestrictedVmAdminsInclude": {
"value": "[parameters('regCompPolParNZIsmRestrictedVmAdminsInclude')]"
},
"regCompPolParNZIsmRestrictedVmAdminsExclude": {
"value": "[parameters('regCompPolParNZIsmRestrictedVmAdminsExclude')]"
},
"regCompPolParNistSp800171R2VmAdminsExclude": {
"value": "[parameters('regCompPolParNistSp800171R2VmAdminsExclude')]"
},
"regCompPolParNistSp800171R2VmAdminsInclude": {
"value": "[parameters('regCompPolParNistSp800171R2VmAdminsInclude')]"
},
"regCompPolParSoc2Type2AllowedRegistries": {
"value": "[parameters('regCompPolParSoc2Type2AllowedRegistries')]"
},
"regCompPolParSoc2Type2MaxCpuUnits": {
"value": "[parameters('regCompPolParSoc2Type2MaxCpuUnits')]"
},
"regCompPolParSoc2Type2MaxMemoryBytes": {
"value": "[parameters('regCompPolParSoc2Type2MaxMemoryBytes')]"
}
}
}
},
{
// Assigning Azure Monitor Resource Diagnostics policy to intermediate root management group if condition is true
"condition": "[and(or(not(empty(parameters('singlePlatformSubscriptionId'))), not(empty(parameters('managementSubscriptionId')))), equals(parameters('enableLogAnalytics'), 'Yes'))]",
Expand Down Expand Up @@ -2025,7 +2294,7 @@
}
}
}
},
},
{
// Assigning Audit resource location matches resource group location policy to intermediate root management group
"condition": "[or(not(empty(parameters('managementSubscriptionId'))), not(empty(parameters('singlePlatformSubscriptionId'))))]",
Expand All @@ -2049,7 +2318,7 @@
}
}
}
},
},
{
// Assigning Azure Security Center configuration policy initiative to intermediate root management group if condition is true
"condition": "[and(or(not(empty(parameters('managementSubscriptionId'))), not(empty(parameters('singlePlatformSubscriptionId')))), equals(parameters('enableAsc'), 'Yes'), equals(environment().resourceManager, 'https://management.azure.com/'))]",
Expand Down
Loading
Loading