美文网首页
K8s pod security policy(PSP)

K8s pod security policy(PSP)

作者: jaymz明 | 来源:发表于2021-04-14 15:15 被阅读0次

K8s最近更新了v1.21,说会把PSP会移除掉,完全移除在v1.25版本。再不学习它就学不到了https://kubernetes.io/docs/concepts/policy/pod-security-policy/

什么是PSP : Pod Security Policy 是 kubernetes中一种集群级别的资源,它定义了用户能否在Pod中使用各种安全相关的特性,举例来说PSP可以做的事情:

是否允许Pod使用宿主节点的PID,IPC,网络命名空间
Pod是否允许绑定到宿主节点端口
容器运行时允许使用的用户ID
是否允许特权模式的POD

image.png

首先要在api-server里面启用:--enable-admission-plugins=PodSecurityPolicy

什么叫特权模式容器:默认情况下,容器是不允许访问主机上的任何设备。但是特权容器被赋予了权限。有助于容器使用linux的一些特性。

创建一个允许创建特权的PodSecurityPolicy:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: privileged   
spec:
  privileged: true   -----允许创建特权容器
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  volumes:
  - '*'

创建一个不允许特权的PodSecurityPolicy:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: default
spec:
  hostIPC: false
  hostPID: false
  hostNetwork: false
  hostPorts:
  - min: 10000
    max: 11000
  - min: 13000
    max: 14000
  privileged: false        ----不允许部署特权容器
  readOnlyRootFilesystem: true
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  volumes:
  - '*'

特权pod需要在yaml里指定:

securityContext:
     privileged: true

kubectl create -f privileged.yaml/default.yaml
将psp绑定到clusterrole。

kubectl create clusterrole psp-default --verb=use --resource=podsecuritypolicies --resource-name=default // 不能创建特权
kubectl create clusterrole psp-privilege --verb=use --resource=podsecuritypolicies --resource-name=privilege

将用户和clusterrole绑定。
kubectl create clusterrolebinding psp-all-user --clusterrole=psp-default --group=system:authenticated
kubectl create clusterrolebinding psp-jaymz --clusterrole=psp-privilege --user=jaymz
那么只有用户jaymz才能创建特权pod。

kubectl --user jaymz create -f xxx.yaml来验证是否能够创建。

相关文章

网友评论

      本文标题:K8s pod security policy(PSP)

      本文链接:https://www.haomeiwen.com/subject/ykjklltx.html