写点什么

15 K8S 之容器安全上下文

  • 2021 年 11 月 15 日
  • 本文字数:993 字

    阅读完需:约 3 分钟

15 K8S之容器安全上下文

Kubernetes 为安全运行 Pod 及容器运行设计了安全上下文机制,该机制允许用户和管理员定义 Pod 或容器的特权与访问控制,以配置容器与主机以及主机之上的其他容器间的隔离级别。安全上下文就是一组用来决定容器是如何创建和运行的约束条件,这些条件代表创建和运行容器时使用的运行时参数。需要提升容器权限时,用户通常只应授予容器执行其工作所需的访问权限,以“最小权限法则”来抑制容器对基础架构及其他容器产生的负面影响。


自主访问控制(DAC):传统 UNIX 的访问控制机制,它允许对象(OS 级别,例如文件等)的所有者基于 UID 和 GID 设定对象的访问权限。


Linux 功能:Linux 为突破系统上传统的两级用户(root 和普通用户)授权模型,而将内核管理权限打散成多个不同维度或级别的权限子集,每个子集称为一种“功能”或“能力”,例如 CAP_NET_ADMIN、CAP_SYS_TIME、CAP_SYS_PTRACE 和 CAP_SYS_ADMIN 等,从而允许进程仅具有一部分内核管理功能就能完成必要的管理任务。


seccomp:全称为 secure computing mode,是 Linux 内核的安全模型,用于为默认可发起的任何系统调用进程施加控制机制,人为地禁止它能够发起的系统调用,有效降低了程序被劫持时的危害级别。


AppArmor:全称为 Application Armor,意为“应用盔甲”,是 Linux 内核的一个安全模块,通过加载到内核的配置文件来定义对程序的约束与控制。


SELinux:全称为 Security-Enhanced Linux,意为安全加强的 Linux,是 Linux 内核的一个安全模块,提供了包括强制访问控制在内的访问控制安全策略机制。


Privileged 模式:即特权模式容器,该模式下容器中的 root 用户拥有所有的内核功能,即具有真正的管理员权限,它能看到主机上的所有设备,能够挂载文件系统,甚至可以在容器中运行容器;容器默认运行于非特权(unprivileged)模式。


AllowPrivilegeEscalation:控制是否允许特权升级,即进程是否能够获取比父进程更多的特权;运行于特权模式或具有 CAP_SYS_ADMIN 能力的容器默认允许特权升级。


传统 UNIX 仅实现了特权和非特权两类进程,前者是指以 0 号 UID 身份运行的进程,而后者则是从属非 0 号 UID 用户的进程。Linux 内核从 2.2 版开始将附加于超级用户的权限分割为多个独立单元,这些单元是线程级别的,它们可配置在每个线程之上,为其赋予特定的管理能力。


容器中的 root 用户将默认映射为系统上的普通用户,它实际上并不具有管理网络接口、iptables 规则和路由表等相关的权限,但内核功能 NET_ADMIN 可以为其开放此类权限。


发布于: 刚刚阅读数: 4
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
15 K8S之容器安全上下文