Skip to content

Commit

Permalink
Merge pull request #6675 from Checkmarx/kics-767-crossplane
Browse files Browse the repository at this point in the history
feat(query): crossplane ECS Cluster with Container Insights Disabled
  • Loading branch information
asofsilva authored Feb 9, 2024
2 parents 0f5a1dd + ad12072 commit f45f686
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"id": "0c7a76d9-7dc5-499e-81ac-9245839177cb",
"queryName": "ECS Cluster with Container Insights Disabled",
"severity": "LOW",
"category": "Observability",
"descriptionText": "ECS Cluster should enable container insights",
"descriptionUrl": "https://doc.crds.dev/github.com/crossplane/provider-aws/ecs.aws.crossplane.io/Cluster/[email protected]#spec-forProvider-settings",
"platform": "Crossplane",
"descriptionID": "a6911ebd",
"cloudProvider": "aws"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package Cx

import data.generic.common as common_lib
import data.generic.crossplane as cp_lib

CxPolicy[result] {
docs := input.document[i]
[path, resource] := walk(docs)
startswith(resource.apiVersion, "ecs.aws.crossplane.io")
resource.kind == "Cluster"
forProvider := resource.spec.forProvider

not common_lib.valid_key(forProvider, "settings")

result := {
"documentId": input.document[i].id,
"resourceType": resource.kind,
"resourceName": cp_lib.getResourceName(resource),
"searchKey": sprintf("%smetadata.name={{%s}}.spec.forProvider", [cp_lib.getPath(path), resource.metadata.name]),
"issueType": "MissingAttribute",
"keyExpectedValue": "Cluster.spec.forProvider.settings should be defined and have a ClusterSetting which name is 'containerInsights' with 'enabled' value",
"keyActualValue": "Cluster.spec.forProvider.settings is not defined",
"searchLine": common_lib.build_search_line(path, ["spec", "forProvider"]),
}
}

CxPolicy[result] {
docs := input.document[i]
[path, resource] := walk(docs)
startswith(resource.apiVersion, "ecs.aws.crossplane.io")
resource.kind == "Cluster"
forProvider := resource.spec.forProvider

not container_insights(forProvider.settings)

result := {
"documentId": input.document[i].id,
"resourceType": resource.kind,
"resourceName": cp_lib.getResourceName(resource),
"searchKey": sprintf("%smetadata.name={{%s}}.spec.forProvider.settings", [cp_lib.getPath(path), resource.metadata.name]),
"issueType": "MissingAttribute",
"keyExpectedValue": "Cluster.spec.forProvider.settings should have a ClusterSetting which name is 'containerInsights' with 'enabled' value",
"keyActualValue": "Cluster.spec.forProvider.settings doesn't have a ClusterSetting which name is 'containerInsights' with 'enabled' value",
"searchLine": common_lib.build_search_line(path, ["spec", "forProvider", "settings"]),
}
}

container_insights(settings){
settings[0].name == "containerInsights"
settings[0].value == "enabled"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: ecs.aws.crossplane.io/v1alpha1
kind: Cluster
metadata:
name: example
spec:
forProvider:
region: us-east-1
settings:
- name: "containerInsights"
value: "enabled"
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: ecs.aws.crossplane.io/v1alpha1
kind: Cluster
metadata:
name: example
spec:
forProvider:
region: us-east-1
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: ecs.aws.crossplane.io/v1alpha1
kind: Cluster
metadata:
name: example
spec:
forProvider:
region: us-east-1
settings: []
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: ecs.aws.crossplane.io/v1alpha1
kind: Cluster
metadata:
name: example
spec:
forProvider:
region: us-east-1
settings:
- name: "containerInsights"
value: "disabled"
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"queryName": "ECS Cluster with Container Insights Disabled",
"severity": "LOW",
"line": 6,
"fileName": "positive1.yaml"
},
{
"queryName": "ECS Cluster with Container Insights Disabled",
"severity": "LOW",
"line": 8,
"fileName": "positive2.yaml"
},
{
"queryName": "ECS Cluster with Container Insights Disabled",
"severity": "LOW",
"line": 8,
"fileName": "positive3.yaml"
}
]

0 comments on commit f45f686

Please sign in to comment.