我正在尝试在securityContext中授权一个Kubernetes pod。
设置容器的能力
我按照这个文档检查了/proc/1/status并找到了一些关于pod的信息。但我发现"内部pod,似乎逻辑上我授权SYS_ADMIN和状态似乎是完美的。但这行不通。所以我试着设置特权模式,去掉了"all";功能,但它仍然不能工作(所有功能都可以在特权pod中使用)。
我检查了
- 给所有功能没有特权
- 特权Pod
- 特权Pod删除所有功能
但是所有的进程/状态都是
CapInh: 0000003fffffffff
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
但是case 1没有任何权限挂载或查看/dev中的几个文件。
并且case 3具有挂载或查看/dev中的所有文件的所有权限(例如tty5)。
我检查了Kubernetes上的所有状态,但在Docker上仍然是一样的。
就我个人而言,我只能认为,所有的功能都不会工作(包括添加和删除),所以我想知道区别是什么。
案例1
securityContext:
capabilities:
add:
- ALL
案例2
securityContext:
privileged: true
情况3
securityContext:
privileged: true
capabilities:
drop:
- ALL
我找到了答案。这不是kubernetes内部的问题,而是node的安全选项。我在docker中测试了相同的功能选项,发现"app-armor">
在docker选项
--security-opt apparmor:unconfined
将允许我获得权限。