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

adding ARM modules #613

Merged
merged 42 commits into from
Jul 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
3ac5288
adding modules
krnese Jun 9, 2021
d19695e
defined contract
krnese Jun 11, 2021
a7b2e4b
update #3
krnese Jun 16, 2021
3a499b9
Merge branch 'main' of https://github.com/Azure/Enterprise-scale into…
krnese Jun 17, 2021
3aef708
added enforcementMode param
krnese Jun 17, 2021
871f336
adding param
krnese Jun 17, 2021
7ac8883
UX and contract changes
krnese Jun 17, 2021
9be15c3
conditional firewall for hub vs vwan
krnese Jun 18, 2021
beea150
support for single vs N platform subs
krnese Jun 21, 2021
8d3cbdc
Merge branch 'main' of https://github.com/Azure/Enterprise-scale into…
krnese Jun 21, 2021
f501c3e
updated UX for single vs dedicated platform subscriptions
krnese Jun 21, 2021
f10511d
updating built-in policy
krnese Jun 23, 2021
388fd57
correcting parameter
krnese Jun 23, 2021
d111829
navigating policies for identity
krnese Jun 23, 2021
2a77f81
Merge branch 'main' of https://github.com/Azure/Enterprise-scale into…
krnese Jun 24, 2021
be402f9
adding vwan and nva for networking
krnese Jun 24, 2021
3245165
removing peering
krnese Jun 24, 2021
291ada4
adding scaleUnit for vpnGateway and ER for vwan
krnese Jun 24, 2021
25b89e4
fixing parameter
krnese Jun 24, 2021
241fc1b
adding disclaimer for sub selection
krnese Jun 28, 2021
46fc0a0
adding private dns zones and moving to built-in policies
krnese Jul 5, 2021
96d9792
Merge branch 'main' of https://github.com/Azure/Enterprise-scale into…
krnese Jul 6, 2021
f4b6dfb
adding policySet for DINE Private DNS Zones
krnese Jul 6, 2021
7a2579b
Added policyset for public paas
daltondhcp Jul 6, 2021
dae280d
removed custom references
daltondhcp Jul 6, 2021
e1175af
Update Deny-PublicEndpointsPolicySetDefinition.json
daltondhcp Jul 6, 2021
03c0506
policy updates
krnese Jul 6, 2021
2f2154e
Merge branch 'arm-modules' of https://github.com/krnese/Enterprise-Sc…
krnese Jul 6, 2021
c204bd9
adding policies and UX enhancements
krnese Jul 7, 2021
3aa964b
removing option for private dns zones when vwan is selected
krnese Jul 8, 2021
4901bb8
adding UX for vnet peering of dedicated ID sub
krnese Jul 8, 2021
ad97f78
adding peering for identity sub
krnese Jul 9, 2021
8d82a55
adding vnet peering for corp lz
krnese Jul 9, 2021
b44bc8c
corp lz move and peering
krnese Jul 9, 2021
ddf974a
sequencing corp lz move vs peering
krnese Jul 9, 2021
b846329
updated description and displayName
krnese Jul 12, 2021
db4dee3
updating rg location for nw
krnese Jul 13, 2021
2c24791
adding condition for AzFw as DNS proxy vs not
krnese Jul 13, 2021
84f7277
adding peering support for identity to vwan hub
krnese Jul 13, 2021
c7ebaf4
Merge branch 'main' into arm-modules
krnese Jul 13, 2021
c7b0a22
updating displayName
krnese Jul 13, 2021
ad0aeb0
Merge branch 'arm-modules' of https://github.com/krnese/Enterprise-Sc…
krnese Jul 13, 2021
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
2,271 changes: 2,271 additions & 0 deletions eslzArm/eslz-portal.json

Large diffs are not rendered by default.

3,404 changes: 3,404 additions & 0 deletions eslzArm/eslzArm.json

Large diffs are not rendered by default.

163 changes: 163 additions & 0 deletions eslzArm/managementGroupTemplates/mgmtGroupStructure/mgmtGroups.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"topLevelManagementGroupPrefix": {
"type": "string",
"metadata": {
"description": "Provide prefix for the management group structure."
}
},
"platformMgs": {
"type": "array",
"defaultValue": [
"management",
"connectivity",
"identity"
],
"metadata": {
"description": "Management groups for platform specific purposes, such as management, networking, identity etc."
}
},
"landingZoneMgs": {
"type": "array",
"defaultValue": [
"online",
"corp"
],
"metadata": {
"description": "These are the landing zone management groups."
}
}
},
"variables": {
"enterpriseScaleManagementGroups": {
"platform": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'platform')]",
"landingZone": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'landingzones')]",
"decommissioned": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'decommissioned')]",
"sandboxes": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'sandboxes')]"
}
},
"resources": [
{
// Create top level management group under tenant root
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[parameters('topLevelManagementGroupPrefix')]",
"properties": {}
},
{
// Create management group for platform management groups
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').platform]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').platform]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for landing zones
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').landingZone]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').landingZone]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for sandbox subscriptions
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').sandboxes]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').sandboxes]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for decommissioned subscriptions
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').decommissioned]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').decommissioned]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create child management groups for platform resources
"condition": "[not(empty(parameters('platformMgs')))]",
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('platformMgs')[copyIndex()])]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups', variables('enterpriseScaleManagementGroups').platform)]"
],
"copy": {
"name": "platformMgCopy",
"count": "[length(parameters('platformMgs'))]"
},
"properties": {
"displayName": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('platformMgs')[copyIndex()])]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').platform)]"
}
}
}
},
{
// Create child management groups for landing zones
"condition": "[not(empty(parameters('landingZoneMgs')))]",
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
],
"copy": {
"name": "lzMgCopy",
"count": "[length(parameters('landingZoneMgs'))]"
},
"properties": {
"displayName": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
}
}
}
}
],
"outputs": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"topLevelManagementGroupPrefix": {
"type": "string",
"metadata": {
"description": "Provide prefix for the management group structure."
}
},
"landingZoneMgs": {
"type": "array",
"defaultValue": [
"online",
"corp"
],
"metadata": {
"description": "These are the landing zone management groups."
}
}
},
"variables": {
"enterpriseScaleManagementGroups": {
"platform": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'platform')]",
"landingZone": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'landingzones')]",
"decommissioned": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'decommissioned')]",
"sandboxes": "[concat(parameters('topLevelManagementGroupPrefix'), '-', 'sandboxes')]"
}
},
"resources": [
{
// Create top level management group under tenant root
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[parameters('topLevelManagementGroupPrefix')]",
"properties": {}
},
{
// Create management group for platform management groups
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').platform]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').platform]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for landing zones
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').landingZone]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').landingZone]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for sandbox subscriptions
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').sandboxes]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').sandboxes]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create management group for decommissioned subscriptions
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[variables('enterpriseScaleManagementGroups').decommissioned]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
],
"properties": {
"displayName": "[variables('enterpriseScaleManagementGroups').decommissioned]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', parameters('topLevelManagementGroupPrefix'))]"
}
}
}
},
{
// Create child management groups for landing zones
"condition": "[not(empty(parameters('landingZoneMgs')))]",
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2020-05-01",
"name": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
"dependsOn": [
"[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
],
"copy": {
"name": "lzMgCopy",
"count": "[length(parameters('landingZoneMgs'))]"
},
"properties": {
"displayName": "[concat(parameters('topLevelManagementGroupPrefix'), '-', parameters('landingZoneMgs')[copyIndex()])]",
"details": {
"parent": {
"id": "[tenantResourceId('Microsoft.Management/managementGroups/', variables('enterpriseScaleManagementGroups').landingZone)]"
}
}
}
}
],
"outputs": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"enforcementMode": {
"type": "string",
"allowedValues": [
"Default",
"DoNotEnforce"
],
"defaultValue": "Default"
}
},
"variables": {
"policyDefinitions": {
"denyAksNoPrivEsc": "/providers/Microsoft.Authorization/policyDefinitions/1c6e92c9-99f0-4e55-9cf2-0c234dc48f99"
},
"policyAssignmentNames": {
"denyAksNoPrivEsc": "Deny-Priv-Esc-AKS",
"description": "Do not allow containers to run with privilege escalation to root in a Kubernetes cluster. This recommendation is part of CIS 5.2.5 which is intended to improve the security of your Kubernetes environments. This policy is generally available for Kubernetes Service (AKS), and preview for AKS Engine and Azure Arc enabled Kubernetes. For more information, see https://aka.ms/kubepolicydoc.",
"displayName": "Kubernetes clusters should not allow container privilege escalation"
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2019-09-01",
"name": "[variables('policyAssignmentNames').denyAksNoPrivEsc]",
"properties": {
"description": "[variables('policyAssignmentNames').description]",
"displayName": "[variables('policyAssignmentNames').displayName]",
"policyDefinitionId": "[variables('policyDefinitions').denyAksNoPrivEsc]",
"enforcementMode": "[parameters('enforcementMode')]",
"parameters": {
"effect": {
"value": "deny"
}
}
}
}
],
"outputs": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"enforcementMode": {
"type": "string",
"allowedValues": [
"Default",
"DoNotEnforce"
],
"defaultValue": "Default"
}
},
"variables": {
"policyDefinitions": {
"denyAksPriv": "/providers/Microsoft.Authorization/policyDefinitions/95edb821-ddaf-4404-9732-666045e056b4"
},
"policyAssignmentNames": {
"denyAksPriv": "Deny-Privileged-AKS",
"description": "Do not allow privileged containers creation in a Kubernetes cluster. This recommendation is part of CIS 5.2.1 which is intended to improve the security of your Kubernetes environments. This policy is generally available for Kubernetes Service (AKS), and preview for AKS Engine and Azure Arc enabled Kubernetes. For more information, see https://aka.ms/kubepolicydoc.",
"displayName": "Kubernetes cluster should not allow privileged containers"
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2019-09-01",
"name": "[variables('policyAssignmentNames').denyAksPriv]",
"properties": {
"description": "[variables('policyAssignmentNames').description]",
"displayName": "[variables('policyAssignmentNames').displayName]",
"policyDefinitionId": "[variables('policyDefinitions').denyAksPriv]",
"enforcementMode": "[parameters('enforcementMode')]",
"parameters": {
"effect": {
"value": "deny"
}
}
}
}
],
"outputs": {}
}
Loading