Definition of CIS Red Hat OpenShift Container Platform 4 Benchmark for ocp4

based on https://www.cisecurity.org/benchmark/kubernetes

2.1: Ensure that the --cert-file and --key-file arguments are set as appropriate

Description: None

Levels:

Automated: yes

Selections:

2.2: Ensure that the --client-cert-auth argument is set to true

Description: None

Levels:

Automated: yes

Selections:

2.3: Ensure that the --auto-tls argument is not set to true

Description: None

Levels:

Automated: yes

Selections:

2.4: Ensure that the --peer-cert-file and --peer-key-file arguments are set as appropriate

Description: None

Levels:

Automated: yes

Selections:

2.5: Ensure that the --peer-client-cert-auth argument is set to true

Description: None

Levels:

Automated: yes

Selections:

2.6: Ensure that the --peer-auto-tls argument is not set to true

Description: None

Levels:

Automated: yes

Selections:

2.7: Ensure that a unique Certificate Authority is used for etcd

Description: None

Levels:

Automated: yes

Selections:

2: etcd

Description: None

Levels:

Automated: no

Selections:

3.1.1: Client certificate authentication should not be used for users

Description: None

Levels:

Automated: yes

Selections:

3.1: Authentication and Authorization

Description: None

Levels:

Automated: yes

Selections:

3.2.1: Ensure that a minimal audit policy is created

Description: None

Levels:

Automated: yes

Selections:

3.2.2: Ensure that the audit policy covers key security concerns

Description: None

Levels:

Automated: yes

Selections:

3.2: Logging

Description: None

Levels:

Automated: yes

Selections:

3: Control Plane Configuration

Description: None

Levels:

Automated: no

Selections:

1.1.1: Ensure that the API server pod specification file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.2: Ensure that the API server pod specification file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.3: Ensure that the controller manager pod specification file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.4: Ensure that the controller manager pod specification file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.5: Ensure that the scheduler pod specification file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.6: Ensure that the scheduler pod specification file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.7: Ensure that the etcd pod specification file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.8: Ensure that the etcd pod specification file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.9: Ensure that the Container Network Interface file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.10: Ensure that the Container Network Interface file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.11: Ensure that the etcd data directory permissions are set to 700 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.12: Ensure that the etcd data directory ownership is set to etcd:etcd

Description: None

Levels:

Automated: yes

Selections:

1.1.13: Ensure that the kubeconfig file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.14: Ensure that the kubeconfig file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.15: Ensure that the Scheduler kubeconfig file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.16: Ensure that the Scheduler kubeconfig file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.17: Ensure that the Controller Manager kubeconfig file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.18: Ensure that the Controller Manager kubeconfig file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.19: Ensure that the OpenShift PKI directory and file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

1.1.20: Ensure that the OpenShift PKI certificate file permissions are set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

1.1.21: Ensure that the OpenShift PKI key file permissions are set to 600

Description: None

Levels:

Automated: yes

Selections:

1.1: Master Node Configuration Files

Description: None

Levels:

Automated: yes

Selections:

1.2.1: Ensure that anonymous requests are authorized

Description: None

Levels:

Automated: yes

Selections:

1.2.2: Ensure that the --basic-auth-file argument is not set

Description: None

Levels:

Automated: yes

Selections:

1.2.3: Ensure that the --token-auth-file parameter is not set

Description: None

Levels:

Automated: yes

Selections:

1.2.4: Use https for kubelet connections

Description: None

Levels:

Automated: yes

Selections:

1.2.5: Ensure that the kubelet uses certificates to authenticate

Description: None

Levels:

Automated: yes

Selections:

1.2.6: Verify that the kubelet certificate authority is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.7: Ensure that the --authorization-mode argument is not set to AlwaysAllow

Description: None

Levels:

Automated: yes

Selections:

1.2.8: Verify that RBAC is enabled

Description: None

Levels:

Automated: yes

Selections:

1.2.9: Ensure that the APIPriorityAndFairness feature gate is enabled

Description: None

Levels:

Automated: yes

Selections:

1.2.10: Ensure that the admission control plugin AlwaysAdmit is not set

Description: None

Levels:

Automated: yes

Selections:

1.2.11: Ensure that the admission control plugin AlwaysPullImages is not set

Description: None

Levels:

Automated: yes

Selections:

1.2.12: Ensure that the admission control plugin ServiceAccount is set

Description: None

Levels:

Automated: yes

Selections:

1.2.13: Ensure that the admission control plugin NamespaceLifecycle is set

Description: None

Levels:

Automated: yes

Selections:

1.2.14: Ensure that the admission control plugin SecurityContextConstraint is set

Description: None

Levels:

Automated: yes

Selections:

1.2.15: Ensure that the admission control plugin NodeRestriction is set

Description: None

Levels:

Automated: yes

Selections:

1.2.16: Ensure that the --insecure-bind-address argument is not set

Description: None

Levels:

Automated: yes

Selections:

1.2.17: Ensure that the --insecure-port argument is set to 0

Description: None

Levels:

Automated: yes

Selections:

1.2.18: Ensure that the --secure-port argument is not set to 0

Description: None

Levels:

Automated: yes

Selections:

1.2.19: Ensure that the healthz endpoint is protected by RBAC

Description: None

Levels:

Automated: yes

Selections:

1.2.20: Ensure that the --audit-log-path argument is set

Description: None

Levels:

Automated: yes

Selections:

1.2.21: Ensure that the audit logs are forwarded off the cluster for retention

Description: None

Levels:

Automated: yes

Selections:

1.2.22: Ensure that the maximumRetainedFiles argument is set to 10 or as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.23: Ensure that the maximumFileSizeMegabytes argument is set to 100

Description: None

Levels:

Automated: yes

Selections:

1.2.24: Ensure that the --request-timeout argument is set

Description: None

Levels:

Automated: yes

Selections:

1.2.25: Ensure that the --service-account-lookup argument is set to true

Description: None

Levels:

Automated: yes

Selections:

1.2.26: Ensure that the --service-account-key-file argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.27: Ensure that the --etcd-certfile and --etcd-keyfile arguments are set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.28: Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.29: Ensure that the --client-ca-file argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.30: Ensure that the --etcd-cafile argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.2.31: Ensure that encryption providers are appropriately configured

Description: None

Levels:

Automated: no

Selections:

1.2.32: Ensure that the API Server only makes use of Strong Cryptographic Ciphers

Description: None

Levels:

Automated: yes

Selections:

1.2.33: Ensure unsupported configuration overrides are not used

Description: None

Levels:

Automated: no

No rules selected

1.2: API Server

Description: None

Levels:

Automated: no

Selections:

1.3.1: Ensure that controller manager healthz endpoints are protected by RBAC

Description: None

Levels:

Automated: yes

Selections:

1.3.2: Ensure that the --use-service-account-credentials argument is set to true

Description: None

Levels:

Automated: yes

Selections:

1.3.3: Ensure that the --service-account-private-key-file argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.3.4: Ensure that the --root-ca-file argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

1.3.5: Ensure that the --bind-address argument is set to 127.0.0.1

Description: None

Levels:

Automated: yes

Selections:

1.3: Controller Manager

Description: None

Levels:

Automated: no

Selections:

1.4.1: Ensure that the healthz endpoints for the scheduler are protected by RBAC

Description: None

Levels:

Automated: yes

Selections:

1.4.2: Verify that the scheduler API service is protected by RBAC

Description: None

Levels:

Automated: yes

Selections:

1.4: Scheduler

Description: None

Levels:

Automated: yes

Selections:

1: Control Plane Components

Description: None

Levels:

Automated: no

Selections:

5.1.1: Ensure that the cluster-admin role is only used where required

Description: None

Levels:

Automated: no

Selections:

5.1.2: Minimize access to secrets

Description: None

Levels:

Automated: no

Selections:

5.1.3: Minimize wildcard use in Roles and ClusterRoles

Description: None

Levels:

Automated: no

Selections:

5.1.4: Minimize access to create pods

Description: None

Levels:

Automated: no

Selections:

5.1.5: Ensure that default service accounts are not actively used.

Description: None

Levels:

Automated: no

Selections:

5.1.6: Ensure that Service Account Tokens are only mounted where necessary

Description: None

Levels:

Automated: no

Selections:

5.1: RBAC and Service Accounts

Description: None

Levels:

Automated: no

Selections:

5.2.1: Minimize the admission of privileged containers

Description: None

Levels:

Automated: no

Selections:

5.2.2: Minimize the admission of containers wishing to share the host process ID namespace

Description: None

Levels:

Automated: no

Selections:

5.2.3: Minimize the admission of containers wishing to share the host IPC namespace

Description: None

Levels:

Automated: no

Selections:

5.2.4: Minimize the admission of containers wishing to share the host network namespace

Description: None

Levels:

Automated: no

Selections:

5.2.5: Minimize the admission of containers with allowPrivilegeEscalation

Description: None

Levels:

Automated: no

Selections:

5.2.6: Minimize the admission of root containers

Description: None

Levels:

Automated: no

Selections:

5.2.7: Minimize the admission of containers with the NET_RAW capability

Description: None

Levels:

Automated: no

Selections:

5.2.8: Minimize the admission of containers with added capabilities

Description: None

Levels:

Automated: yes

Selections:

5.2.9: Minimize the admission of containers with capabilities assigned

Description: None

Levels:

Automated: no

Selections:

5.2.10: Minimize access to privileged Security Context Constraints

Description: None

Levels:

Automated: no

Selections:

5.2: Security Context Constraints

Description: None

Levels:

Automated: no

Selections:

5.3.1: Ensure that the CNI in use supports Network Policies

Description: None

Levels:

Automated: yes

Selections:

5.3.2: Ensure that all Namespaces have Network Policies defined

Description: None

Levels:

Automated: no

Selections:

5.3: Network Policies and CNI

Description: None

Levels:

Automated: no

Selections:

5.4.1: Prefer using secrets as files over secrets as environment variables

Description: None

Levels:

Automated: no

Selections:

5.4.2: Consider external secret storage

Description: None

Levels:

Automated: no

Selections:

5.4: Secrets Management

Description: None

Levels:

Automated: no

Selections:

5.5.1: Configure Image Provenance using image controller configuration parameters

Description: None

Levels:

Automated: yes

Selections:

5.5: Extensible Admission Control

Description: None

Levels:

Automated: yes

Selections:

5.7.1: Create administrative boundaries between resources using namespaces

Description: None

Levels:

Automated: no

Selections:

5.7.2: Ensure that the seccomp profile is set to docker/default in your pod definitions

Description: None

Levels:

Automated: no

Selections:

5.7.3: Apply Security Context to Your Pods and Containers

Description: None

Levels:

Automated: no

Selections:

5.7.4: The default namespace should not be used

Description: None

Levels:

Automated: no

Selections:

5.7: General Policies

Description: None

Levels:

Automated: no

Selections:

5: Policies

Description: None

Levels:

Automated: no

Selections:

4.1.1: Ensure that the kubelet service file permissions are set to 644 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

4.1.2: Ensure that the kubelet service file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

4.1.3: If proxy kube proxy configuration file exists ensure permissions are set to 644 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

4.1.4: If proxy kubeconfig file exists ensure ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

4.1.5: Ensure that the --kubeconfig kubelet.conf file permissions are set to 644 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

4.1.6: Ensure that the --kubeconfig kubelet.conf file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

4.1.7: Ensure that the certificate authorities file permissions are set to 644 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

4.1.8: Ensure that the client certificate authorities file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

4.1.9: Ensure that the kubelet --config configuration file has permissions set to 600 or more restrictive

Description: None

Levels:

Automated: yes

Selections:

4.1.10: Ensure that the kubelet configuration file ownership is set to root:root

Description: None

Levels:

Automated: yes

Selections:

4.1: Worker Node Configuration Files

Description: None

Levels:

Automated: no

Selections:

4.2.1: Activate Garbage collection in OpenShift Container Platform 4, as appropriate

Description: None

Levels:

Automated: yes

Selections:

4.2.2: Ensure that the --anonymous-auth argument is set to false

Description: None

Levels:

Automated: yes

Selections:

4.2.3: Ensure that the --authorization-mode argument is not set to AlwaysAllow

Description: None

Levels:

Automated: yes

Selections:

4.2.4: Ensure that the --client-ca-file argument is set as appropriate

Description: None

Levels:

Automated: yes

Selections:

4.2.5: Verify that the read only port is not used or is set to 0

Description: None

Levels:

Automated: yes

Selections:

4.2.6: Ensure that the --streaming-connection-idle-timeout argument is not set to 0

Description: None

Levels:

Automated: yes

Selections:

4.2.7: Ensure that the --make-iptables-util-chains argument is set to true

Description: None

Levels:

Automated: yes

Selections:

4.2.8: Ensure that the kubeAPIQPS [--event-qps] argument is set to 0 or a level which ensures appropriate event capture

Description: None

Levels:

Automated: yes

Selections:

4.2.9: Ensure that the --tls-cert-file and --tls-private-key-file arguments are set as appropriate

Description: None

Levels:

Automated: yes

Selections:

4.2.10: Ensure that the --rotate-certificates argument is not set to false

Description: None

Levels:

Automated: yes

Selections:

4.2.11: Verify that the RotateKubeletServerCertificate argument is set to true

Description: None

Levels:

Automated: yes

Selections:

4.2.12: Ensure that the Kubelet only makes use of Strong Cryptographic Ciphers

Description: None

Levels:

Automated: yes

Selections:

4.2: Kubelet

Description: None

Levels:

Automated: no

Selections:

4: Worker Nodes

Description: None

Levels:

Automated: no

Selections: