Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(query): add cbs disk without encrypted for tencentcloud #6904

Merged
merged 8 commits into from
Feb 28, 2024
3 changes: 2 additions & 1 deletion .github/scripts/queries-validator/metadata-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@
"azure",
"common",
"gcp",
"nifcloud"
"nifcloud",
"tencentcloud"
]
},
"platform": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"id": "1ee0f202-31da-49ba-bbce-04a989912e4b",
"queryName": "Disk Encryption Disabled",
"severity": "MEDIUM",
"category": "Encryption",
"descriptionText": "Disks should have encryption enabled",
"descriptionUrl": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs/resources/cbs_storage#encrypt",
"platform": "Terraform",
"descriptionID": "1ee0f202",
"cloudProvider": "tencentcloud",
"experimental": "true",
"cwe": ""
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package Cx

import data.generic.common as common_lib
import data.generic.terraform as tf_lib

CxPolicy[result] {

resource := input.document[i].resource.tencentcloud_cbs_storage[name]
resource.encrypt == false

result := {
"documentId": input.document[i].id,
"resourceType": "tencentcloud_cbs_storage",
"resourceName": tf_lib.get_resource_name(resource, name),
"searchKey": sprintf("tencentcloud_cbs_storage[%s].encrypt", [name]),
"issueType": "IncorrectValue",
"keyExpectedValue": sprintf("[%s] has encryption set to true", [name]),
"keyActualValue": sprintf("[%s] has encryption set to false", [name]),
"searchLine":common_lib.build_search_line(["resource", "tencentcloud_cbs_storage", name, "encrypt"], []),
}
}

CxPolicy[result] {

resource := input.document[i].resource.tencentcloud_cbs_storage[name]
not common_lib.valid_key(resource, "encrypt")

result := {
"documentId": input.document[i].id,
"resourceType": "tencentcloud_cbs_storage",
"resourceName": tf_lib.get_resource_name(resource, name),
"searchKey": sprintf("tencentcloud_cbs_storage[%s]",[name]),
"issueType": "MissingAttribute",
"keyExpectedValue": sprintf("[%s] has encryption enabled",[name]),
"keyActualValue": sprintf("[%s] does not have encryption enabled",[name]),
"searchLine":common_lib.build_search_line(["resource", "tencentcloud_cbs_storage", name], []),
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
resource "tencentcloud_cbs_storage" "encrytion_negative1" {
storage_name = "cbs-test"
storage_type = "CLOUD_SSD"
storage_size = 100
availability_zone = "ap-guangzhou-3"
encrypt = true

tags = {
test = "tf"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
resource "tencentcloud_cbs_storage" "encrytion_positive1" {
storage_name = "cbs-test"
storage_type = "CLOUD_SSD"
storage_size = 100
availability_zone = "ap-guangzhou-3"

tags = {
test = "tf"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
resource "tencentcloud_cbs_storage" "encrytion_positive2" {
storage_name = "cbs-test"
storage_type = "CLOUD_SSD"
storage_size = 100
availability_zone = "ap-guangzhou-3"
encrypt = false

tags = {
test = "tf"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[
{
"queryName": "Disk Encryption Disabled",
"severity": "MEDIUM",
"line": 6,
"fileName": "positive2.tf"
},
{
"queryName": "Disk Encryption Disabled",
"severity": "MEDIUM",
"line": 1,
"fileName": "positive1.tf"
}
]
1 change: 1 addition & 0 deletions test/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ var (
"../assets/queries/terraform/general": {FileKind: []model.FileKind{model.KindTerraform, model.KindJSON}, Platform: "terraform"},
"../assets/queries/terraform/alicloud": {FileKind: []model.FileKind{model.KindTerraform, model.KindJSON}, Platform: "terraform"},
"../assets/queries/terraform/nifcloud": {FileKind: []model.FileKind{model.KindTerraform, model.KindJSON}, Platform: "terraform"},
"../assets/queries/terraform/tencentcloud": {FileKind: []model.FileKind{model.KindTerraform, model.KindJSON}, Platform: "terraform"},
"../assets/queries/crossplane/aws": {FileKind: []model.FileKind{model.KindYAML}, Platform: "crossplane"},
"../assets/queries/crossplane/azure": {FileKind: []model.FileKind{model.KindYAML}, Platform: "crossplane"},
"../assets/queries/crossplane/gcp": {FileKind: []model.FileKind{model.KindYAML}, Platform: "crossplane"},
Expand Down
Loading