mirror of
https://github.com/kyverno/kyverno.git
synced 2024-12-14 11:57:48 +00:00
update categories and links
This commit is contained in:
parent
8ac71a885c
commit
31d33c5de1
20 changed files with 23 additions and 21 deletions
|
@ -4,6 +4,8 @@ Tiller has known security challenges. It requires adminstrative privileges and a
|
||||||
|
|
||||||
## Policy YAML
|
## Policy YAML
|
||||||
|
|
||||||
|
[disallow_helm_tiller.yaml](best_practices/disallow_helm_tiller.yaml)
|
||||||
|
|
||||||
````yaml
|
````yaml
|
||||||
apiVersion : kyverno.io/v1alpha1
|
apiVersion : kyverno.io/v1alpha1
|
||||||
kind: ClusterPolicy
|
kind: ClusterPolicy
|
||||||
|
|
|
@ -12,7 +12,7 @@ These policies are highly recommended.
|
||||||
2. [Disallow privileged containers](DisallowPrivilegedContainers.md)
|
2. [Disallow privileged containers](DisallowPrivilegedContainers.md)
|
||||||
3. [Disallow new capabilities](DisallowNewCapabilities.md)
|
3. [Disallow new capabilities](DisallowNewCapabilities.md)
|
||||||
4. [Disallow kernel parameter changes](DisallowSysctls.md)
|
4. [Disallow kernel parameter changes](DisallowSysctls.md)
|
||||||
5. [Disallow use of bind mounts (`hostPath` volumes)](DisallowHostFS.md)
|
5. [Disallow use of bind mounts (`hostPath` volumes)](DisallowBindMounts.md)
|
||||||
6. [Disallow docker socket bind mount](DisallowDockerSockMount.md)
|
6. [Disallow docker socket bind mount](DisallowDockerSockMount.md)
|
||||||
7. [Disallow `hostNetwork` and `hostPort`](DisallowHostNetworkPort.md)
|
7. [Disallow `hostNetwork` and `hostPort`](DisallowHostNetworkPort.md)
|
||||||
8. [Disallow `hostPID` and `hostIPC`](DisallowHostPIDIPC.md)
|
8. [Disallow `hostPID` and `hostIPC`](DisallowHostPIDIPC.md)
|
||||||
|
@ -22,13 +22,13 @@ These policies are highly recommended.
|
||||||
12. [Require read-only root filesystem](RequireReadOnlyRootFS.md)
|
12. [Require read-only root filesystem](RequireReadOnlyRootFS.md)
|
||||||
13. [Require pod resource requests and limits](RequirePodRequestsLimits.md)
|
13. [Require pod resource requests and limits](RequirePodRequestsLimits.md)
|
||||||
14. [Require pod `livenessProbe` and `readinessProbe`](RequirePodProbes.md)
|
14. [Require pod `livenessProbe` and `readinessProbe`](RequirePodProbes.md)
|
||||||
15. [Add default network policy](DefaultDenyAllIngress.md)
|
15. [Add default network policy](AddDefaultNetworkPolicy.md)
|
||||||
16. [Add namespace resource quotas](AddNamespaceResourceQuota.md)
|
16. [Add namespace resource quotas](AddNamespaceResourceQuota.md)
|
||||||
17. [Add `safe-to-evict` for pods with `emptyDir` and `hostPath` volumes](AddSafeToEvict.md)
|
17. [Add `safe-to-evict` for pods with `emptyDir` and `hostPath` volumes](AddSafeToEvict.md)
|
||||||
|
|
||||||
## Additional Policies
|
## Additional Policies
|
||||||
|
|
||||||
The policies provide additional best practices and are worthy of close consideration. These policies may require specific changes for your workloads and environments.
|
These policies provide additional best practices and are worthy of close consideration. These policies may require specific changes for your workloads and environments.
|
||||||
|
|
||||||
17. [Restrict image registries](RestrictImageRegistries.md)
|
17. [Restrict image registries](RestrictImageRegistries.md)
|
||||||
18. [Restrict `NodePort` services](RestrictNodePort.md)
|
18. [Restrict `NodePort` services](RestrictNodePort.md)
|
||||||
|
|
|
@ -4,7 +4,7 @@ Kubernetes automatically mounts service account credentials in each pod. The ser
|
||||||
|
|
||||||
## Policy YAML
|
## Policy YAML
|
||||||
|
|
||||||
[restrict_automount_sa_token.yaml](best_practices/restrict_automount_sa_token.yaml)
|
[restrict_automount_sa_token.yaml](more/restrict_automount_sa_token.yaml)
|
||||||
|
|
||||||
````yaml
|
````yaml
|
||||||
apiVersion : kyverno.io/v1alpha1
|
apiVersion : kyverno.io/v1alpha1
|
||||||
|
|
|
@ -6,7 +6,7 @@ You can customize this policy to allow image registries that you trust.
|
||||||
|
|
||||||
## Policy YAML
|
## Policy YAML
|
||||||
|
|
||||||
[restrict_image_registries.yaml](best_practices/restrict_image_registries.yaml)
|
[restrict_image_registries.yaml](more/restrict_image_registries.yaml)
|
||||||
|
|
||||||
````yaml
|
````yaml
|
||||||
apiVersion : kyverno.io/v1alpha1
|
apiVersion : kyverno.io/v1alpha1
|
||||||
|
|
|
@ -4,7 +4,7 @@ It can be useful to restrict Ingress resources to a set of known ingress classes
|
||||||
|
|
||||||
## Policy YAML
|
## Policy YAML
|
||||||
|
|
||||||
[restrict_ingress_classes.yaml](best_practices/restrict_ingress_classes.yaml)
|
[restrict_ingress_classes.yaml](more/restrict_ingress_classes.yaml)
|
||||||
|
|
||||||
````yaml
|
````yaml
|
||||||
apiVersion : kyverno.io/v1alpha1
|
apiVersion : kyverno.io/v1alpha1
|
||||||
|
|
|
@ -8,7 +8,7 @@ Although NodePort services can be useful, their use should be limited to service
|
||||||
|
|
||||||
## Policy YAML
|
## Policy YAML
|
||||||
|
|
||||||
[restrict_node_port.yaml](best_practices/restrict_node_port.yaml)
|
[restrict_node_port.yaml](more/restrict_node_port.yaml)
|
||||||
|
|
||||||
````yaml
|
````yaml
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: add-networkpolicy
|
name: add-networkpolicy
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: NetworkPolicy
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: By default, Kubernetes allows communications across
|
policies.kyverno.io/description: By default, Kubernetes allows communications across
|
||||||
all pods within a cluster. Network policies and, a CNI that supports network policies,
|
all pods within a cluster. Network policies and, a CNI that supports network policies,
|
||||||
must be used to restrict communinications. A default NetworkPolicy should be configured
|
must be used to restrict communinications. A default NetworkPolicy should be configured
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: add-ns-quota
|
name: add-ns-quota
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Isolation
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: To limit the number of objects, as well as the
|
policies.kyverno.io/description: To limit the number of objects, as well as the
|
||||||
total amount of compute that may be consumed by a single namespace, create
|
total amount of compute that may be consumed by a single namespace, create
|
||||||
a default resource quota for each namespace.
|
a default resource quota for each namespace.
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "add-safe-to-evict"
|
name: "add-safe-to-evict"
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: AutoScaling
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: The Kubernetes cluster autoscaler does not evict pods that
|
policies.kyverno.io/description: The Kubernetes cluster autoscaler does not evict pods that
|
||||||
use hostPath or emptyDir volumes. To allow eviction of these pods, the annotation
|
use hostPath or emptyDir volumes. To allow eviction of these pods, the annotation
|
||||||
cluster-autoscaler.kubernetes.io/safe-to-evict=true must be added to the pods.
|
cluster-autoscaler.kubernetes.io/safe-to-evict=true must be added to the pods.
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: "ClusterPolicy"
|
||||||
metadata:
|
metadata:
|
||||||
name: "disallow-bind-mounts"
|
name: "disallow-bind-mounts"
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Data Protection
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: The volume of type `hostPath` allows pods to use host bind
|
policies.kyverno.io/description: The volume of type `hostPath` allows pods to use host bind
|
||||||
mounts (i.e. directories and volumes mounted to a host path) in containers. Using host
|
mounts (i.e. directories and volumes mounted to a host path) in containers. Using host
|
||||||
resources can be used to access shared data or escalate priviliges. Also, this couples pods
|
resources can be used to access shared data or escalate priviliges. Also, this couples pods
|
||||||
|
|
|
@ -2,7 +2,7 @@ apiVersion: kyverno.io/v1alpha1
|
||||||
kind: ClusterPolicy
|
kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: disallow-default-namespace
|
name: disallow-default-namespace
|
||||||
policies.kyverno.io/category: Isolation
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: Kubernetes namespaces are an optional feature
|
policies.kyverno.io/description: Kubernetes namespaces are an optional feature
|
||||||
that provide a way to segment and isolate cluster resources across multiple
|
that provide a way to segment and isolate cluster resources across multiple
|
||||||
applications and users. As a best practice, workloads should be isolated with
|
applications and users. As a best practice, workloads should be isolated with
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: host-network-port
|
name: host-network-port
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Security
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: Using 'hostPort' and 'hostNetwork' allows pods to share
|
policies.kyverno.io/description: Using 'hostPort' and 'hostNetwork' allows pods to share
|
||||||
the host network stack, allowing potential snooping of network traffic from an application pod.
|
the host network stack, allowing potential snooping of network traffic from an application pod.
|
||||||
spec:
|
spec:
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: disallow-host-pid-ipc
|
name: disallow-host-pid-ipc
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Security
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: Sharing the host's PID namespace allows visibility of process
|
policies.kyverno.io/description: Sharing the host's PID namespace allows visibility of process
|
||||||
on the host, potentially exposing process information. Sharing the host's IPC namespace allows
|
on the host, potentially exposing process information. Sharing the host's IPC namespace allows
|
||||||
the container process to communicate with processes on the host. To avoid pod container from
|
the container process to communicate with processes on the host. To avoid pod container from
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: disallow-latest-tag
|
name: disallow-latest-tag
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Image
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: The ':latest' tag is mutable and can lead to
|
policies.kyverno.io/description: The ':latest' tag is mutable and can lead to
|
||||||
unexpected errors if the image changes. A best practice is to use an immutable
|
unexpected errors if the image changes. A best practice is to use an immutable
|
||||||
tag that maps to a specific version of an application pod.
|
tag that maps to a specific version of an application pod.
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: require-pod-requests-limits
|
name: require-pod-requests-limits
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Resource Quota
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: As application workloads share cluster resources, it is important
|
policies.kyverno.io/description: As application workloads share cluster resources, it is important
|
||||||
to limit resources requested and consumed by each pod. It is recommended to require
|
to limit resources requested and consumed by each pod. It is recommended to require
|
||||||
'resources.requests' and 'resources.limits' per pod. If a namespace level request or limit is
|
'resources.requests' and 'resources.limits' per pod. If a namespace level request or limit is
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: require-pod-probes
|
name: require-pod-probes
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Health
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: Liveness and readiness probes need to be configured to
|
policies.kyverno.io/description: Liveness and readiness probes need to be configured to
|
||||||
correctly manage a pods lifecycle during deployments, restarts, and upgrades. For each
|
correctly manage a pods lifecycle during deployments, restarts, and upgrades. For each
|
||||||
pod, a periodic `livenessProbe` is performed by the kubelet to determine if the pod's
|
pod, a periodic `livenessProbe` is performed by the kubelet to determine if the pod's
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: require-ro-rootfs
|
name: require-ro-rootfs
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Security Context
|
policies.kyverno.io/category: Security
|
||||||
policies.kyverno.io/description: A read-only root file system helps to enforce an immutable
|
policies.kyverno.io/description: A read-only root file system helps to enforce an immutable
|
||||||
infrastructure strategy; the container only needs to write on the mounted volume that p
|
infrastructure strategy; the container only needs to write on the mounted volume that p
|
||||||
ersists the state. An immutable root filesystem can also prevent malicious binaries from
|
ersists the state. An immutable root filesystem can also prevent malicious binaries from
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: restrict-image-registries
|
name: restrict-image-registries
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Image
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: Images from unknown registries may not be scanned and secured.
|
policies.kyverno.io/description: Images from unknown registries may not be scanned and secured.
|
||||||
Requiring use of known registries helps reduce threat exposure.
|
Requiring use of known registries helps reduce threat exposure.
|
||||||
spec:
|
spec:
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: restrict-ingress-classes
|
name: restrict-ingress-classes
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Ingress
|
policies.kyverno.io/category: Workload Management
|
||||||
policies.kyverno.io/description: It can be useful to restrict Ingress resources to a set of
|
policies.kyverno.io/description: It can be useful to restrict Ingress resources to a set of
|
||||||
known ingress classes that are allowed in the cluster. You can customize this policy to
|
known ingress classes that are allowed in the cluster. You can customize this policy to
|
||||||
allow ingress classes that are configured in the cluster.
|
allow ingress classes that are configured in the cluster.
|
||||||
|
|
|
@ -3,7 +3,7 @@ kind: ClusterPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: restrict-nodeport
|
name: restrict-nodeport
|
||||||
annotations:
|
annotations:
|
||||||
policies.kyverno.io/category: Security
|
policies.kyverno.io/category: Workload Isolation
|
||||||
policies.kyverno.io/description: A Kubernetes service of type NodePort uses a
|
policies.kyverno.io/description: A Kubernetes service of type NodePort uses a
|
||||||
host port to receive traffic from any source. A 'NetworkPolicy' resource cannot be used
|
host port to receive traffic from any source. A 'NetworkPolicy' resource cannot be used
|
||||||
to control traffic to host ports. Although 'NodePort' services can be useful, their use
|
to control traffic to host ports. Although 'NodePort' services can be useful, their use
|
||||||
|
|
Loading…
Reference in a new issue