锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

kubernets CKS 3.3 Seccomp 限制容器进程系统调用

时间:2023-10-12 09:07:00 s21血氧传感器

对于 Linux 就用户层而言,所有与资源相关的操作都需要通过 通过系统调用完成;系统调用在技术层面上解耦, 核心只关心系统调用API不用担心谁调用。
在这里插入图片描述

Seccomp(Secure computing mode) 是一个 Linux 可用于应用过程允许的系统调用内核安全模块。
容器实际上是宿主机运行的过程。共享宿主机的核心。如果所有容器都有调用任何系统的能力,如果容器被入侵,很容易绕过容器隔离,改变宿主机的系统权限或进入宿主机。 这个可以用Seccomp机制限制容器系统的调用,有效减少攻击面。
Linux内置发行版:CentOS、Ubuntu

3.3.1 Seccomp在K8S配置

Seccomp在Kubernetes 1.3版本介绍,1.19版本成为GA版本,因此K8s中使用Seccomp以下两种方式:
? 1.19版本之前

annotations:    seccomp.security.alpha.kubernetes.io/pod: "localhost/"  

? 1.19版本

apiVersion: v1  kind: Pod  metadata:    name: hello-seccomp  spec:    securityContext:      seccompProfile:        type: Localhost        localhostProfile: > # Pod宿主机上的战略文件名,默认目录: /var/lib/kubelet/seccomp    containers:      ... 

示例:禁止使用容器chmod

mkdir /var/lib/kubelet/seccomp vi /var/lib/kubelet/seccomp/chmod.json { 
           "defaultAction": "SCMP_ACT_ALLOW",   "syscalls": [     { 
               "names": [       "chmod"     ],     "action": "SCMP_ACT_ERRNO"     }    ]  } 

seccomp基本配置文件包括三个要素:
? defaultAction:在syscalls任何未定义的部分 允许系统调用默认动作
? syscalls
? names 系统调用名称,可以换行写多个
? SCMP_ACT_ERRNO 防止系统调用

3.3.2 docker默认容器过程系统调用限制

大多数容器提供一组允许或不允许的默认系统调用。 runtime/default 注释 或将
Pod 或者上下文中容器的安全 seccomp 类型设置为 RuntimeDefault,它可以很容易地在那里 Kubernetes
默认值的应用。
Docker默认配置说明:https://docs.docker.com/engine/security/seccomp/

3.3.3 实例

在k8s21-worker01创建目录,创建目录chmod.json文件:

[root@k8s21-worker01 ~]# mkdir /var/lib/kubelet/seccomp [root@k8s21-worker01 ~]# vi /var/lib/kubelet/seccomp/chmod.json  [root@k8s21-worker01 ~]# cat /var/lib/kubelet/seccomp/chmod.json { 
           "defaultAction": "SCMP_AT_ALLOW",
  "syscalls": [
    { 
        
      "names": [
      "chmod"
    ],
    "action": "SCMP_ACT_ERRNO"
    } 
  ] 
}

生成一个创建pod的yaml文件

kubectl run busybox0708 --image=busybox:1.28.4 --dry-run="client" -o yaml -- sleep 3600 > seccomp.yaml 

修改配置seccomp.yaml ,强制调度到k8s21-worker01,并配置Seccomp相关配置

[root@k8s21-master01 ~]# cat seccomp.yaml 
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: busybox0708
  name: busybox0708
spec:
  securityContext: 
    seccompProfile: 
      type: Localhost 
      localhostProfile: chmod.json
  nodeName: k8s21-worker01
  containers:
  - args:
    - sleep
    - "3600"
    image: busybox:1.28.4
    name: busybox0708
  restartPolicy: Always
  [root@k8s21-master01 ~]# kubectl apply -f seccomp.yaml 

进入pod执行chmod, 发现没有权限

[root@k8s21-master01 ~]# kubectl exec -it busybox0708 -- sh
/ # 
/ # 
/ # touch /root/wangjinxiong.txt
/ # chmod 777 /root/wangjinxiong.txt
chmod: /root/wangjinxiong.txt: Operation not permitted
/ # 
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章