Skip to content

Commit 135b9d1

Browse files
test(query): improved testing for Azure App Service Client Certificate Disabled query (#7768)
* new resources support for app_service_not_using_latest_tls_encryption_version * app_service_not_using_latest_tls_encryption_version testing and logic improvement * new resources support for app_service_managed_identity_disabled * new resources support for azure_app_service_client_certificate_disabled * new resources support for azure_app_service_client_certificate_disabled part 2 * new resources support for azure_app_service_client_certificate_disabled part 3 * new resources support for web_app_accepting_traffic_other_than_https * better logic and tests for app_service_not_using_latest_tls_encryption_version * fix attempt 1 * fix attempt 2 * fix final * final fix 2 * final final fix * minor adjustments * typo fix * complete testing for azure_app_service_client_certificate_disbaled --------- Co-authored-by: Ricardo Jesus <[email protected]>
1 parent 98a91b6 commit 135b9d1

File tree

10 files changed

+180
-32
lines changed

10 files changed

+180
-32
lines changed

assets/queries/terraform/azure/app_service_not_using_latest_tls_encryption_version/query.rego

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ CxPolicy[result] { #legacy support, 1.2 is the "latest" tls
2626
}
2727
}
2828

29-
CxPolicy[result] { # 1.3 is the latest tls
29+
CxPolicy[result] { # 1.3 is the latest tls
3030
types := {"azurerm_linux_web_app", "azurerm_windows_web_app"}
3131
app := input.document[i].resource[types[t]][name]
3232

@@ -47,7 +47,7 @@ CxPolicy[result] { # 1.3 is the latest tls
4747
}
4848

4949
# Case of undefined site_config - tls defaults to 1.2
50-
minimum_tls_undefined_or_not_latest(app,type,name) = results {
50+
minimum_tls_undefined_or_not_latest(app,type,name) = results {
5151
not common_lib.valid_key(app,"site_config")
5252
results := {
5353
"searchKey" : sprintf("%s[%s]", [type,name]),
@@ -59,7 +59,7 @@ minimum_tls_undefined_or_not_latest(app,type,name) = results {
5959
"remediationType": null,
6060
}
6161
# Case of undefined minimum_tls_version - tls defaults to 1.2
62-
} else = results {
62+
} else = results {
6363
not common_lib.valid_key(app.site_config,"minimum_tls_version")
6464
results := {
6565
"searchKey" : sprintf("%s[%s].site_config", [type,name]),
@@ -71,7 +71,7 @@ minimum_tls_undefined_or_not_latest(app,type,name) = results {
7171
"remediationType": "addition",
7272
}
7373
# Case of minimum_tls_version not set to 1.3
74-
} else = results {
74+
} else = results {
7575
min_tls_version = to_number(app.site_config.minimum_tls_version)
7676
min_tls_version != 1.3
7777
results := {

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/query.rego

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ types := {"azurerm_app_service", "azurerm_linux_web_app", "azurerm_windows_web_a
88
CxPolicy[result] {
99
resource := input.document[i].resource[types[t]][name]
1010

11-
not resource.site_config.http2_enabled
11+
not resource.site_config.http2_enabled
1212
results := client_certificate_is_undefined_or_false(resource,name,types[t])
1313

1414
result := {
1515
"documentId": input.document[i].id,
1616
"resourceType": types[t],
17-
"resourceName": tf_lib.get_resource_name(resource, name),
17+
"resourceName": tf_lib.get_resource_name(resource, name),
1818
"searchKey": results.searchKey,
1919
"issueType": results.issueType,
2020
"keyExpectedValue": results.keyExpectedValue,
@@ -25,7 +25,7 @@ CxPolicy[result] {
2525
}
2626
}
2727

28-
client_certificate_is_undefined_or_false(resource,name,type) = results { # case of no "client_cert_enabled" field
28+
client_certificate_is_undefined_or_false(resource,name,type) = results { # case of no "client_cert_enabled" field
2929
field_name = get_field(type)
3030
not common_lib.valid_key(resource, field_name)
3131

@@ -38,7 +38,7 @@ client_certificate_is_undefined_or_false(resource,name,type) = results { # case
3838
"remediation": sprintf("%s = true",[field_name]),
3939
"remediationType": "addition",
4040
}
41-
41+
4242
} else = results { # case of both "client_cert_enabled" and "http2_enabled"(explicitly) set to false
4343
common_lib.valid_key(resource.site_config, "http2_enabled")
4444
resource.site_config.http2_enabled == false
@@ -75,6 +75,6 @@ client_certificate_is_undefined_or_false(resource,name,type) = results { # case
7575
}
7676
}
7777

78-
get_field("azurerm_app_service") = "client_cert_enabled"
78+
get_field("azurerm_app_service") = "client_cert_enabled"
7979
get_field("azurerm_linux_web_app") = "client_certificate_enabled"
80-
get_field("azurerm_windows_web_app") = "client_certificate_enabled"
80+
get_field("azurerm_windows_web_app") = "client_certificate_enabled"

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/negative1.tf

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,55 @@ resource "azurerm_app_service" "negative1-2" {
1313
resource_group_name = azurerm_resource_group.example.name
1414
app_service_plan_id = azurerm_app_service_plan.example.id
1515

16+
site_config {}
17+
18+
client_cert_enabled = true
19+
}
20+
21+
resource "azurerm_app_service" "negative1-3" {
22+
name = "example-app-service"
23+
location = azurerm_resource_group.example.location
24+
resource_group_name = azurerm_resource_group.example.name
25+
app_service_plan_id = azurerm_app_service_plan.example.id
26+
27+
site_config {
28+
http2_enabled = true
29+
}
30+
}
31+
32+
resource "azurerm_app_service" "negative1-4" {
33+
name = "example-app-service"
34+
location = azurerm_resource_group.example.location
35+
resource_group_name = azurerm_resource_group.example.name
36+
app_service_plan_id = azurerm_app_service_plan.example.id
37+
1638
site_config {
1739
http2_enabled = true
1840
}
1941

2042
client_cert_enabled = false
2143
}
2244

23-
resource "azurerm_app_service" "negative1-3" {
45+
resource "azurerm_app_service" "negative1-5" {
2446
name = "example-app-service"
2547
location = azurerm_resource_group.example.location
2648
resource_group_name = azurerm_resource_group.example.name
2749
app_service_plan_id = azurerm_app_service_plan.example.id
2850

2951
site_config {
30-
http2_enabled = true
52+
http2_enabled = false
3153
}
54+
55+
client_cert_enabled = true
56+
}
57+
58+
resource "azurerm_app_service" "negative1-6" {
59+
name = "example-app-service"
60+
location = azurerm_resource_group.example.location
61+
resource_group_name = azurerm_resource_group.example.name
62+
app_service_plan_id = azurerm_app_service_plan.example.id
63+
64+
site_config {}
65+
66+
client_cert_enabled = true
3267
}

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/negative2.tf

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,23 @@ resource "azurerm_linux_web_app" "negative2-1" {
44
resource_group_name = azurerm_resource_group.example.name
55
service_plan_id = azurerm_linux_web_app_plan.example.id
66

7+
site_config {}
8+
79
client_certificate_enabled = true
810
}
911

1012
resource "azurerm_linux_web_app" "negative2-2" {
13+
name = "example-app-service"
14+
location = azurerm_resource_group.example.location
15+
resource_group_name = azurerm_resource_group.example.name
16+
service_plan_id = azurerm_app_service_plan.example.id
17+
18+
site_config {
19+
http2_enabled = true
20+
}
21+
}
22+
23+
resource "azurerm_linux_web_app" "negative2-3" {
1124
name = "example-app-service"
1225
location = azurerm_resource_group.example.location
1326
resource_group_name = azurerm_resource_group.example.name
@@ -20,13 +33,15 @@ resource "azurerm_linux_web_app" "negative2-2" {
2033
client_certificate_enabled = false
2134
}
2235

23-
resource "azurerm_linux_web_app" "negative2-3" {
36+
resource "azurerm_linux_web_app" "negative2-4" {
2437
name = "example-app-service"
2538
location = azurerm_resource_group.example.location
2639
resource_group_name = azurerm_resource_group.example.name
27-
service_plan_id = azurerm_app_service_plan.example.id
40+
service_plan_id = azurerm_linux_web_app_plan.example.id
2841

2942
site_config {
30-
http2_enabled = true
43+
http2_enabled = false
3144
}
45+
46+
client_certificate_enabled = true
3247
}

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/negative3.tf

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,23 @@ resource "azurerm_windows_web_app" "negative3-1" {
44
resource_group_name = azurerm_resource_group.example.name
55
service_plan_id = azurerm_windows_web_app_plan.example.id
66

7+
site_config {}
8+
79
client_certificate_enabled = true
810
}
911

1012
resource "azurerm_windows_web_app" "negative3-2" {
13+
name = "example-app-service"
14+
location = azurerm_resource_group.example.location
15+
resource_group_name = azurerm_resource_group.example.name
16+
service_plan_id = azurerm_app_service_plan.example.id
17+
18+
site_config {
19+
http2_enabled = true
20+
}
21+
}
22+
23+
resource "azurerm_windows_web_app" "negative3-3" {
1124
name = "example-app-service"
1225
location = azurerm_resource_group.example.location
1326
resource_group_name = azurerm_resource_group.example.name
@@ -20,13 +33,15 @@ resource "azurerm_windows_web_app" "negative3-2" {
2033
client_certificate_enabled = false
2134
}
2235

23-
resource "azurerm_windows_web_app" "negative3-3" {
36+
resource "azurerm_windows_web_app" "negative3-4" {
2437
name = "example-app-service"
2538
location = azurerm_resource_group.example.location
2639
resource_group_name = azurerm_resource_group.example.name
27-
service_plan_id = azurerm_app_service_plan.example.id
40+
service_plan_id = azurerm_windows_web_app_plan.example.id
2841

2942
site_config {
30-
http2_enabled = true
43+
http2_enabled = false
3144
}
45+
46+
client_certificate_enabled = true
3247
}

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/positive1.tf

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,39 @@ resource "azurerm_app_service" "positive1-3" {
2121
app_service_plan_id = azurerm_app_service_plan.example.id
2222

2323
site_config {
24-
dotnet_framework_version = "v4.0"
25-
scm_type = "LocalGit"
2624
http2_enabled = false
2725
}
2826

2927
client_cert_enabled = false
3028
}
29+
30+
resource "azurerm_app_service" "positive1-4" {
31+
name = "example-app-service"
32+
location = azurerm_resource_group.example.location
33+
resource_group_name = azurerm_resource_group.example.name
34+
app_service_plan_id = azurerm_app_service_plan.example.id
35+
36+
site_config {
37+
http2_enabled = false
38+
}
39+
}
40+
41+
resource "azurerm_app_service" "positive1-5" {
42+
name = "example-app-service"
43+
location = azurerm_resource_group.example.location
44+
resource_group_name = azurerm_resource_group.example.name
45+
app_service_plan_id = azurerm_app_service_plan.example.id
46+
47+
site_config {}
48+
}
49+
50+
resource "azurerm_app_service" "positive1-6" {
51+
name = "example-app-service"
52+
location = azurerm_resource_group.example.location
53+
resource_group_name = azurerm_resource_group.example.name
54+
app_service_plan_id = azurerm_app_service_plan.example.id
55+
56+
site_config {}
57+
58+
client_cert_enabled = false
59+
}

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/positive2.tf

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ resource "azurerm_linux_web_app" "positive2-1" {
33
location = azurerm_resource_group.example.location
44
resource_group_name = azurerm_resource_group.example.name
55
service_plan_id = azurerm_linux_web_app_plan.example.id
6+
site_config {}
67
}
78

89
resource "azurerm_linux_web_app" "positive2-2" {
@@ -11,6 +12,8 @@ resource "azurerm_linux_web_app" "positive2-2" {
1112
resource_group_name = azurerm_resource_group.example.name
1213
service_plan_id = azurerm_linux_web_app_plan.example.id
1314

15+
site_config{}
16+
1417
client_certificate_enabled = false
1518
}
1619

@@ -21,10 +24,19 @@ resource "azurerm_linux_web_app" "positive2-3" {
2124
service_plan_id = azurerm_linux_web_app_plan.example.id
2225

2326
site_config {
24-
dotnet_framework_version = "v4.0"
25-
scm_type = "LocalGit"
2627
http2_enabled = false
2728
}
2829

2930
client_certificate_enabled = false
3031
}
32+
33+
resource "azurerm_linux_web_app" "positive2-4" {
34+
name = "example-app-service"
35+
location = azurerm_resource_group.example.location
36+
resource_group_name = azurerm_resource_group.example.name
37+
service_plan_id = azurerm_linux_web_app_plan.example.id
38+
39+
site_config {
40+
http2_enabled = false
41+
}
42+
}

assets/queries/terraform/azure/azure_app_service_client_certificate_disabled/test/positive3.tf

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ resource "azurerm_windows_web_app" "positive3-1" {
33
location = azurerm_resource_group.example.location
44
resource_group_name = azurerm_resource_group.example.name
55
service_plan_id = azurerm_windows_web_app_plan.example.id
6+
site_config{}
67
}
78

89
resource "azurerm_windows_web_app" "positive3-2" {
@@ -11,6 +12,8 @@ resource "azurerm_windows_web_app" "positive3-2" {
1112
resource_group_name = azurerm_resource_group.example.name
1213
service_plan_id = azurerm_windows_web_app_plan.example.id
1314

15+
site_config{}
16+
1417
client_certificate_enabled = false
1518
}
1619

@@ -21,10 +24,19 @@ resource "azurerm_windows_web_app" "positive3-3" {
2124
service_plan_id = azurerm_windows_web_app_plan.example.id
2225

2326
site_config {
24-
dotnet_framework_version = "v4.0"
25-
scm_type = "LocalGit"
2627
http2_enabled = false
2728
}
2829

2930
client_certificate_enabled = false
3031
}
32+
33+
resource "azurerm_windows_web_app" "positive3-4" {
34+
name = "example-app-service"
35+
location = azurerm_resource_group.example.location
36+
resource_group_name = azurerm_resource_group.example.name
37+
service_plan_id = azurerm_windows_web_app_plan.example.id
38+
39+
site_config {
40+
http2_enabled = false
41+
}
42+
}

0 commit comments

Comments
 (0)