Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
fc666d1
feat(connectivity): Add option to set allow_non_virtual_wan_traffic i…
Slapper Apr 5, 2024
1ac8cb8
updates to resolve issue #794 (#919)
ATuckwell Apr 11, 2024
9bad16c
docs: update docs for threat_intelligence_allowlist (#928)
jaredfholgate Apr 17, 2024
884b0c7
Update wiki-sync.yml
jaredfholgate Apr 17, 2024
1a4fd0c
chore(deps): bump github/super-linter from 5 to 6 (#931)
dependabot[bot] Apr 30, 2024
8fbb43c
add link to Upgrade guide from v4.2.0 to v5.0.0 (#934)
T0biii May 9, 2024
f7e8114
Added hub_routing_preference to connectivity advanced configuration (…
May 10, 2024
d678f4c
Policy sync updates (#959)
jaredfholgate Jun 4, 2024
32cb5b5
Update Library Templates (automated) (#966)
cae-pr-creator[bot] Jun 4, 2024
ad133d4
Add remote branch option (#970)
jaredfholgate Jun 5, 2024
3d21cd3
Update Library Templates (automated) (#973)
cae-pr-creator[bot] Jun 5, 2024
568de05
Update Library Templates (automated) (#976)
cae-pr-creator[bot] Jun 6, 2024
9a985bb
Remove redundant assignment file (#977)
jaredfholgate Jun 6, 2024
36df277
updating threat intelligence allowlist dynamic block (#953)
Daan222 Jun 6, 2024
0783a8a
chore(deps): bump azure/powershell from 1 to 2 (#917)
dependabot[bot] Jun 6, 2024
b069eb1
Add OpenSFF Scorecard (#987)
jaredfholgate Jun 11, 2024
acd9291
chore(deps): bump github/codeql-action from 3.24.9 to 3.25.8 (#990)
dependabot[bot] Jun 11, 2024
35447cd
chore(deps): bump github.com/hashicorp/go-getter from 1.7.3 to 1.7.4 …
dependabot[bot] Jun 11, 2024
4d983f7
feat!: ama (#968)
matt-FFFFFF Jun 17, 2024
4b8219b
Fix example uami issue (#1000)
jaredfholgate Jun 17, 2024
73206bb
Update Library Templates (automated) (#1001)
cae-pr-creator[bot] Jun 18, 2024
9d6f72b
docs: additional v6 upgrade detail (#1002)
matt-FFFFFF Jun 18, 2024
7356e5c
Update Library Templates (automated) (#1006)
cae-pr-creator[bot] Jun 20, 2024
35927bb
docs: update docs with FAQ on roadmap and banner for upcoming breakin…
matt-FFFFFF Jun 25, 2024
508a9ab
naming fixed in module
dverma-cd Jun 28, 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
8 changes: 4 additions & 4 deletions .github/linters/.tflint.hcl
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
config {
module = true
plugin_dir = "/root/.tflint.d/plugins"
call_module_type = "all"
}

# The following plugin adds rules specific to the azurerm provider
plugin "azurerm" {
enabled = true
enabled = true
version = "0.26.0"
source = "github.com/terraform-linters/tflint-ruleset-azurerm"
}

# The following section determines which rules which will be enabled
Expand Down
172 changes: 157 additions & 15 deletions .github/scripts/Invoke-LibraryUpdatePolicyAssignmentArchetypes.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ param (
[Parameter()][String]$TargetPath = "$PWD/terraform-azurerm-caf-enterprise-scale",
[Parameter()][String]$SourcePath = "$PWD/enterprise-scale",
[Parameter()][String]$LineEnding = "unix",
[Parameter()][String]$ParserToolUrl = "https://github.com/jaredfholgate/template-parser/releases/download/0.1.18"
[Parameter()][String]$ParserToolUrl = "https://github.com/Azure/arm-template-parser/releases/download/0.2.2"
)

$ErrorActionPreference = "Stop"
Expand Down Expand Up @@ -88,32 +88,174 @@ $managementGroupMapping = @{
"platform" = "platform"
}

$finalPolicyAssignments = New-Object 'System.Collections.Generic.Dictionary[string,System.Collections.Generic.List[string]]'
$logAnalyticsWorkspaceIdPlaceholder = "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/`${root_scope_id}-mgmt/providers/Microsoft.OperationalInsights/workspaces/`${root_scope_id}-la"

$policyAssignmentSourcePath = "$SourcePath/eslzArm/managementGroupTemplates/policyAssignments"
$parameters = @{
default = @{
nonComplianceMessagePlaceholder = "{donotchange}"
logAnalyticsWorkspaceName = "`${root_scope_id}-la"
automationAccountName = "`${root_scope_id}-automation"
workspaceRegion = "`${default_location}"
automationRegion = "`${default_location}"
retentionInDays = "30"
rgName = "`${root_scope_id}-mgmt"
logAnalyticsResourceId = "$logAnalyticsWorkspaceIdPlaceholder"
topLevelManagementGroupPrefix = "`${temp}"
dnsZoneResourceGroupId = "`${private_dns_zone_prefix}"
ddosPlanResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/`${root_scope_id}-mgmt/providers/Microsoft.Network/ddosProtectionPlans/`${root_scope_id}-ddos"
emailContactAsc = "security_contact@replace_me"
location = "uksouth"
listOfResourceTypesDisallowedForDeletion = "[[[Array]]]"
userWorkspaceResourceId = "$logAnalyticsWorkspaceIdPlaceholder"
userAssignedIdentityResourceId = "`${user_assigned_managed_identity_resource_id}"
dcrResourceId = "`${azure_monitor_data_collection_rule_resource_id}"
dataCollectionRuleResourceId = "`${azure_monitor_data_collection_rule_resource_id}"
}
overrides = @{
sql_data_collection_rule_overrides = @{
policy_assignments = @(
"DINE-MDFCDefenderSQLAMAPolicyAssignment.json"
)
parameters = @{
dcrResourceId = "`${azure_monitor_data_collection_rule_sql_resource_id}"
dataCollectionRuleResourceId = "`${azure_monitor_data_collection_rule_sql_resource_id}"
}
}
vm_insights_data_collection_rule_overrides = @{
policy_assignments = @(
"DINE-VMHybridMonitoringPolicyAssignment.json",
"DINE-VMMonitoringPolicyAssignment.json",
"DINE-VMSSMonitoringPolicyAssignment.json"
)
parameters = @{
dcrResourceId = "`${azure_monitor_data_collection_rule_vm_insights_resource_id}"
dataCollectionRuleResourceId = "`${azure_monitor_data_collection_rule_vm_insights_resource_id}"
}
}
change_tracking_data_collection_rule_overrides = @{
policy_assignments = @(
"DINE-ChangeTrackingVMArcPolicyAssignment.json",
"DINE-ChangeTrackingVMPolicyAssignment.json",
"DINE-ChangeTrackingVMSSPolicyAssignment.json"
)
parameters = @{
dcrResourceId = "`${azure_monitor_data_collection_rule_change_tracking_resource_id}"
dataCollectionRuleResourceId = "`${azure_monitor_data_collection_rule_change_tracking_resource_id}"
}
}
}
}

$finalPolicyAssignments = New-Object 'System.Collections.Generic.Dictionary[string,System.Collections.Generic.List[string]]'

$policyAssignmentSourcePath = "$SourcePath/eslzArm/managementGroupTemplates/policyAssignments"
$policyAssignmentTargetPath = "$TargetPath/modules/archetypes/lib/policy_assignments"

foreach($managementGroup in $policyAssignments.Keys)
{
$managementGroupNameFinal = $managementGroupMapping[$managementGroup.Replace("defaults-", "")]
Write-Output "`nProcessing Archetype Policy Assignments for Management Group: $managementGroupNameFinal"

foreach($policyAssignmentFile in $policyAssignments[$managementGroup])
{
$parsedAssignment = & $parser "-s $policyAssignmentSourcePath/$policyAssignmentFile" | Out-String | ConvertFrom-Json
$policyAssignmentName = $parsedAssignment.name

$managementGroupNameFinal = $managementGroupMapping[$managementGroup.Replace("defaults-", "")]
Write-Output "`nProcessing Archetype Policy Assignment: $managementGroupNameFinal - $policyAssignmentFile"

Write-Information "Got final data for $managementGroupNameFinal and $policyAssignmentName" -InformationAction Continue

if(!($finalPolicyAssignments.ContainsKey($managementGroupNameFinal)))
$defaultParameters = $parameters.default
foreach($overrideKey in $parameters.overrides.Keys)
{
$values = New-Object 'System.Collections.Generic.List[string]'
$values.Add($policyAssignmentName)
$finalPolicyAssignments.Add($managementGroupNameFinal, $values)
if($policyAssignmentFile -in $parameters.overrides[$overrideKey].policy_assignments)
{
foreach($parameter in $parameters.overrides[$overrideKey].parameters.Keys)
{
$defaultParameters.$parameter = $parameters.overrides[$overrideKey].parameters.$parameter
}
}
}
else

$defaultParameterFormatted = $defaultParameters.GetEnumerator().ForEach({ "-p $($_.Name)=$($_.Value)" })

$parsedAssignmentArray = & $parser "-s $policyAssignmentSourcePath/$policyAssignmentFile" $defaultParameterFormatted "-a" | Out-String | ConvertFrom-Json

foreach($parsedAssignment in $parsedAssignmentArray)
{
$finalPolicyAssignments[$managementGroupNameFinal].Add($policyAssignmentName)
if($parsedAssignment.type -ne "Microsoft.Authorization/policyAssignments")
{
continue
}

$policyAssignmentName = $parsedAssignment.name

Write-Output "Parsed Assignment Name: $($parsedAssignment.name)"

if(!(Get-Member -InputObject $parsedAssignment.properties -Name "scope" -MemberType Properties))
{
$parsedAssignment.properties | Add-Member -MemberType NoteProperty -Name "scope" -Value "`${current_scope_resource_id}"
}

if(!(Get-Member -InputObject $parsedAssignment.properties -Name "notScopes" -MemberType Properties))
{
$parsedAssignment.properties | Add-Member -MemberType NoteProperty -Name "notScopes" -Value @()
}

if(!(Get-Member -InputObject $parsedAssignment.properties -Name "parameters" -MemberType Properties))
{
$parsedAssignment.properties | Add-Member -MemberType NoteProperty -Name "parameters" -Value @{}
}

if(!(Get-Member -InputObject $parsedAssignment -Name "location" -MemberType Properties))
{
$parsedAssignment | Add-Member -MemberType NoteProperty -Name "location" -Value "`${default_location}"
}

if(!(Get-Member -InputObject $parsedAssignment -Name "identity" -MemberType Properties))
{
$parsedAssignment | Add-Member -MemberType NoteProperty -Name "identity" -Value @{ type = "None" }
}

if($parsedAssignment.properties.policyDefinitionId.StartsWith("/providers/Microsoft.Management/managementGroups/`${temp}"))
{
$parsedAssignment.properties.policyDefinitionId = $parsedAssignment.properties.policyDefinitionId.Replace("/providers/Microsoft.Management/managementGroups/`${temp}", "`${root_scope_resource_id}")
}

foreach($property in Get-Member -InputObject $parsedAssignment.properties.parameters -MemberType NoteProperty)
{
$propertyName = $property.Name
Write-Verbose "Checking Parameter: $propertyName"
if($parsedAssignment.properties.parameters.($propertyName).value.GetType() -ne [System.String])
{
Write-Verbose "Skipping non-string parameter: $propertyName"
continue
}

if($parsedAssignment.properties.parameters.($propertyName).value.StartsWith("`${private_dns_zone_prefix}/providers/Microsoft.Network/privateDnsZones/"))
{
$parsedAssignment.properties.parameters.($propertyName).value = $parsedAssignment.properties.parameters.($propertyName).value.Replace("`${private_dns_zone_prefix}/providers/Microsoft.Network/privateDnsZones/", "`${private_dns_zone_prefix}")
$parsedAssignment.properties.parameters.($propertyName).value = $parsedAssignment.properties.parameters.($propertyName).value.Replace("privatelink.uks.backup.windowsazure.com", "privatelink.`${connectivity_location_short}.backup.windowsazure.com")
}
if($parsedAssignment.properties.parameters.($propertyName).value.StartsWith("`${temp}"))
{
$parsedAssignment.properties.parameters.($propertyName).value = $parsedAssignment.properties.parameters.($propertyName).value.Replace("`${temp}", "`${root_scope_id}")
}
}

$targetPolicyAssignmentFileName = "policy_assignment_es_$($policyAssignmentName.ToLower() -replace "-", "_").tmpl.json"

Write-Information "Writing $targetPolicyAssignmentFileName" -InformationAction Continue
$json = $parsedAssignment | ConvertTo-Json -Depth 10
$json | Edit-LineEndings -LineEnding $LineEnding | Out-File -FilePath "$policyAssignmentTargetPath/$targetPolicyAssignmentFileName" -Force

Write-Verbose "Got final data for $managementGroupNameFinal and $policyAssignmentName"

if(!($finalPolicyAssignments.ContainsKey($managementGroupNameFinal)))
{
$values = New-Object 'System.Collections.Generic.List[string]'
$values.Add($policyAssignmentName)
$finalPolicyAssignments.Add($managementGroupNameFinal, $values)
}
else
{
$finalPolicyAssignments[$managementGroupNameFinal].Add($policyAssignmentName)
}
}
}
}
Expand Down
168 changes: 0 additions & 168 deletions .github/scripts/Invoke-LibraryUpdatePolicyAssignments.ps1

This file was deleted.

Loading