SecurityContext

更新时间:2023-07-14 20:53:09 阅读: 评论:0

SecurityContext
概述
Security Context(安全上下⽂)⽤来限制容器对宿主节点的可访问范围,以避免容器⾮法操作宿主节点的系统级别的内容,使得节点的系统或者节点上其他容器组受到影响。
Security Context可以按照如下⼏种⽅式设定:
访问权限控制:是否可以访问某个对象(例如⽂件)是基于 urID(UID)和 groupID(GID)的
Security Enhanced Linux (SELinux):为对象分配Security标签
以 privileged(特权)模式运⾏
Linux Capabilities:为容器组(或容器)分配⼀部分特权,⽽不是 root ⽤户的所有特权
AppArmor:⾃ Kubernetes v1.4 以来,⼀直处于 beta 状态
Seccomp:过滤容器中进程的系统调⽤(system call)
AllowPrivilegeEscalation(允许特权扩⼤):此项配置是⼀个布尔值,定义了⼀个进程是否可以⽐其⽗进程获得更多的特权,直接效果是,容器的进程上是否被设置 no_new_privs标记。当出现如下情况时,AllowPrivilegeEscalation 的值始终为 true:容器以 privileged 模式运⾏
容器拥有 CAP_SYS_ADMIN 的 Linux Capability英语师资培训
为Pod设置Security Context
在 Pod 的定义中增加 curityContext 字段,即可为 Pod 指定 Security 相关的设定。 curityContext 字段是⼀个 PodSecurityContext 对象。通过该字段指定的内容将对该 Pod 中所有的容器⽣效
Pod⽰例
apiVersion: v1
kind: Pod
metadata:
name: curity-context-demo
spec:
curityContext:
runAsUr: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: c-ctx-vol
emptyDir: {}
containers:
- name: c-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
volumeMounts:
- name: c-ctx-vol
mountPath: /data/demo
curityContext:
williamshakespeare
allowPrivilegeEscalation: fal
spec.curityContext.runAsUr 字段指定了该 Pod 中所有容器的进程都以UrID 1000 的⾝份运
⾏,spec.curityContext.runAsGroup 字段指定了该 Pod 中所有容器的进程都以GroupID 3000 的⾝份运⾏
如果该字段被省略,容器进程的GroupID为 root(0)
容器中创建的⽂件,其所有者为 urID 1000,groupID 3000
spec.curityContext.fsGroup 字段指定了该 Pod 的 fsGroup 为 2000
数据卷(本例中,对应挂载点 /data/demo 的数据卷为 c-ctx-demo)的所有者以及在该数据卷下创建的任何⽂件,其 GroupID 为 2000
为容器设置Security Context
容器的定义中包含 curityContext 字段,该字段接受 SecurityContext对象。通过指定该字段,可以为容器设定安全相关的配置,当该字段的配置与 Pod 级别的 curityContext 配置相冲突时,容器级别的配置将覆盖 Pod 级别的配置。容器级别的 curityContext 不影响 Pod 中的数据卷。
下⾯的⽰例中的 Pod 包含⼀个 Container,且 Pod 和 Container 都有定义 curityContext 字段:
apiVersion: v1
kind: Pod
metadata:
name: curity-context-demo-2
newsletter
spec:
curityContext:
runAsUr: 1000
containers:
- name: c-ctx-demo-2
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
curityContext:
runAsUr: 2000
allowPrivilegeEscalation: fal
请注意,容器的进程以 urID 2000 的⾝份运⾏。该取值由 ainers[*].curityContext.runAsUr 容器组中的字段定义。Pod 中定义的 spec.curityContext.runAsUr 取值 1000 被覆盖。
chinaman为容器设置Linux Capabilities
使⽤ Linux Capabilities 可以为容器内的进程授予某些特定的权限(⽽不是 root ⽤户的所有权限)。在容器定义的 curityContext 中添加capabilities 字段,可以向容器添加或删除 Linux Capability。
cutdown先运⾏⼀个不包含 capabilities 字段的容器,观察容器内进程的 linux capabilities 位图的情况;然后在运⾏⼀个包含 capabilities 字段的容器,⽐较其 linux capabilities 位图与前者的不同。
⽆capabilities字段时
先确认在没有 capabilities 字段时,容器的⾏为是怎样的。下⾯的例⼦中包含⼀个容器,我们没有为其添加或删除任何 Linux capability。apiVersion: v1
kind: Pod
metadata:
name: curity-context-demo-3
spec:
containers:
- name: c-ctx-demo-3
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
在容器的命令⾏界⾯中查看 process 1 的状态
# cat /proc/1/status
CapPrm: 00000000a80425fb
CapEff: 00000000a80425fb
有capabilities字段时
运⾏同样的⼀个容器,不同的是,这次为其设置了 capabilities 字段。下⾯是 yaml 配置⽂件,该配置中为进程添加了两个 Linux Capability: CAP_NET_ADMIN 和 CAP_SYS_TIME:
apiVersion: v1
重阳节用英语怎么说kind: Pod
metadata:
name: curity-context-demo-4湖北省2014高考分数线
spec:
containers:t up
- name: c-ctx-demo-4
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
curityContext:
capabilities:
add: ["NET_ADMIN", "SYS_TIME"]
在容器的命令⾏界⾯中查看 process 1 的状态
# cat /proc/1/status
CapPrm: 00000000aa0435fb
CapEff: 00000000aa0435fb
⽐较两次运⾏,进程的 Linux Capabilities 位图的差异:
第⼀次运⾏:00000000a80425fb
第⼆次运⾏:00000000aa0435fb
第⼀次运⾏时,位图的 12 位和 25 为是 0。第⼆次运⾏时,12 位和 25 位是 1.查看 Linux Capabilities 的常量定义⽂件 capability.h 可知:12 位代表 CAP_NET_ADMIN,25 位代表 CAP_SYS_TIME。
新宝来广告歌LinuxCapability常量
Linux Capabilities 常量格式为 CAP_XXX。然⽽,在容器定义中添加或删除 Linux Capabilities 时,必须去除常量的前缀tubecup
CAP_。例如:向容器中添加 CAP_SYS_TIME 时,只需要填写 SYS_TIME。
为容器设置SELinux标签
Pod 或容器定义的 curityContext 中 LinuxOptions 字段是⼀个 SELinuxOptions 对象,该字段可⽤于为容器指定 SELinux 标签。curityContext:
LinuxOptions:
level: "s0:c123,c456"
为容器指定 SELinux 标签时,宿主节点的 SELinux 模块必须加载。
Kuboard中Pod的Security Context
通过 Kuboard,可以直接设定 Deployment、StatefulSet、DaemonSet 等中 Pod 模板的 curityContext 的内容。在 Kuboard ⼯作负载编辑器界⾯中切换到⾼级设置标签页,并勾选容器组安全上下⽂,可查看到 Pod 的 Security Context 设置界⾯,如下图所⽰:
各个字段的含义逐个解释如下:
Kuboard中容器的Security Context
在 Kuboard ⼯作负载编辑器界⾯中切换到容器信息标签页,并勾选容器安全上下⽂,可查看到容器的 Security Context 设置界⾯,如下图所⽰:
各个字段的含义逐个解释如下:

本文发布于:2023-07-14 20:53:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1096725.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:容器   字段   进程   节点   定义   标签   位图   常量
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图