Skip to content

Commit ee48195

Browse files
authored
fix(terraform): Fix protocols for CKV2_AWS_74 and fix for CKV2_K8S_5 (#7134)
* fix protocols * fix CKV2_K8S_5
1 parent 6c2a515 commit ee48195

File tree

6 files changed

+89
-17
lines changed

6 files changed

+89
-17
lines changed

checkov/kubernetes/checks/graph_checks/ReadAllSecrets.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,9 @@ definition:
5858
resource_types:
5959
- ClusterRole
6060
- Role
61+
- cond_type: attribute
62+
attribute: rules.resourceNames
63+
operator: exists
64+
resource_types:
65+
- ClusterRole
66+
- Role

checkov/terraform/checks/graph_checks/aws/LBWeakCiphers.yaml

+27-17
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,36 @@ metadata:
33
name: "Ensure AWS Load Balancers use strong ciphers"
44
category: "NETWORKING"
55
definition:
6-
and:
6+
or:
77
- cond_type: "attribute"
88
resource_types:
99
- "aws_alb_listener"
1010
- "aws_lb_listener"
11-
attribute: "ssl_policy"
12-
operator: "exists" # The default is ELBSecurityPolicy-2016-08 which is weak
13-
- cond_type: "attribute"
14-
resource_types:
15-
- "aws_alb_listener"
16-
- "aws_lb_listener"
17-
attribute: "ssl_policy"
11+
attribute: "protocol"
1812
operator: "not_within"
1913
value:
20-
- "ELBSecurityPolicy-2016-08"
21-
- "ELBSecurityPolicy-2015-05"
22-
- "ELBSecurityPolicy-TLS-1-0-2015-04"
23-
- "ELBSecurityPolicy-TLS-1-1-2017-01"
24-
- "ELBSecurityPolicy-2015-03"
25-
- "ELBSecurityPolicy-2015-02"
26-
- "ELBSecurityPolicy-2014-10"
27-
- "ELBSecurityPolicy-Default"
28-
- "ELBSecurityPolicy-2014-01"
14+
- "HTTPS"
15+
- "TLS"
16+
- and:
17+
- cond_type: "attribute"
18+
resource_types:
19+
- "aws_alb_listener"
20+
- "aws_lb_listener"
21+
attribute: "ssl_policy"
22+
operator: "exists" # The default is ELBSecurityPolicy-2016-08 which is weak
23+
- cond_type: "attribute"
24+
resource_types:
25+
- "aws_alb_listener"
26+
- "aws_lb_listener"
27+
attribute: "ssl_policy"
28+
operator: "not_within"
29+
value:
30+
- "ELBSecurityPolicy-2016-08"
31+
- "ELBSecurityPolicy-2015-05"
32+
- "ELBSecurityPolicy-TLS-1-0-2015-04"
33+
- "ELBSecurityPolicy-TLS-1-1-2017-01"
34+
- "ELBSecurityPolicy-2015-03"
35+
- "ELBSecurityPolicy-2015-02"
36+
- "ELBSecurityPolicy-2014-10"
37+
- "ELBSecurityPolicy-Default"
38+
- "ELBSecurityPolicy-2014-01"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
name: "my-role"
5+
namespace: my-namespace
6+
rules:
7+
- apiGroups: [""]
8+
resources: ["secrets"]
9+
resourceNames:
10+
- "my-secret-resource"
11+
verbs: ["get"]
12+
---
13+
apiVersion: rbac.authorization.k8s.io/v1
14+
kind: RoleBinding
15+
metadata:
16+
name: "my-role-binding"
17+
namespace: my-namespace
18+
subjects:
19+
- kind: ServiceAccount
20+
name: "my-service-account"
21+
roleRef:
22+
kind: Role
23+
name: "my-role"
24+
apiGroup: rbac.authorization.k8s.io
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pass:
22
- "ClusterRoleBinding.default.read-pods-global"
3+
- "RoleBinding.my-namespace.my-role-binding"
34
fail:
45
- "ClusterRoleBinding.default.read-secrets-global"

tests/terraform/graph/checks/resources/LBWeakCiphers/expected.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ fail:
55
pass:
66
- "aws_lb_listener.front_end_passing"
77
- "aws_alb_listener.secure_listener"
8+
- "aws_alb_listener.secure_listener2"
9+
- "aws_lb_listener.tcp"

tests/terraform/graph/checks/resources/LBWeakCiphers/main.tf

+29
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,33 @@ resource "aws_alb_listener" "secure_listener" {
7878
status_code = "200"
7979
}
8080
}
81+
}
82+
83+
resource "aws_alb_listener" "secure_listener2" {
84+
load_balancer_arn = aws_lb.secure_lb.arn
85+
port = "443"
86+
protocol = "HTTPS"
87+
ssl_policy = "ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06"
88+
89+
certificate_arn = "arn:aws:acm:region:account:certificate/certificate-id"
90+
91+
default_action {
92+
type = "fixed-response"
93+
fixed_response {
94+
content_type = "text/plain"
95+
message_body = "OK"
96+
status_code = "200"
97+
}
98+
}
99+
}
100+
101+
resource "aws_lb_listener" "tcp" {
102+
load_balancer_arn = aws_lb.external_lb.arn
103+
port = 443
104+
protocol = "TCP"
105+
106+
default_action {
107+
type = "forward"
108+
target_group_arn = aws_lb_target_group.external_tg.arn
109+
}
81110
}

0 commit comments

Comments
 (0)