Azure / Enterprise-Scale

The Azure Landing Zones (Enterprise-Scale) architecture provides prescriptive guidance coupled with Azure best practices, and it follows design principles across the critical design areas for organizations to define their Azure architecture
https://aka.ms/alz
MIT License
1.72k stars 972 forks source link

Standardize Policy Naming Convention in Enterprise-Scale #545

Closed uday31in closed 1 year ago

uday31in commented 3 years ago

Describe the solution you'd like

As a part of this issue, I would like to invite proposal for Standardising Naming convention for Policies used in Enterprise-Scale that can be enforced as a part of pull request with following design goals in mind:

  1. Allow iterative development of artefacts independently in respective repos https://github.com/Azure/Enterprise-Scale and https://github.com/Azure/terraform-azurerm-caf-enterprise-scale

  2. Ensure consistency and minimise breaking changes in Terraform module for ES in https://github.com/Azure/terraform-azurerm-caf-enterprise-scale

Proposal for Naming Convention

Append-AppService-HttpsOnly
Append-AppService-LatestTLS
Append-Redis-DisableNonSslPort
Append-Redis-SslEnforcement
Deny-AA-Child-Resources
Deny-ApplicationGateway-Without-WAF
Deny-AppService-ApiApp-Http
Deny-AppService-FunctionApp-Http
Deny-AppService-WebApp-Http
Deny-MySql-Http
Deny-PostgreSql-Http
Deny-Private-DNS-Zones
Deny-PublicEndpoint-AKS
Deny-PublicEndpoint-CosmosDB
Deny-PublicEndpoint-KeyVault
Deny-PublicEndpoint-MariaDB
Deny-PublicEndpoint-MySQL
Deny-PublicEndpoint-PostgreSql
Deny-PublicEndpoint-Sql
Deny-PublicEndpoint-Storage
Deny-PublicIP
Deny-RDP-From-Internet
Deny-Redis-Http
Deny-Sql-MinTLS
Deny-SqlMI-MinTLS
Deny-Storage-MinTLS
Deny-Subnet-Without-NSG
Deny-Subnet-Without-UDR
Deny-VNet-Peer-Cross-Sub
Deny-VNet-Peering
Deploy-ASC-Defender-ACR
Deploy-ASC-Defender-AKS
Deploy-ASC-Defender-AKV
Deploy-ASC-Defender-AppService
Deploy-ASC-Defender-ARM
Deploy-ASC-Defender-DNS
Deploy-ASC-Defender-SA
Deploy-ASC-Defender-Sql
Deploy-ASC-Defender-SqlVM
Deploy-ASC-Defender-VM
Deploy-ASC-SecurityContacts
Deploy-Budget
Deploy-DDoSProtection
Deploy-Default-UDR
Deploy-Diagnostics-AA
Deploy-Diagnostics-ACI
Deploy-Diagnostics-ACR
Deploy-Diagnostics-ActivityLog
Deploy-Diagnostics-AKS
Deploy-Diagnostics-AnalysisService
Deploy-Diagnostics-ApiForFHIR
Deploy-Diagnostics-APIMgmt
Deploy-Diagnostics-ApplicationGateway
Deploy-Diagnostics-Batch
Deploy-Diagnostics-CDNEndpoints
Deploy-Diagnostics-CognitiveServices
Deploy-Diagnostics-CosmosDB
Deploy-Diagnostics-Databricks
Deploy-Diagnostics-DataExplorerCluster
Deploy-Diagnostics-DataFactory
Deploy-Diagnostics-DataLakeStore
Deploy-Diagnostics-DLAnalytics
Deploy-Diagnostics-EventGridSub
Deploy-Diagnostics-EventGridSystemTopic
Deploy-Diagnostics-EventGridTopic
Deploy-Diagnostics-EventHub
Deploy-Diagnostics-ExpressRoute
Deploy-Diagnostics-Firewall
Deploy-Diagnostics-FrontDoor
Deploy-Diagnostics-Function
Deploy-Diagnostics-HDInsight
Deploy-Diagnostics-IotHub
Deploy-Diagnostics-KeyVault
Deploy-Diagnostics-LoadBalancer
Deploy-Diagnostics-LogicAppsISE
Deploy-Diagnostics-LogicAppsWF
Deploy-Diagnostics-MariaDB
Deploy-Diagnostics-MediaService
Deploy-Diagnostics-MLWorkspace
Deploy-Diagnostics-MySQL
Deploy-Diagnostics-NIC
Deploy-Diagnostics-NSG
Deploy-Diagnostics-PostgreSql
Deploy-Diagnostics-PowerBIEmbedded
Deploy-Diagnostics-RecoveryVault
Deploy-Diagnostics-RedisCache
Deploy-Diagnostics-Relay
Deploy-Diagnostics-SearchServices
Deploy-Diagnostics-ServiceBus
Deploy-Diagnostics-SignalR
Deploy-Diagnostics-SqlDBs
Deploy-Diagnostics-SqlElasticPools
Deploy-Diagnostics-SqlMI
Deploy-Diagnostics-StreamAnalytics
Deploy-Diagnostics-TimeSeriesInsights
Deploy-Diagnostics-TrafficManager
Deploy-Diagnostics-VirtualNetwork
Deploy-Diagnostics-VM
Deploy-Diagnostics-VMSS
Deploy-Diagnostics-VNetGW
Deploy-Diagnostics-WebServerFarm
Deploy-Diagnostics-Website
Deploy-Diagnostics-WVDAppGroup
Deploy-Diagnostics-WVDHostPools
Deploy-Diagnostics-WVDWorkspace
Deploy-DNSZoneGroup-For-Blob-PrivateEndpoint
Deploy-DNSZoneGroup-For-File-PrivateEndpoint
Deploy-DNSZoneGroup-For-KeyVault-PrivateEndpoint
Deploy-DNSZoneGroup-For-Queue-PrivateEndpoint
Deploy-DNSZoneGroup-For-Sql-PrivateEndpoint
Deploy-DNSZoneGroup-For-Table-PrivateEndpoint
Deploy-FirewallPolicy
Deploy-Hub
Deploy-Log-Analytics
Deploy-Log-Analytics-Config
Deploy-MySql-SslEnforcement
Deploy-NSG-FlowLogs
Deploy-NSG-FlowLogs-To-Log-Analytics
Deploy-PostgreSQL-SslEnforcement
Deploy-Sql-Audit-Settings
Deploy-Sql-MinTLS
Deploy-Sql-SecurityAlertPolicies
Deploy-Sql-Tde
Deploy-Sql-VulnerabilityAssessments
Deploy-SqlMI-MinTLS
Deploy-Storage-SslEnforcement
Deploy-VHub
Deploy-VNet
Deploy-VNet-HubSpoke
Deploy-VWan
Deploy-Windows-DomainJoin

Implementation options:

  1. GitHub Action

Pros:

  1. Run TerraForm plan as a part of build validation

Pros:

krowlandson commented 3 years ago

Looks good to me. Main observation (and this is a slight extension to the original conversation around consistency) is that it's difficult to differentiate between networking policies and whether they are intended to be for "hub & spoke", "Virtual WAN", or "generic". If we can address this as part of this issue, that would be a definite bonus!

uday31in commented 3 years ago

@krowlandson Does the notation of "Deny" vs "Deploy" help?

Deploy-VHub Deploy-VNet Deploy-VNet-HubSpoke Deploy-VWan

FallenHoot commented 3 years ago

@uday31in Should we have this all lowercase? Like it is in the CAF Resource-Naming best practice?

vnet-shared-eastus2-001
vnet-prod-westus-001
vnet-client-eastus2-001

https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming

jtracey93 commented 2 years ago

Trigger ADO Sync 1

jtracey93 commented 2 years ago

Trigger ADO Sync 2

jtracey93 commented 1 year ago

Closing as standardised in contribution guide: https://aka.ms/alz/contribute