1
1
locals {
2
- resource_group_name = element (coalescelist (data. azurerm_resource_group . rgrp . * . name , azurerm_resource_group. rg . * . name , [" " ]), 0 )
3
- location = element (coalescelist (data. azurerm_resource_group . rgrp . * . location , azurerm_resource_group. rg . * . location , [" " ]), 0 )
4
- if_threat_detection_policy_enabled = var. enable_threat_detection_policy ? [{}] : []
5
- if_extended_auditing_policy_enabled = var. enable_extended_auditing_policy ? [{}] : []
2
+ resource_group_name = element (coalescelist (data. azurerm_resource_group . rgrp . * . name , azurerm_resource_group. rg . * . name , [" " ]), 0 )
3
+ location = element (coalescelist (data. azurerm_resource_group . rgrp . * . location , azurerm_resource_group. rg . * . location , [" " ]), 0 )
4
+ if_threat_detection_policy_enabled = var. enable_threat_detection_policy ? [{}] : []
5
+ # if_extended_auditing_policy_enabled = var.enable_extended_auditing_policy ? [{}] : []
6
6
}
7
7
8
8
# ---------------------------------------------------------
@@ -23,13 +23,29 @@ resource "azurerm_resource_group" "rg" {
23
23
24
24
data "azurerm_client_config" "current" {}
25
25
26
+ data "azurerm_log_analytics_workspace" "logws" {
27
+ count = var. log_analytics_workspace_name != null ? 1 : 0
28
+ name = var. log_analytics_workspace_name
29
+ resource_group_name = local. resource_group_name
30
+ }
31
+
26
32
# ---------------------------------------------------------
27
33
# Storage Account to keep Audit logs - Default is "false"
28
34
# ----------------------------------------------------------
29
35
36
+ resource "random_string" "str" {
37
+ count = var. enable_sql_server_extended_auditing_policy || var. enable_database_extended_auditing_policy || var. enable_vulnerability_assessment ? 1 : 0
38
+ length = 6
39
+ special = false
40
+ upper = false
41
+ keepers = {
42
+ name = var.storage_account_name
43
+ }
44
+ }
45
+
30
46
resource "azurerm_storage_account" "storeacc" {
31
- count = var. enable_threat_detection_policy || var. enable_extended_auditing_policy ? 1 : 0
32
- name = var. storage_account_name == null ? " stsqlauditlogs" : var. storage_account_name
47
+ count = var. enable_sql_server_extended_auditing_policy || var. enable_database_extended_auditing_policy || var . enable_vulnerability_assessment || var . enable_audit_log_monitoring == true ? 1 : 0
48
+ name = var. storage_account_name == null ? " stsqlauditlogs${ element ( concat (random_string . str . * . result , [ " " ]), 0 ) } " : substr ( var. storage_account_name , 0 , 24 )
33
49
resource_group_name = local. resource_group_name
34
50
location = local. location
35
51
account_kind = " StorageV2"
@@ -41,6 +57,7 @@ resource "azurerm_storage_account" "storeacc" {
41
57
}
42
58
43
59
resource "azurerm_storage_container" "storcont" {
60
+ count = var. enable_vulnerability_assessment ? 1 : 0
44
61
name = " vulnerability-assessment"
45
62
storage_account_name = azurerm_storage_account. storeacc . 0 . name
46
63
container_access_type = " private"
@@ -67,8 +84,8 @@ resource "azurerm_sql_server" "primary" {
67
84
resource_group_name = local. resource_group_name
68
85
location = local. location
69
86
version = " 12.0"
70
- administrator_login = " sqladmin"
71
- administrator_login_password = random_password. main . result
87
+ administrator_login = var . admin_username == null ? " sqladmin" : var . admin_username
88
+ administrator_login_password = var . admin_password == null ? random_password. main . result : var . admin_password
72
89
tags = merge ({ " Name" = format (" %s-primary" , var. sqlserver_name ) }, var. tags , )
73
90
74
91
dynamic "identity" {
@@ -80,12 +97,13 @@ resource "azurerm_sql_server" "primary" {
80
97
}
81
98
82
99
resource "azurerm_mssql_server_extended_auditing_policy" "primary" {
83
- count = var. enable_extended_auditing_policy ? 1 : 0
100
+ count = var. enable_sql_server_extended_auditing_policy ? 1 : 0
84
101
server_id = azurerm_sql_server. primary . id
85
102
storage_endpoint = azurerm_storage_account. storeacc . 0 . primary_blob_endpoint
86
103
storage_account_access_key = azurerm_storage_account. storeacc . 0 . primary_access_key
87
104
storage_account_access_key_is_secondary = false
88
105
retention_in_days = var. log_retention_days
106
+ log_monitoring_enabled = var. enable_audit_log_monitoring == true && var. log_analytics_workspace_name != null ? true : false
89
107
}
90
108
91
109
resource "azurerm_sql_server" "secondary" {
@@ -95,7 +113,7 @@ resource "azurerm_sql_server" "secondary" {
95
113
location = var. secondary_sql_server_location
96
114
version = " 12.0"
97
115
administrator_login = " sqladmin"
98
- administrator_login_password = random_password. main . result
116
+ administrator_login_password = var . admin_password == null ? random_password. main . result : var . admin_password
99
117
tags = merge ({ " Name" = format (" %s-secondary" , var. sqlserver_name ) }, var. tags , )
100
118
101
119
dynamic "identity" {
@@ -107,12 +125,13 @@ resource "azurerm_sql_server" "secondary" {
107
125
}
108
126
109
127
resource "azurerm_mssql_server_extended_auditing_policy" "secondary" {
110
- count = var. enable_failover_group && var. enable_extended_auditing_policy ? 1 : 0
128
+ count = var. enable_failover_group && var. enable_sql_server_extended_auditing_policy ? 1 : 0
111
129
server_id = azurerm_sql_server. secondary . 0 . id
112
130
storage_endpoint = azurerm_storage_account. storeacc . 0 . primary_blob_endpoint
113
131
storage_account_access_key = azurerm_storage_account. storeacc . 0 . primary_access_key
114
132
storage_account_access_key_is_secondary = false
115
133
retention_in_days = var. log_retention_days
134
+ log_monitoring_enabled = var. enable_audit_log_monitoring == true && var. log_analytics_workspace_name != null ? true : null
116
135
}
117
136
118
137
@@ -142,12 +161,13 @@ resource "azurerm_sql_database" "db" {
142
161
}
143
162
144
163
resource "azurerm_mssql_database_extended_auditing_policy" "primary" {
145
- count = var. enable_extended_auditing_policy ? 1 : 0
164
+ count = var. enable_database_extended_auditing_policy ? 1 : 0
146
165
database_id = azurerm_sql_database. db . id
147
166
storage_endpoint = azurerm_storage_account. storeacc . 0 . primary_blob_endpoint
148
167
storage_account_access_key = azurerm_storage_account. storeacc . 0 . primary_access_key
149
168
storage_account_access_key_is_secondary = false
150
169
retention_in_days = var. log_retention_days
170
+ log_monitoring_enabled = var. enable_audit_log_monitoring == true && var. log_analytics_workspace_name != null ? true : null
151
171
}
152
172
153
173
# -----------------------------------------------------------------------------------------------
@@ -183,7 +203,7 @@ resource "azurerm_mssql_server_security_alert_policy" "sap_secondary" {
183
203
resource "azurerm_mssql_server_vulnerability_assessment" "va_primary" {
184
204
count = var. enable_vulnerability_assessment ? 1 : 0
185
205
server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy. sap_primary . 0 . id
186
- storage_container_path = " ${ azurerm_storage_account . storeacc . 0 . primary_blob_endpoint } ${ azurerm_storage_container . storcont . name } /"
206
+ storage_container_path = " ${ azurerm_storage_account . storeacc . 0 . primary_blob_endpoint } ${ azurerm_storage_container . storcont . 0 . name } /"
187
207
storage_account_access_key = azurerm_storage_account. storeacc . 0 . primary_access_key
188
208
189
209
recurring_scans {
@@ -196,7 +216,7 @@ resource "azurerm_mssql_server_vulnerability_assessment" "va_primary" {
196
216
resource "azurerm_mssql_server_vulnerability_assessment" "va_secondary" {
197
217
count = var. enable_vulnerability_assessment && var. enable_failover_group == true ? 1 : 0
198
218
server_security_alert_policy_id = azurerm_mssql_server_security_alert_policy. sap_secondary . 0 . id
199
- storage_container_path = " ${ azurerm_storage_account . storeacc . 0 . primary_blob_endpoint } ${ azurerm_storage_container . storcont . name } /"
219
+ storage_container_path = " ${ azurerm_storage_account . storeacc . 0 . primary_blob_endpoint } ${ azurerm_storage_container . storcont . 0 . name } /"
200
220
storage_account_access_key = azurerm_storage_account. storeacc . 0 . primary_access_key
201
221
202
222
recurring_scans {
@@ -222,7 +242,7 @@ resource "null_resource" "create_sql" {
222
242
# -----------------------------------------------------------------------------------------------
223
243
224
244
resource "azurerm_sql_active_directory_administrator" "aduser1" {
225
- count = var. enable_sql_ad_admin ? 1 : 0
245
+ count = var. ad_admin_login_name != null ? 1 : 0
226
246
server_name = azurerm_sql_server. primary . name
227
247
resource_group_name = local. resource_group_name
228
248
login = var. ad_admin_login_name
@@ -231,7 +251,7 @@ resource "azurerm_sql_active_directory_administrator" "aduser1" {
231
251
}
232
252
233
253
resource "azurerm_sql_active_directory_administrator" "aduser2" {
234
- count = var. enable_failover_group && var. enable_sql_ad_admin ? 1 : 0
254
+ count = var. enable_failover_group && var. ad_admin_login_name != null ? 1 : 0
235
255
server_name = azurerm_sql_server. secondary . 0 . name
236
256
resource_group_name = local. resource_group_name
237
257
login = var. ad_admin_login_name
@@ -389,3 +409,35 @@ resource "azurerm_private_dns_a_record" "arecord2" {
389
409
records = [data . azurerm_private_endpoint_connection . private-ip2 . 0 . private_service_connection . 0 . private_ip_address ]
390
410
391
411
}
412
+
413
+ # ------------------------------------------------------------------
414
+ # azurerm monitoring diagnostics - Default is "false"
415
+ # ------------------------------------------------------------------
416
+ resource "azurerm_monitor_diagnostic_setting" "extaudit" {
417
+ count = var. enable_audit_log_monitoring == true && var. log_analytics_workspace_name != null ? 1 : 0
418
+ name = lower (" extaudit-${ var . database_name } -diag" )
419
+ target_resource_id = azurerm_sql_database. db . id
420
+ log_analytics_workspace_id = data. azurerm_log_analytics_workspace . logws . 0 . id
421
+ storage_account_id = azurerm_storage_account. storeacc . 0 . id
422
+
423
+ log {
424
+ category = " SQLSecurityAuditEvents"
425
+ enabled = true
426
+
427
+ retention_policy {
428
+ enabled = false
429
+ }
430
+ }
431
+
432
+ metric {
433
+ category = " AllMetrics"
434
+
435
+ retention_policy {
436
+ enabled = false
437
+ }
438
+ }
439
+
440
+ lifecycle {
441
+ ignore_changes = [log , metric ]
442
+ }
443
+ }
0 commit comments