Openshift - SCC

本页面的原作者是 Guillaume

定义

在OpenShift的上下文中,SCC代表Security Context Constraints。安全上下文约束是控制在OpenShift集群上运行的Pod权限的策略。它们定义了Pod被允许运行的安全参数,包括它可以执行的操作和可以访问的资源。

SCC帮助管理员跨集群强制执行安全策略,确保Pod以适当的权限运行并遵守组织的安全标准。这些约束可以指定Pod安全的各个方面,例如:

  1. Linux功能:限制容器可用的功能,例如执行特权操作的能力。

  2. SELinux上下文:强制容器的SELinux上下文,定义进程如何与系统上的资源交互。

  3. 只读根文件系统:防止容器修改特定目录中的文件。

  4. 允许的主机目录和卷:指定Pod可以挂载哪些主机目录和卷。

  5. 作为UID/GID运行:指定容器进程运行的用户和组ID。

  6. 网络策略:控制Pod的网络访问,例如限制出站流量。

通过配置SCC,管理员可以确保Pod以适当的安全隔离级别和访问控制运行,降低集群内安全漏洞或未经授权访问的风险。

基本上,每次请求Pod部署时,都会执行一个准入过程,如下所示:

默认情况下,这一额外的安全层禁止创建特权Pod、挂载主机文件系统或设置可能导致特权升级的任何属性。

Pod Escape Privileges

列出SCC

使用Openshift客户端列出所有SCC:

$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

所有用户都可以访问默认的SCC "restricted" 和 "restricted-v2",这是最严格的SCC。

使用SCC

用于pod的SCC在注释中定义:

$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

当用户可以访问多个SCC时,系统将利用与安全上下文值对齐的那个。否则,将触发禁止错误。

$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

SCC绕过

OpenShift - SCC bypass

参考

Last updated