我想检查群集中的pod是否以privileged pods
运行,这可能表示我们可能存在安全问题,因此我检查privileged: true
但是,在securityContext:
规范下,还有其他字段,如
allowPrivilegeEscalation
RunAsUser
ProcMount
Capabilities
等
这可能是有风险的(不确定),
我的问题是,如果pod被标记为privileged:false
,并且其他字段为真,如以下示例所示,这是否表明存在某些安全问题?此pod是否可以在其他pod等上执行某些操作,访问外部数据?
- 例如,**以下配置表明Pod不是特权设备,而是
allowPrivilegeEscalation: true
设备
- 例如,**以下配置表明Pod不是特权设备,而是
securityContext:
allowPrivilegeEscalation: true
privileged: false
我想知道pod配置的哪个securityContext
组合可以控制群集中的其他pods/process
?
2条答案
按热度按时间scyqe7ek1#
securityContext
更多地与容器本身和对主机的一些访问有关。allowPrivilegeEscalation
允许一个进程获得比其父进程更多的权限,这与二进制文件中的setuid/setgid标志有关,但在容器中没有什么可担心的。如果您有一个
hostPath
卷或类似的东西,允许您以/run/crio/crio.sock
或docker.sock
的身份访问.sock
文件,那么您只能从容器内部控制主机中的其他容器。很明显,如果您担心这一点,应该禁用通过网络向Docker API发出请求。当然,所有这些访问都受到DAC和MAC的限制,这就是为什么podmanuidmap更好,因为容器内的根在容器外没有相同的根ID。
从Kubernetes的Angular 来看,您不需要这种权限,您只需要一个
ServiceAccount
和正确的RBAC权限来控制Kubernetes内部的其他内容。一个ServiceAccount
绑定到一个cluster-admin
ClusterRole
可以在API中执行任何操作,甚至执行更多操作,例如向主机添加ssh密钥。如果您担心pod在Kubernetes或主机中执行某些操作,只需强制使用
nonRoot
容器,避免不加选择地使用hostPath
卷,并控制RBAC即可。Openshift默认使用了一个非常好的限制:
我没有确切地回答您想要什么,因为我将注意力转移到了RBAC上,但我希望这能给予您一个好主意。
nbewdwxp2#
严格地说,在
securityContext
的范围内(从Kubernetes 1.26 API开始),以下几点可能存在风险:当然危险
capabilities.add
将 * 添加 * Linux capabilities(如CAP_SYS_TIME
设置系统时间)到容器。默认值取决于容器运行时(例如,请参见Docker默认功能集),并且应该相当安全,但add
使用CAP_SYS_ADMIN
等功能可能存在风险。Excessive capabilities概述了一些可能的升级。privileged: true
赠款所有功能,因此您肯定要检查这一点(就像您已经做的那样)。allowPrivilegeEscalation: true
是有风险,因为它允许进程获得比其父进程更多的特权。procMount
将允许容器装载节点的/proc
并公开可感知的主机信息。windowsOptions
可能有风险。根据Kubernetes doc的说法,它 * 允许对Windows节点进行特权访问。* 我对Windows安全性了解不多,但我认为风险很大:-)可能有风险(尽管通常旨在限制权限)
runAsGroup
和runAsUser
在设置为root
/0
时可能会有风险。假设默认情况下container运行时可能已经将container作为root
运行,它通常用于将container的权限 * 限制 * 给非root
用户。但是如果您的container运行时被配置为默认情况下将container作为非root
运行,它可以被用来绕过该容器并运行具有root
的容器。seLinuxOptions
可用于提供不安全的SELinux上下文,但通常用于定义更安全的上下文。seccompProfile
定义了一个容器可以进行的系统调用。它可以用来访问敏感的系统调用,尽管它通常是为了限制它们。(可能)无风险
readOnlyRootFilesystem
(默认为false
)将使容器根系统为只读。runAsNonRoot
(默认为false
)将阻止容器作为root
运行capabilities.drop
将 * 丢弃 * Linux capabilities,从而进一步限制容器可以执行的操作。您可以阅读更多关于配置安全上下文官方文档
非安全上下文相关风险怎么办?
安全上下文并不是您应该警惕的唯一事项:您还应该考虑将卷装载到不安全的位置、RBAC、网络、机密等。Security Checklist提供了一个很好的概述。