当前位置: 首页 > news >正文

13. 安全上下文

安全上下文(Security Context)

安全上下文概念

Kubernetes 的 Security Context(安全上下文) 用于控制容器的权限和安全策略,防止容器影响宿主机或集群的安全。

可以应用的范围:

级别 作用对象
Pod-level Security Context 作用于 Pod 内所有容器及 Volume
Container-level Security Context 仅作用于指定容器,优先级高于 Pod-level
Pod Security Policies (PSP) 已废弃 集群级别安全策略,影响所有 Pod

Pod 级安全上下文示例

# security-context-pod-demo.yaml
apiVersion: v1
kind: Pod
metadata:name: security-context-pod-demo
spec:volumes:- name: sec-ctx-volemptyDir: {}securityContext:   # Pod级安全上下文runAsUser: 1000    # Pod内所有容器进程 UIDrunAsGroup: 3000   # Pod内所有容器进程 GIDfsGroup: 2000      # 挂载卷和文件所属 GIDcontainers:- name: sec-ctx-demoimage: busyboxcommand: ["sh", "-c", "sleep 60m"]volumeMounts:- name: sec-ctx-volmountPath: /pod/demosecurityContext:   # 容器级安全上下文,可覆盖 Pod-levelallowPrivilegeEscalation: false

解释

  • runAsUser:容器内进程 UID
  • runAsGroup:容器内进程 GID
  • fsGroup:挂载卷的 GID
  • allowPrivilegeEscalation:是否允许特权提升(默认 true,privileged 或 CAP_SYS_ADMIN 时强制 true)

验证:

ubuntu@ubuntu:~/example/security-context$ kubectl apply -f ./security-context-pod-demo.yaml 
pod/security-context-pod-demo created
ubuntu@ubuntu:~/example/security-context$ kubectl exec -it security-context-pod-demo -- id
uid=1000 gid=3000 groups=2000,3000
ubuntu@ubuntu:~/example/security-context$ kubectl exec -it security-context-pod-demo -- ls -la /pod/demo
total 8
drwxrwsrwx    2 root     2000          4096 Nov 17 09:57 .
drwxr-xr-x    3 root     root          4096 Nov 17 09:57 ..
ubuntu@ubuntu:~/example/security-context$ kubectl exec -it security-context-pod-demo -- top
Mem: 2186016K used, 1774888K free, 4236K shrd, 75484K buff, 1346260K cached
CPU:  2.4% usr  0.0% sys  0.0% nic 97.5% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.00 0.00 0.00 1/683 24
PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
19     0 1000     R     4568  0.1   1  0.0 top
1     0 1000     S     4436  0.1   3  0.0 sleep 60m

Linux Capabilities

Linux 将 root 权限拆分成细粒度权限,称为 Capabilities,避免 SUID 过度授权风险。

常用 Capabilities:

Capability 用途
CAP_NET_ADMIN 网络管理
CAP_SYS_TIME 设置系统时间
CAP_SYS_ADMIN 系统管理(类似特权 root)

Capabilities 集合(线程级别):

集合 作用
Permitted 可使用的最大 Capabilities
Effective 内核检查权限使用的集合
Inheritable 可被 exec 继承的 Capabilities
Bounding Inheritable 的超集,限制上限
Ambient Linux 4.3 新增,可继承给子进程

Kubernetes 配置 Capabilities

# cpb-demo.yaml
apiVersion: v1
kind: Pod
metadata:name: cpb-demo
spec:containers:- name: cpbimage: busyboxargs: ["sleep", "3600"]securityContext:capabilities:add:    # 添加- NET_ADMINdrop:   # 删除默认能力- KILL

验证:

ubuntu@ubuntu:~/example/security-context$ kubectl apply -f cpb-demo.yaml 
pod/cpb-demo created
ubuntu@ubuntu:~/example/security-context$ kubectl exec -it cpb-demo -- /bin/sh
# 验证网络功能/ # ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue qlen 1000link/ether d2:b3:6b:96:5a:c8 brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop qlen 1000link/ether b2:f2:bb:1c:96:54 brd ff:ff:ff:ff:ff:ff# 验证kill
/ # id
uid=0(root) gid=0(root) groups=0(root),10(wheel)
# 创建一个非 root 用户的后台进程
/ # adduser testuser
Changing password for testuser
New password: 
Bad password: too short
Retype password: 
passwd: password for testuser is unchanged
adduser: user 'testuser' in use
/ # su - testuser -c "sleep 1000 &"
/ # top
Mem: 2203412K used, 1757492K free, 4236K shrd, 76748K buff, 1347196K cached
CPU:  2.5% usr  0.0% sys  0.0% nic 97.4% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.05 0.01 0.00 2/683 30PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND7     0 root     S     4568  0.1   1  0.0 /bin/sh30     7 root     R     4568  0.1   1  0.0 top1     0 root     S     4436  0.1   3  0.0 sleep 360029     1 testuser S     4436  0.1   3  0.0 sleep 1000
/ # kill -9 29
sh: can't kill pid 29: Operation not permitted

特权容器(Privileged)

  • Docker/Containerd:--privileged 开启容器超级权限
  • Kubernetes:
    securityContext:
    privileged: true
    

不建议使用,获取宿主机 root 权限,安全风险极高。

http://www.gsyq.cn/news/52331.html

相关文章:

  • JavaScript手写函数
  • 2025 最新冷库建造厂家推荐!医药 / 食品 / 物流 / 小型 / 大型 / 自动化冷库建造厂家企业品牌权威排行榜
  • 2025年南京高功率密度电源公司推荐,高功率密度电源/电源模块/军用电源/全国产化电源/氢能源车载直流转换器生产直销有哪些
  • 2025 最新推荐!保定篮球俱乐部培训中心实力榜单:揭秘行业顶尖机构服务与教学优势权威指南
  • exe文件在linux
  • CAD开发-AutoCAD Code Pack 封装包
  • 常见问题 --- Bad register number passed to arm.get register value
  • 2025 年最新制氮机厂家推荐排行榜:激光切割 / 防爆 / 化工等多场景精选,技术与服务双优指南金属加工制氮机/医药农业制氮机/SMT制氮机公司推荐
  • WAN2.2-14B-Rapid-AllInOne
  • 数据库聚合函数命令
  • 6.S081 操作系统学习链接
  • 部署MeterSphere
  • Ovi: Twin Backbone Cross-Modal Fusion for Audio-Video Generation
  • 大威德
  • 2025年长沙心理咨询机构实力排名,在线/线上企业口碑排行
  • 半导体静态电性测试系统STD2000X可测试的器件种类和参数 - FORCREAT
  • 2025年美国留学中介哪家强,藤校申请/全程规划/背景提升/签证辅导/求职赋能优质机构推荐
  • UCUP Season4 Stage5 Nanjing 赛后总结
  • P14521 【MX-S11-T2】加减乘除题解
  • V8的垃圾回收器
  • 2025留学中介哪家好?厚仁/新通等5大品牌,多国联申/offer保障/名校申请/求职赋能全覆盖
  • 4th Universal Cup
  • 20232328 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • #2338. [22NOIP十连 Day 1] 数列
  • 20232308 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 04-import 和 export
  • LiveGBS GB28181监控视频平台中如何配置文字文印或图片水印,将水印叠加到播放器或视频内容中
  • Linux 项目部署
  • curtime在MySQL触发器中的使用方法
  • Frida Hook Android手册