特权和能力之间的差异



我正在尝试在securityContext中授权一个Kubernetes pod。

设置容器的能力

我按照这个文档检查了/proc/1/status并找到了一些关于pod的信息。但我发现"内部pod,似乎逻辑上我授权SYS_ADMIN和状态似乎是完美的。但这行不通。所以我试着设置特权模式,去掉了"all";功能,但它仍然不能工作(所有功能都可以在特权pod中使用)。

我检查了

  1. 所有功能没有特权
  2. 特权Pod
  3. 特权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

将允许我获得权限。

最新更新