1
0
mirror of https://github.com/aquasecurity/kube-bench.git synced 2024-11-25 01:18:12 +00:00

Updating the rh-1.0 OCP checks (#1548)

1. Added audit commands wherever required.
2. Updated the scripts with type to manual to match the title.
3. Updated the scripts with test_items wherever required.
4. Fixed a typo.
This commit is contained in:
Kiran Bodipi 2024-01-23 12:26:40 +05:30 committed by GitHub
parent 38949874d1
commit 13da372a87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 44 additions and 7 deletions

View File

@ -67,7 +67,7 @@ groups:
op: eq op: eq
value: "1" value: "1"
remediation: | remediation: |
This setting is managed by the cluster etcd operator. No remediation required.e This setting is managed by the cluster etcd operator. No remediation required.
scored: false scored: false
- id: 2.4 - id: 2.4

View File

@ -864,7 +864,6 @@ groups:
remediation: | remediation: |
Follow the documentation for log forwarding. Forwarding logs to third party systems Follow the documentation for log forwarding. Forwarding logs to third party systems
https://docs.openshift.com/container-platform/4.5/logging/cluster-logging-external.html https://docs.openshift.com/container-platform/4.5/logging/cluster-logging-external.html
scored: false scored: false
- id: 1.2.24 - id: 1.2.24
@ -1070,6 +1069,12 @@ groups:
- id: 1.2.35 - id: 1.2.35
text: "Ensure that the API Server only makes use of Strong Cryptographic Ciphers (Manual)" text: "Ensure that the API Server only makes use of Strong Cryptographic Ciphers (Manual)"
type: manual type: manual
audit: |
# verify cipher suites
oc get cm -n openshift-authentication v4-0-config-system-cliconfig -o jsonpath='{.data.v4\-0\-config\-system\-cliconfig}' | jq .servingInfo
oc get kubeapiservers.operator.openshift.io cluster -o json |jq.spec.observedConfig.servingInfo
oc get openshiftapiservers.operator.openshift.io cluster -o json |jq.spec.observedConfig.servingInfo
oc describe --namespace=openshift-ingress-operator ingresscontroller/default
remediation: | remediation: |
Verify that the tlsSecurityProfile is set to the value you chose. Verify that the tlsSecurityProfile is set to the value you chose.
Note: The HAProxy Ingress controller image does not support TLS 1.3 Note: The HAProxy Ingress controller image does not support TLS 1.3

View File

@ -222,15 +222,12 @@ groups:
audit: | audit: |
for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}') for node in $(oc get nodes -o jsonpath='{.items[*].metadata.name}')
do do
oc debug node/${node} -- chroot /host grep clientCAFile /etc/kubernetes/kubelet.conf oc debug node/${node} -- chroot /host grep clientCAFile /etc/kubernetes/kubelet.conf | awk -F': ' '{ print "clientCAFile=" $2 }'
done 2> /dev/null done 2> /dev/null
use_multiple_values: true use_multiple_values: true
tests: tests:
test_items: test_items:
- flag: "clientCAFile" - flag: clientCAFile="/etc/kubernetes/kubelet-ca.crt"
compare:
op: eq
value: "/etc/kubernetes/kubelet-ca.crt"
remediation: | remediation: |
None required. Changing the clientCAFile value is unsupported. None required. Changing the clientCAFile value is unsupported.
scored: true scored: true
@ -278,6 +275,10 @@ groups:
compare: compare:
op: noteq op: noteq
value: 0 value: 0
- flag: streamingConnectionIdleTimeout
compare:
op: noteq
value: 0s
- flag: "exit_code" - flag: "exit_code"
compare: compare:
op: eq op: eq

View File

@ -11,6 +11,12 @@ groups:
- id: 5.1.1 - id: 5.1.1
text: "Ensure that the cluster-admin role is only used where required (Manual)" text: "Ensure that the cluster-admin role is only used where required (Manual)"
type: "manual" type: "manual"
audit: |
#To get a list of users and service accounts with the cluster-admin role
oc get clusterrolebindings -o=customcolumns=NAME:.metadata.name,ROLE:.roleRef.name,SUBJECT:.subjects[*].kind |
grep cluster-admin
#To verity that kbueadmin is removed, no results should be returned
oc get secrets kubeadmin -n kube-system
remediation: | remediation: |
Identify all clusterrolebindings to the cluster-admin role. Check if they are used and Identify all clusterrolebindings to the cluster-admin role. Check if they are used and
if they need this role or if they could use a role with fewer privileges. if they need this role or if they could use a role with fewer privileges.
@ -29,6 +35,15 @@ groups:
- id: 5.1.3 - id: 5.1.3
text: "Minimize wildcard use in Roles and ClusterRoles (Manual)" text: "Minimize wildcard use in Roles and ClusterRoles (Manual)"
type: "manual" type: "manual"
audit: |
#needs verification
oc get roles --all-namespaces -o yaml
for i in $(oc get roles -A -o jsonpath='{.items[*].metadata.name}'); do oc
describe clusterrole ${i}; done
#Retrieve the cluster roles defined in the cluster and review for wildcards
oc get clusterroles -o yaml
for i in $(oc get clusterroles -o jsonpath='{.items[*].metadata.name}'); do
oc describe clusterrole ${i}; done
remediation: | remediation: |
Where possible replace any use of wildcards in clusterroles and roles with specific Where possible replace any use of wildcards in clusterroles and roles with specific
objects or actions. objects or actions.
@ -213,6 +228,9 @@ groups:
- id: 5.3.2 - id: 5.3.2
text: "Ensure that all Namespaces have Network Policies defined (Manual)" text: "Ensure that all Namespaces have Network Policies defined (Manual)"
type: "manual" type: "manual"
audit: |
#Run the following command and review the NetworkPolicy objects created in the cluster.
oc -n all get networkpolicy
remediation: | remediation: |
Follow the documentation and create NetworkPolicy objects as you need them. Follow the documentation and create NetworkPolicy objects as you need them.
scored: false scored: false
@ -223,6 +241,10 @@ groups:
- id: 5.4.1 - id: 5.4.1
text: "Prefer using secrets as files over secrets as environment variables (Manual)" text: "Prefer using secrets as files over secrets as environment variables (Manual)"
type: "manual" type: "manual"
audit: |
#Run the following command to find references to objects which use environment variables defined from secrets.
oc get all -o jsonpath='{range .items[?(@..secretKeyRef)]} {.kind}
{.metadata.name} {"\n"}{end}' -A
remediation: | remediation: |
If possible, rewrite application code to read secrets from mounted secret files, rather than If possible, rewrite application code to read secrets from mounted secret files, rather than
from environment variables. from environment variables.
@ -252,6 +274,10 @@ groups:
- id: 5.7.1 - id: 5.7.1
text: "Create administrative boundaries between resources using namespaces (Manual)" text: "Create administrative boundaries between resources using namespaces (Manual)"
type: "manual" type: "manual"
audit: |
#Run the following command and review the namespaces created in the cluster.
oc get namespaces
#Ensure that these namespaces are the ones you need and are adequately administered as per your requirements.
remediation: | remediation: |
Follow the documentation and create namespaces for objects in your deployment as you need Follow the documentation and create namespaces for objects in your deployment as you need
them. them.
@ -277,6 +303,11 @@ groups:
- id: 5.7.4 - id: 5.7.4
text: "The default namespace should not be used (Manual)" text: "The default namespace should not be used (Manual)"
type: "manual" type: "manual"
audit: |
#Run this command to list objects in default namespace
oc project default
oc get all
#The only entries there should be system managed resources such as the kubernetes and openshift service
remediation: | remediation: |
Ensure that namespaces are created to allow for appropriate segregation of Kubernetes Ensure that namespaces are created to allow for appropriate segregation of Kubernetes
resources and that all new resources are created in a specific namespace. resources and that all new resources are created in a specific namespace.