Skip to content

Commit

Permalink
CIS Benchmark policy 5.1.3 (#39)
Browse files Browse the repository at this point in the history
Signed-off-by: Saurabh Pandit <[email protected]>

Co-authored-by: Saurabh Pandit <[email protected]>
  • Loading branch information
2 people authored and hsy3418 committed Jul 7, 2020
1 parent 541924b commit f137c21
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
27 changes: 27 additions & 0 deletions policies/CIS.5.1.3.rego
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package cis_5_1_3

import data.lib.kubernetes

violation[msg] {
kubernetes.clusterroles[clusterrole]
is_using_wildcard(clusterrole.rules[_])
msg = kubernetes.format(sprintf("ClusterRole %v - use of wildcard is not allowed", [clusterrole.metadata.name]))
}

violation[msg] {
kubernetes.roles[role]
is_using_wildcard(role.rules[_])
msg = kubernetes.format(sprintf("Role %v - use of wildcard is not allowed", [role.metadata.name]))
}

is_using_wildcard(rule) {
rule.apiGroups[_] == "*"
}

is_using_wildcard(rule) {
rule.resources[_] == "*"
}

is_using_wildcard(rule) {
rule.verbs[_] == "*"
}
62 changes: 62 additions & 0 deletions policies/CIS.5.1.3_test.rego
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package cis_5_1_3

import data.lib.test

test_violation {
test.violations(violation) with input as policy_input("ClusterRole", "authorization.k8s.io", "tokenviews", "*")
}

test_violation {
test.violations(violation) with input as policy_input("ClusterRole", "authorization.k8s.io", "*", "create")
}

test_violation {
test.violations(violation) with input as policy_input("ClusterRole", "*", "tokenviews", "create")
}

test_violation {
test.violations(violation) with input as policy_input("Role", "authorization.k8s.io", "tokenviews", "*")
}

test_violation {
test.violations(violation) with input as policy_input("Role", "authorization.k8s.io", "*", "create")
}

test_violation {
test.violations(violation) with input as policy_input("Role", "*", "tokenviews", "create")
}

test_no_violation {
test.no_violations(violation) with input as policy_input("ClusterRole", "authorization.k8s.io", "tokenviews", "create")
}

test_no_violation_2 {
test.no_violations(violation) with input as policy_input("Role", "authorization.k8s.io", "tokenviews", "create")
}

policy_input(rolekind, apiGroup, resource, verb) = {
"apiVersion": "rbac.authorization.k8s.io/v1",
"kind": rolekind,
"metadata": {
"annotations": {
"rbac.authorization.kubernetes.io/autoupdate": "true"
},
"labels": {
"kubernetes.io/bootstrapping": "rbac-defaults"
},
"name": "system:node"
},
"rules": [
{
"apiGroups": [
apiGroup
],
"resources": [
resource
],
"verbs": [
verb
]
}
]
}
13 changes: 13 additions & 0 deletions policies/lib/kubernetes.rego
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,19 @@ clusterroles[clusterrole] {
clusterrole = object
}

is_role {
kind = "Role"
}

is_role {
kind = "Roles"
}

roles[role] {
is_role
role = object
}

is_clusterrole_binding {
kind = "ClusterRoleBinding"
}
Expand Down

0 comments on commit f137c21

Please sign in to comment.