24、容器安全:非根用户容器与准入控制器实践

非根用户容器与准入控制器实践

容器安全:非根用户容器与准入控制器实践

1. 非根用户容器概述

在容器部署中,一个常见的安全建议是不以根用户身份运行容器。这是因为尽管 Linux 容器经过了精心封装,但本质上它们只是应用了沙箱技术(如 Linux cgroups 和命名空间)在主机上运行的进程。若容器以根用户(默认设置)构建并运行,它实际上会以根用户身份在节点上运行,只是处于沙箱环境中。沙箱虽能限制进程的根权限,但当底层 Linux 容器化技术存在“容器逃逸”漏洞时,沙箱内的容器进程可能获得与运行用户相同的权限。若容器以根用户运行,容器逃逸将使攻击者获得节点的完全根访问权限,这是非常危险的。

Docker 默认以根用户运行所有进程,这意味着任何容器逃逸漏洞都可能引发安全问题。为遵循“纵深防御”的安全原则,最好采取措施防范此类风险。纵深防御意味着即使容器隔离能在应用程序被攻破时保护主机,也应设置更多防御层,以防隔离机制被突破。在此场景下,以非根用户运行容器就是额外的防御层,即使攻击者攻破容器并利用 Linux 中的容器逃逸漏洞,也无法获得节点的提升权限,还需利用其他漏洞才能提升权限,从而形成了应用程序、Linux 容器化和 Linux 用户权限三层防御。

Docker 默认使用根用户构建容器是为了方便开发者。以根用户身份在容器中操作,开发者可以使用特权端口(端口号低于 1024,如默认的 HTTP 端口 80),且无需处理文件夹权限问题。然而,以非根用户构建和运行容器可能会引入一些需要解决的错误。但如果从一开始就采用这一原则,解决这些问题可能并不困难,并且能为系统增加一层防御。

2. 在 Kubernetes 中防止容器以根用户运行

在 Kubernetes 中,防止容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值