Recommendations

Recommendations

Azure Quick Review checks the following recommendations for Azure resources. The recommendations are categorized based on their impact and category:

#CategoryImpactRecommendationMore Info
1Monitoring and AlertingLowAzure Databricks should have diagnostic settings enabledLearn
2High AvailabilityHighAzure Databricks should have a SLALearn
3SecurityHighAzure Databricks should have private endpoints enabledLearn
4High AvailabilityHighAzure Databricks SKULearn
5GovernanceLowAzure Databricks Name should comply with naming conventionsLearn
6SecurityMediumAzure Databricks should have the Public IP disabledLearn
7Monitoring and AlertingLowAzure Data Factory should have diagnostic settings enabledLearn
8SecurityHighAzure Data Factory should have private endpoints enabledLearn
9High AvailabilityHighAzure Data Factory SLALearn
10GovernanceLowAzure Data Factory Name should comply with naming conventionsLearn
11GovernanceLowAzure Data Factory should have tagsLearn
12Monitoring and AlertingLowAzure FrontDoor should have diagnostic settings enabledLearn
13High AvailabilityHighAzure FrontDoor SLALearn
14High AvailabilityHighAzure FrontDoor SKULearn
15GovernanceLowAzure FrontDoor Name should comply with naming conventionsLearn
16GovernanceLowAzure FrontDoor should have tagsLearn
17Monitoring and AlertingLowAzure Firewall should have diagnostic settings enabledLearn
18High AvailabilityHighAzure Firewall should have availability zones enabledLearn
19High AvailabilityHighAzure Firewall SLALearn
20High AvailabilityHighAzure Firewall SKULearn
21GovernanceLowAzure Firewall Name should comply with naming conventionsLearn
22GovernanceLowAzure Firewall should have tagsLearn
23ScalabilityHighApplication Gateway: Ensure autoscaling is used with a minimum of 2 instancesLearn
24SecurityHighApplication Gateway: Secure all incoming connections with SSLLearn
25SecurityHighApplication Gateway: Enable WAF policiesLearn
26High AvailabilityHighApplication Gateway: Use Application GW V2 instead of V1Learn
27Monitoring and AlertingLowApplication Gateway: Monitor and Log the configurations and trafficLearn
28High AvailabilityMediumApplication Gateway should have availability zones enabledLearn
29High AvailabilityMediumApplication Gateway: Plan for backend maintenance by using connection drainingLearn
30High AvailabilityHighApplication Gateway SLALearn
31High AvailabilityHighApplication Gateway SKULearn
32GovernanceLowApplication Gateway Name should comply with naming conventionsLearn
33GovernanceLowApplication Gateway should have tagsLearn
34Monitoring and AlertingLowAKS Cluster should have diagnostic settings enabledLearn
35High AvailabilityHighAKS Cluster should have availability zones enabledLearn
36High AvailabilityHighAKS Cluster should have an SLALearn
37SecurityHighAKS Cluster should be privateLearn
38High AvailabilityHighAKS Production Cluster should use Standard SKULearn
39GovernanceLowAKS Name should comply with naming conventionsLearn
40SecurityMediumAKS should integrate authentication with AAD (Managed)Learn
41SecurityMediumAKS should be RBAC enabled.Learn
42SecurityMediumAKS should have local accounts disabledLearn
43SecurityMediumAKS should have httpApplicationRouting disabledLearn
44Monitoring and AlertingHighAKS should have Container Insights enabledLearn
45SecurityHighAKS should have outbound type set to user defined routingLearn
46ScalabilityMediumAKS should avoid using kubenet network pluginLearn
47ScalabilityMediumAKS should have autoscaler enabledLearn
48GovernanceLowAKS should have tagsLearn
49ScalabilityLowAKS Node Pools should have MaxSurge setLearn
50GovernanceLowAzure Managed Grafana name should comply with naming conventionsLearn
51High AvailabilityHighAzure Managed Grafana SLALearn
52GovernanceLowAzure Managed Grafana should have tagsLearn
53SecurityHighAzure Managed Grafana should disable public network accessLearn
54High AvailabilityHighAzure Managed Grafana should have availability zones enabledLearn
55Monitoring and AlertingLowAPIM should have diagnostic settings enabledLearn
56High AvailabilityHighAPIM should have availability zones enabledLearn
57High AvailabilityHighAPIM should have a SLALearn
58SecurityHighAPIM should have private endpoints enabledLearn
59High AvailabilityHighAzure APIM SKULearn
60GovernanceLowAPIM should comply with naming conventionsLearn
61GovernanceLowAPIM should have tagsLearn
62SecurityMediumAPIM should use Managed IdentitiesLearn
63SecurityHighAPIM should only accept a minimum of TLS 1.2Learn
64SecurityHighAPIM should should not accept weak or deprecated ciphers.Learn
65SecurityHighAPIM: Renew expiring certificatesLearn
66High AvailabilityHighAPIM: Migrate instance hosted on the stv1 platform to stv2Learn
67Monitoring and AlertingLowAppConfiguration should have diagnostic settings enabledLearn
68High AvailabilityHighAppConfiguration should have a SLALearn
69SecurityHighAppConfiguration should have private endpoints enabledLearn
70High AvailabilityHighAppConfiguration SKULearn
71GovernanceLowAppConfiguration Name should comply with naming conventionsLearn
72GovernanceLowAppConfiguration should have tagsLearn
73SecurityMediumAppConfiguration should have local authentication disabledLearn
74Disaster RecoveryMediumAppConfiguration should have purge protection enabledLearn
75High AvailabilityHighAzure Application Insights SLALearn
76GovernanceLowAzure Application Insights Name should comply with naming conventionsLearn
77GovernanceLowAzure Application Insights should have tagsLearn
78ScalabilityLowAzure Application Insights should store data in a Log Analytics WorkspaceLearn
79Monitoring and AlertingLowAzure Analysis Service should have diagnostic settings enabledLearn
80High AvailabilityHighAzure Analysis Service should have a SLALearn
81High AvailabilityHighAzure Analysis Service SKULearn
82GovernanceLowAzure Analysis Service Name should comply with naming conventionsLearn
83GovernanceLowAzure Analysis Service should have tagsLearn
84Monitoring and AlertingLowContainer Apps Environment should have diagnostic settings enabledLearn
85High AvailabilityHighContainer Apps Environment should have availability zones enabledLearn
86High AvailabilityHighContainer Apps Environment should have a SLALearn
87SecurityHighContainer Apps Environment should have private endpoints enabledLearn
88GovernanceLowContainer Apps Environment Name should comply with naming conventionsLearn
89GovernanceLowContainer Apps Environment should have tagsLearn
90High AvailabilityHighContainerApp should have a SLALearn
91GovernanceLowContainerApp Name should comply with naming conventionsLearn
92GovernanceLowContainerApp should have tagsLearn
93SecurityLowContainerApp should not allow insecure ingress trafficLearn
94SecurityLowContainerApp should use Managed IdentitiesLearn
95High AvailabilityLowContainerApp should use Azure Files to persist container dataLearn
96High AvailabilityLowContainerApp should avoid using session affinityLearn
97High AvailabilityHighContainerInstance should have availability zones enabledLearn
98High AvailabilityHighContainerInstance should have a SLALearn
99SecurityHighContainerInstance should use private IP addressesLearn
100High AvailabilityHighContainerInstance SKULearn
101GovernanceLowContainerInstance Name should comply with naming conventionsLearn
102GovernanceLowContainerInstance should have tagsLearn
103Monitoring and AlertingLowCognitive Service Account should have diagnostic settings enabledLearn
104High AvailabilityHighCognitive Service Account should have a SLALearn
105SecurityHighCognitive Service Account should have private endpoints enabledLearn
106High AvailabilityHighCognitive Service Account SKULearn
107GovernanceLowCognitive Service Account Name should comply with naming conventionsLearn
108GovernanceLowCognitive Service Account should have tagsLearn
109SecurityMediumCognitive Service Account should have local authentication disabledLearn
110Monitoring and AlertingLowCosmosDB should have diagnostic settings enabledLearn
111High AvailabilityHighCosmosDB should have availability zones enabledLearn
112High AvailabilityHighCosmosDB should have a SLALearn
113SecurityHighCosmosDB should have private endpoints enabledLearn
114High AvailabilityHighCosmosDB SKULearn
115GovernanceLowCosmosDB Name should comply with naming conventionsLearn
116GovernanceLowCosmosDB should have tagsLearn
117SecurityHighCosmosDB should have local authentication disabledLearn
118SecurityHighCosmosDB: disable write operations on metadata resources (databases, containers, throughput) via account keysLearn
119Monitoring and AlertingLowContainerRegistry should have diagnostic settings enabledLearn
120High AvailabilityHighContainerRegistry should have availability zones enabledLearn
121High AvailabilityHighContainerRegistry should have a SLALearn
122SecurityHighContainerRegistry should have private endpoints enabledLearn
123High AvailabilityHighContainerRegistry SKULearn
124GovernanceLowContainerRegistry Name should comply with naming conventionsLearn
125SecurityMediumContainerRegistry should have anonymous pull access disabledLearn
126SecurityMediumContainerRegistry should have the Administrator account disabledLearn
127GovernanceLowContainerRegistry should have tagsLearn
128GovernanceMediumContainerRegistry should use retention policiesLearn
129Monitoring and AlertingLowAzure Data Explorer should have diagnostic settings enabledLearn
130High AvailabilityHighAzure Data Explorer SLALearn
131High AvailabilityHighAzure Data Explorer Production Cluster should not use Dev SKULearn
132GovernanceLowAzure Data Explorer Name should comply with naming conventionsLearn
133GovernanceLowAzure Data Explorer should have tagsLearn
134SecurityHighAzure Data Explorer should use Disk EncryptionLearn
135SecurityLowAzure Data Explorer should use Managed IdentitiesLearn
136Monitoring and AlertingLowEvent Grid Domain should have diagnostic settings enabledLearn
137High AvailabilityHighEvent Grid Domain should have a SLALearn
138SecurityHighEvent Grid Domain should have private endpoints enabledLearn
139High AvailabilityHighEvent Grid Domain SKULearn
140GovernanceLowEvent Grid Domain Name should comply with naming conventionsLearn
141GovernanceLowEvent Grid Domain should have tagsLearn
142SecurityMediumEvent Grid Domain should have local authentication disabledLearn
143Monitoring and AlertingLowEvent Hub Namespace should have diagnostic settings enabledLearn
144High AvailabilityHighEvent Hub Namespace should have availability zones enabledLearn
145High AvailabilityHighEvent Hub Namespace should have a SLALearn
146SecurityHighEvent Hub Namespace should have private endpoints enabledLearn
147High AvailabilityHighEvent Hub Namespace SKULearn
148GovernanceLowEvent Hub Namespace Name should comply with naming conventionsLearn
149GovernanceLowEvent Hub should have tagsLearn
150SecurityMediumEvent Hub should have local authentication disabledLearn
151Monitoring and AlertingLowKey Vault should have diagnostic settings enabledLearn
152High AvailabilityHighKey Vault should have a SLALearn
153SecurityHighKey Vault should have private endpoints enabledLearn
154High AvailabilityHighKey Vault SKULearn
155GovernanceLowKey Vault Name should comply with naming conventionsLearn
156GovernanceLowKey Vault should have tagsLearn
157Disaster RecoveryMediumKey Vault should have soft delete enabledLearn
158Disaster RecoveryMediumKey Vault should have purge protection enabledLearn
159Monitoring and AlertingLowLoad Balancer should have diagnostic settings enabledLearn
160High AvailabilityHighLoad Balancer should have availability zones enabledLearn
161High AvailabilityHighLoad Balancer should have a SLALearn
162High AvailabilityHighLoad Balancer SKULearn
163GovernanceLowLoad Balancer Name should comply with naming conventionsLearn
164GovernanceLowLoad Balancer should have tagsLearn
165Monitoring and AlertingLowLogic App should have diagnostic settings enabledLearn
166High AvailabilityHighLogic App should have a SLALearn
167SecurityHighLogic App should limit access to Http TriggersLearn
168GovernanceLowLogic App Name should comply with naming conventionsLearn
169GovernanceLowLogic App should have tagsLearn
170Monitoring and AlertingLowMariaDB should have diagnostic settings enabledLearn
171SecurityHighMariaDB should have private endpoints enabledLearn
172GovernanceLowMariaDB server Name should comply with naming conventionsLearn
173High AvailabilityHighMariaDB server should have a SLALearn
174GovernanceLowMariaDB should have tagsLearn
175SecurityLowMariaDB should enforce TLS >= 1.2Learn
176Monitoring and AlertingLowAzure Database for MySQL - Flexible Server should have diagnostic settings enabledLearn
177High AvailabilityHighAzure Database for MySQL - Flexible Server should have availability zones enabledLearn
178High AvailabilityHighAzure Database for MySQL - Flexible Server should have a SLALearn
179SecurityHighAzure Database for MySQL - Flexible Server should have private access enabledLearn
180High AvailabilityHighAzure Database for MySQL - Flexible Server SKULearn
181GovernanceLowAzure Database for MySQL - Flexible Server Name should comply with naming conventionsLearn
182GovernanceLowAzure Database for MySQL - Flexible Server should have tagsLearn
183Monitoring and AlertingLowAzure Database for MySQL - Flexible Server should have diagnostic settings enabledLearn
184High AvailabilityHighAzure Database for MySQL - Flexible Server should have a SLALearn
185SecurityHighAzure Database for MySQL - Flexible Server should have private endpoints enabledLearn
186High AvailabilityHighAzure Database for MySQL - Flexible Server SKULearn
187GovernanceLowAzure Database for MySQL - Flexible Server Name should comply with naming conventionsLearn
188High AvailabilityHighAzure Database for MySQL - Single Server is on the retirement pathLearn
189GovernanceLowAzure Database for MySQL - Single Server should have tagsLearn
190Monitoring and AlertingLowApp Service should have diagnostic settings enabledLearn
191SecurityHighApp Service should have private endpoints enabledLearn
192GovernanceLowApp Service Name should comply with naming conventionsLearn
193SecurityHighApp Service should use HTTPS onlyLearn
194GovernanceLowApp Service should have tagsLearn
195SecurityMediumApp Service should use VNET integrationLearn
196SecurityMediumApp Service should have VNET Route all enabled for VNET integrationLearn
197SecurityHighApp Service should use TLS 1.2Learn
198SecurityHighApp Service remote debugging should be disabledLearn
199SecurityHighApp Service should not allow insecure FTPLearn
200ScalabilityHighApp Service should have Always On enabledLearn
201High AvailabilityMediumApp Service should avoid using Client AffinityLearn
202SecurityMediumApp Service should use Managed IdentitiesLearn
203Monitoring and AlertingLowPlan should have diagnostic settings enabledLearn
204High AvailabilityHighPlan should have availability zones enabledLearn
205High AvailabilityHighPlan should have a SLALearn
206High AvailabilityHighPlan SKULearn
207GovernanceLowPlan Name should comply with naming conventionsLearn
208GovernanceLowPlan should have tagsLearn
209Monitoring and AlertingLowFunction should have diagnostic settings enabledLearn
210SecurityHighFunction should have private endpoints enabledLearn
211GovernanceLowFunction Name should comply with naming conventionsLearn
212SecurityHighFunction should use HTTPS onlyLearn
213GovernanceLowFunction should have tagsLearn
214SecurityMediumFunction should use VNET integrationLearn
215SecurityMediumFunction should have VNET Route all enabled for VNET integrationLearn
216SecurityMediumFunction should use TLS 1.2Learn
217SecurityMediumFunction remote debugging should be disabledLearn
218High AvailabilityMediumFunction should avoid using Client AffinityLearn
219SecurityMediumFunction should use Managed IdentitiesLearn
220Monitoring and AlertingLowLogic App should have diagnostic settings enabledLearn
221SecurityHighLogic App should have private endpoints enabledLearn
222GovernanceLowLogic App Name should comply with naming conventionsLearn
223SecurityHighLogic App should use HTTPS onlyLearn
224GovernanceLowLogic App should have tagsLearn
225SecurityMediumLogic App should use VNET integrationLearn
226SecurityMediumLogic App should have VNET Route all enabled for VNET integrationLearn
227SecurityMediumLogic App should use TLS 1.2Learn
228SecurityMediumLogic App remote debugging should be disabledLearn
229High AvailabilityMediumLogic App should avoid using Client AffinityLearn
230SecurityMediumLogic App should use Managed IdentitiesLearn
231Monitoring and AlertingLowPostgreSQL should have diagnostic settings enabledLearn
232High AvailabilityHighPostgreSQL should have availability zones enabledLearn
233High AvailabilityHighPostgreSQL should have a SLALearn
234SecurityHighPostgreSQL should have private access enabledLearn
235High AvailabilityHighPostgreSQL SKULearn
236GovernanceLowPostgreSQL Name should comply with naming conventionsLearn
237GovernanceLowPostgreSQL should have tagsLearn
238Monitoring and AlertingLowPostgreSQL should have diagnostic settings enabledLearn
239High AvailabilityHighPostgreSQL should have a SLALearn
240SecurityHighPostgreSQL should have private endpoints enabledLearn
241High AvailabilityHighPostgreSQL SKULearn
242GovernanceLowPostgreSQL Name should comply with naming conventionsLearn
243GovernanceLowPostgreSQL should have tagsLearn
244SecurityHighPostgreSQL should enforce SSLLearn
245SecurityLowPostgreSQL should enforce TLS >= 1.2Learn
246Monitoring and AlertingLowRedis should have diagnostic settings enabledLearn
247High AvailabilityHighRedis should have availability zones enabledLearn
248High AvailabilityHighRedis should have a SLALearn
249SecurityHighRedis should have private endpoints enabledLearn
250High AvailabilityHighRedis SKULearn
251GovernanceLowRedis Name should comply with naming conventionsLearn
252GovernanceLowRedis should have tagsLearn
253SecurityHighRedis should not enable non SSL portsLearn
254SecurityLowRedis should enforce TLS >= 1.2Learn
255Monitoring and AlertingLowService Bus should have diagnostic settings enabledLearn
256High AvailabilityHighService Bus should have availability zones enabledLearn
257High AvailabilityHighService Bus should have a SLALearn
258SecurityHighService Bus should have private endpoints enabledLearn
259High AvailabilityHighService Bus SKULearn
260GovernanceLowService Bus Name should comply with naming conventionsLearn
261GovernanceLowService Bus should have tagsLearn
262SecurityMediumService Bus should have local authentication disabledLearn
263Monitoring and AlertingLowSignalR should have diagnostic settings enabledLearn
264High AvailabilityHighSignalR should have availability zones enabledLearn
265High AvailabilityHighSignalR should have a SLALearn
266SecurityHighSignalR should have private endpoints enabledLearn
267High AvailabilityHighSignalR SKULearn
268GovernanceLowSignalR Name should comply with naming conventionsLearn
269GovernanceLowSignalR should have tagsLearn
270SecurityHighSQL should have private endpoints enabledLearn
271GovernanceLowSQL Name should comply with naming conventionsLearn
272GovernanceLowSQL should have tagsLearn
273SecurityLowSQL should enforce TLS >= 1.2Learn
274Monitoring and AlertingLowSQL Database should have diagnostic settings enabledLearn
275High AvailabilityHighSQL Database should have availability zones enabledLearn
276High AvailabilityHighSQL Database should have a SLALearn
277High AvailabilityHighSQL Database SKULearn
278GovernanceLowSQL Database Name should comply with naming conventionsLearn
279GovernanceLowSQL Database should have tagsLearn
280High AvailabilityHighSQL Elastic Pool SKULearn
281GovernanceLowSQL Elastic Pool Name should comply with naming conventionsLearn
282GovernanceLowSQL Elastic Pool should have tagsLearn
283GovernanceLowAzure Synapse Dedicated SQL Pool Name should comply with naming conventionsLearn
284High AvailabilityHighAzure Synapse Dedicated SQL Pool SLALearn
285GovernanceLowAzure Synapse Dedicated SQL Pool should have tagsLearn
286GovernanceLowAzure Synapse Spark Pool Name should comply with naming conventionsLearn
287High AvailabilityHighAzure Synapse Spark Pool SLALearn
288GovernanceLowAzure Synapse Spark Pool should have tagsLearn
289Monitoring and AlertingLowAzure Synapse Workspace should have diagnostic settings enabledLearn
290SecurityHighAzure Synapse Workspace should have private endpoints enabledLearn
291High AvailabilityHighAzure Synapse Workspace SLALearn
292GovernanceLowAzure Synapse Workspace Name should comply with naming conventionsLearn
293GovernanceLowAzure Synapse Workspace should have tagsLearn
294SecurityHighAzure Synapse Workspace should establish network segmentation boundariesLearn
295SecurityHighAzure Synapse Workspace should disable public network accessLearn
296Monitoring and AlertingLowTraffic Manager should have diagnostic settings enabledLearn
297High AvailabilityHighTraffic Manager should have availability zones enabledLearn
298High AvailabilityHighTraffic Manager should have a SLALearn
299GovernanceLowTraffic Manager Name should comply with naming conventionsLearn
300GovernanceLowTraffic Manager should have tagsLearn
301High AvailabilityHighTraffic Manager should use at least 2 endpointsLearn
302SecurityHighTraffic Manager: HTTP endpoints should be monitored using HTTPSLearn
303Monitoring and AlertingLowStorage should have diagnostic settings enabledLearn
304High AvailabilityHighStorage should have availability zones enabledLearn
305High AvailabilityHighStorage should have a SLALearn
306SecurityHighStorage should have private endpoints enabledLearn
307High AvailabilityHighStorage SKULearn
308GovernanceLowStorage Name should comply with naming conventionsLearn
309SecurityHighStorage Account should use HTTPS onlyLearn
310GovernanceLowStorage Account should have tagsLearn
311SecurityLowStorage Account should enforce TLS >= 1.2Learn
312Disaster RecoveryLowStorage Account should have inmutable storage versioning enabledLearn
313Disaster RecoveryMediumStorage Account should have soft delete enabledLearn
314High AvailabilityHighVirtual Machine should have availability zones enabledLearn
315High AvailabilityHighVirtual Machine should have a SLALearn
316GovernanceLowVirtual Machine Name should comply with naming conventionsLearn
317GovernanceLowVirtual Machine should have tagsLearn
318High AvailabilityHighVirtual Machine should use managed disksLearn
319ScalabilityLowVirtual Machine should host application or database data on a data diskLearn
320High AvailabilityHighVirtual Machine should have availability zones enabledLearn
321High AvailabilityHighVirtual Machine should have a SLALearn
322GovernanceLowVirtual Machine Scale Set Name should comply with naming conventionsLearn
323GovernanceLowVirtual Machine Scale Set should have tagsLearn
324Monitoring and AlertingLowVirtual Network should have diagnostic settings enabledLearn
325High AvailabilityHighVirtual Network should have availability zones enabledLearn
326GovernanceLowVirtual Network Name should comply with naming conventionsLearn
327GovernanceLowVirtual Network should have tagsLearn
328SecurityHighVirtual Network: All Subnets should have a Network Security Group associatedLearn
329High AvailabilityHighVirtual Network should have at least two DNS servers assignedLearn
330Monitoring and AlertingLowVirtual Network Gateway should have diagnostic settings enabledLearn
331GovernanceLowVirtual Network Gateway Name should comply with naming conventionsLearn
332GovernanceLowVirtual Network Gateway should have tagsLearn
333High AvailabilityHighVirtual Network Gateway should have a SLALearn
334High AvailabilityHighStorage should have availability zones enabledLearn
335Monitoring and AlertingLowWeb Pub Sub should have diagnostic settings enabledLearn
336High AvailabilityHighWeb Pub Sub should have availability zones enabledLearn
337High AvailabilityHighWeb Pub Sub should have a SLALearn
338SecurityHighWeb Pub Sub should have private endpoints enabledLearn
339High AvailabilityHighWeb Pub Sub SKULearn
340GovernanceLowWeb Pub Sub Name should comply with naming conventionsLearn
341GovernanceLowWeb Pub Sub should have tagsLearn