美文网首页
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