@@ -3,46 +3,63 @@ package gke_basic
33# See https://github.com/jetstack/preflight/blob/master/docs/datagatherers/gke.md for more details
44import input.gke.Cluster as gke
55
6- # Rule 'private_cluster'
7- preflight_private_cluster[message] {
8- not gke.privateClusterConfig.enablePrivateNodes
6+ # Networking
97
10- message := " cluster does not have private nodes enabled"
8+ # Private cluster enabled
9+ private_cluster_enabled[message] {
10+ not gke.privateClusterConfig.enablePrivateNodes == true
11+ message := " private cluster has not been enabled"
1112}
1213
13- # Rule 'basic_auth_disabled'
14- preflight_basic_auth_disabled[message] {
15- # masterAuth must be missing or an empty {}
16- { gke.masterAuth } & { null , {}} == set ()
14+ # Authentication
1715
18- message := " cluster does not have basic auth disabled"
16+ # Basic authentication disabled
17+ basic_authentication_disabled[message] {
18+ gke.masterAuth.username
19+ message := sprintf (" basic authentication is enabled with username '%s'" , [gke.masterAuth.username])
1920}
20-
21- # Rule 'abac_disabled'
22- preflight_abac_disabled[message] {
23- gke.legacyAbac.enabled
24-
25- message := " cluster has legacy abac enabled"
21+ basic_authentication_disabled[message] {
22+ gke.masterAuth.password
23+ message := " basic authentication is enabled"
2624}
2725
28- # Rule 'k8s_master_up_to_date'
29- preflight_k8s_master_up_to_date[message] {
30- not re_match (` ^1\.1[3467].*$` , gke.currentMasterVersion)
31-
32- message := " cluster master is not up to date"
26+ # Legacy ABAC disabled
27+ legacy_abac_disabled[message] {
28+ gke.legacyAbac.enabled == true
29+ message := " legacy ABAC is enabled"
3330}
3431
35- # Rule 'k8s_nodes_up_to_date'
36- preflight_k8s_nodes_up_to_date[message] {
37- node_pool := gke.nodePools[_]
38- not re_match (` ^1\.1[34567].*$` , node_pool.version)
32+ # Maintainance
3933
40- message := sprintf (" cluster node pool '%s' is outdated" , [node_pool.name])
34+ # Kubernetes master version up to date
35+ Kubernetes_master_version_up_to_date[message] {
36+ not gke.currentMasterVersion == " "
37+ not re_match (` ^1\.1[34567].*$` , gke.currentMasterVersion)
38+ message := sprintf (" current master version '%s' is not up to date" , [gke.currentMasterVersion])
39+ }
40+ Kubernetes_master_version_up_to_date[message] {
41+ gke.currentMasterVersion == " "
42+ message := " current master version is missing"
43+ }
44+ Kubernetes_master_version_up_to_date[message] {
45+ not gke.currentMasterVersion
46+ message := " current master version is missing"
4147}
4248
43- preflight_k8s_nodes_up_to_date[message] {
44- node_pool:= gke.nodePools[_]
45- not node_pool.version
46-
47- message := sprintf (" cluster node pool '%s' has no version" , [node_pool.name])
49+ # Kubernetes node version up to date
50+ kubernetes_node_version_up_to_date[message] {
51+ np := gke.nodePools[_]
52+ not np.version == " "
53+ not re_match (` ^1\.1[34567].*$` , np.version)
54+ message := sprintf (" node pool '%s' current version '%s' not up to date" , [np.name, np.version])
55+ }
56+ kubernetes_node_version_up_to_date[message] {
57+ np := gke.nodePools[_]
58+ np.version == " "
59+ message := sprintf (" node pool '%s' version is missing" , [np.name])
60+ }
61+ kubernetes_node_version_up_to_date[message] {
62+ np := gke.nodePools[_]
63+ not np.version
64+ message := sprintf (" node pool '%s' version is missing" , [np.name])
4865}
0 commit comments