Objects of type podsecuritypolicy
govern the ability
to make requests on a pod that affect the SecurityContext
that will be
applied to a pod and container.
See PodSecurityPolicy proposal for more information.
A Pod Security Policy is a cluster-level resource that controls the
actions that a pod can perform and what it has the ability to access. The
PodSecurityPolicy
objects define a set of conditions that a pod must
run with in order to be accepted into the system. They allow an
administrator to control the following:
Pod Security Policies are comprised of settings and strategies that control the security features a pod has access to. These settings fall into three categories:
*range*
to be configured. Uses the first value
of the range as the default. Validates against the configured range.*runAsUser*
or have the USER
directive defined in the image. No default
provided.*runAsUser*
to be specified.*seLinuxOptions*
to be configured if not using
pre-allocated values. Uses *seLinuxOptions*
as the default. Validates against
*seLinuxOptions*
.*seLinuxOptions*
to be
specified.*supplementalGroups*
to be
specified.*fsGroup*
ID to be specified.The usage of specific volume types can be controlled by setting the volumes field of the PSP. The allowable values of this field correspond to the volume sources that are defined when creating a volume:
The recommended minimum set of allowed volumes for new PSPs are configMap, downwardAPI, emptyDir, persistentVolumeClaim, and secret.
Admission control with PodSecurityPolicy
allows for control over the creation of resources
based on the capabilities allowed in the cluster.
Admission uses the following approach to create the final security context for the pod:
If a matching policy is found, then the pod is accepted. If the request cannot be matched to a PSP, the pod is rejected.
A pod must validate every field against the PSP.
Here is an example Pod Security Policy. It has permissive settings for all fields
psp.yaml |
---|
|
Create the policy by downloading the example file and then running this command:
$ kubectl create -f ./psp.yaml
podsecuritypolicy "permissive" created
Once you don’t need a policy anymore, simply delete it with kubectl
:
$ kubectl delete psp permissive
podsecuritypolicy "permissive" deleted
In order to use Pod Security Policies in your cluster you must ensure the following
extensions/v1beta1/podsecuritypolicy
PodSecurityPolicy