如何在pod级别进行安全的设置,设置容器的运行用户、用户组、挂载数据卷的权限?

发布时间 2023-07-25 17:09:31作者: 安大

通过下面的yaml配置文件,在pod级别进行安全的设置:

 

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 3000
    fsGroup: 2000
  volumes:
  - name: sec-ctx-vol
    emptyDir: {}
  containers:
  - name: sec-ctx-demo
    image: 172.20.58.152/middleware/busybox:1.36
    command: [ "sh", "-c", "sleep 1h" ]
    volumeMounts:
    - name: sec-ctx-vol
      mountPath: /data/demo
    securityContext:
      allowPrivilegeEscalation: false

 

 

在pod的securityContext的部分,设置:

    runAsUser: 1000  # 用户ID
    runAsGroup: 3000 # 用户组ID
    fsGroup: 2000    # 文件挂载组ID

 

 

创建pod,并且进入容器:

 

运行的用户、用户组

~ $ id
uid=1000 gid=3000 groups=2000
~ $ 

 

 

程序以id 1000运行

~ $ ps aux
PID   USER     TIME  COMMAND
    1 1000      0:00 sh -c sleep 1h
   13 1000      0:00 sh
   20 1000      0:00 ps aux
~ $ 

 

 

数据卷,挂载所在用户组是2000

~ $ cd /data
/data $ ls
demo
/data $ ls -l
total 4
drwxrwsrwx    2 root     2000          4096 Jul 25 08:22 demo
# 默认是 root用户,2000用户组

/data $ cd demo/
/data/demo $ ls

# 新建文件,用户ID 1000,用户组 2000
/data/demo $ touch tesdt01
/data/demo $ ls
tesdt01
/data/demo $ ls -l
total 0
-rw-r--r--    1 1000     2000             0 Jul 25 08:24 tesdt01
/data/demo $