我们为什么不允许非root用户在CentOS直接运行Docker命令

我们为什么不允许非root用户在CentOS直接运行Docker命令

作者:翻译:刘凯 2015-08-17 10:16:00

云计算 这篇文章介绍了不用sudo而直接运行Docker命令所存在的安全漏洞,并强烈建议通过设置sudo规则作为暂时的解决方法。

容器技术***的弱点是安全性不足,Docker也不例外。因此,如何加强Docker的安全性是每一个Docker用户必须慎重考虑的问题。这篇文章介绍了不用sudo而直接运行Docker命令所存在的安全漏洞,并强烈建议通过设置sudo规则作为暂时的解决方法。

[[145457]]

我经常会收到用户反馈的Bug,他们问我们『为什么默认情况下不能使用非root用户直接运行Docker命令』。

Docker能够将/run/docker.socket的文件访问权限设为660,并将其所属的用户组设为docker。 这使得非root用户只要加入docker用户组,就无需使用sudo,或者通过su命令切换到root用户的情况下运行Docker命令。这听起来很不错。

 

  1. ls -l /var/run/docker.sock  
  2. srw-rw----. 1 root docker 0 Aug  3 13:02 /var/run/docker.sock 

 

但是,在RHEL、Fedora和CentOS上,我们更喜欢将doker.socket设置为:

 

  1. ls -l /var/run/docker.sock  
  2. srw-rw----. 1 root root 0 Aug  3 13:02 /var/run/docker.sock 

 

为什么呢?原因很简单:如果用户可以与Docker Socket通信,他们就能够执行以下命令:

 

  1. docker run -ti --privileged -v /:/host fedora chroot /host 

这时用户将拥有主机的完全控制权。这就相当于将sudoers文件修改为以下内容(译者注:dwalsh为用户名):

 

  1. grep dwalsh /etc/sudoers 
  2. dwalsh  ALL=(ALL)   NOPASSWD: ALL 

 

这将允许(dwalsh)用户无密码运行所有命令,获得主机的完全控制权。但是这有一个很大的安全漏洞。Docker命令没有内置的审计和日志功能,但是sudo有。

Docker目前会记录事件,但是Docker daemon重启时事件会消失。Docker目前没有审计功能。

从安全性的角度,红帽已经表达了允许非root用户在没有审计(auditing)和适当的日志的情况下访问Docker Daemon的顾虑。我们已经在PR14446实现了这些控制,它依靠了一个认证机制,但这个机制还在讨论中。在我们实现了审计和日志功能之前,我们推荐通过设置sudo规则来访问Docker Daemon。这将允许sudo来提供审计和日志功能。

设置sudo规则

如果你希望非root用户能够直接执行Docker命令,我们推荐通过设置sudo规则来实现。下面是设置Docker规则的简单教程。

在/ect/sudoers中添加以下内容: [译者注:使用visudo命令修改]

 

  1. grep dwalsh /etc/sudoers 
  2. dwalsh        ALL=(ALL)       NOPASSWD: /usr/bin/docker 

 

这允许特定用户无需密码直接执行Docker命令。

注意:我并不推荐使用NOPASSWD,这可能会导致你的系统中的任意进程都能获取root权限。如果你要求使用密码,则用户在运行Docker命令时需要输入密码,这将使得系统稍微安全一点。如果执行命令时输入了一次密码,则sudo将允许你在5分钟内再次运行Docker命令时不再需要输入密码。

紧接着,为Docker命令设置别名。

 

  1. alias docker="sudo /usr/bin/docker" 

现在,非root用户将被允许直接执行Docker命令(译者注:不需要使用sudo),并且记录了日志。

 

  1. docker run -ti --privileged -v /:/host fedora chroot /host 

查看journal日志或者/var/log信息:

 

  1. journalctl -b | grep docker.*privileged 
  2. Aug 04 09:02:56 dhcp-10-19-62-196.boston.devel.redhat.com sudo[23422]:   dwalsh : TTY=pts/3  

 

查看审计日志:

  1. ausearch -m USER_ROLE_CHANGE -i 
  2. type=USER_ROLE_CHANGE msg=audit(08/04/2015 09:02:56.514:1460) : pid=23423 uid=root auid=dwalsh ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='newrole: old-context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 
  3. new-context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 exe=/usr/bin/sudo hostname=? addr=? terminal=/dev/pts/3 res=success' 

#p#

更强的安全性

如果你打算只允许用户访问一个特定的容器,你可以写一个简单的脚本:

 

  1. cat /usr/bin/docker-fedora 
  2. #!/bin/sh 
  3. docker run -ti --rm fedora /bin/sh 

 

写好脚本之后,配置sudoers:

 

  1. grep dwalsh /etc/sudoers 
  2. dwalsh        ALL=(ALL)       NOPASSWD: /usr/bin/docker-fedora 

 

这个用户将仅能在没有权限限制下运行Fedora容器。

认证

我们还在开发其它程序补丁来增强Docker Daemon安全性,其中包括认证方面。我们有一个正在讨论的问题#13697“为Docker增加kerberos支持”。

授权

我们还提议为Docker增加授权/RBAC(基于角色的访问控制),这样管理员就可以控制哪些用户可以使用哪些容器/镜像进行哪些活动。如果你想查看这个提议或者评论或者提出建议,提议地址为:GitHub: rhatdan/docker-rbac。

结论

如果需要支持非root用户直接运行Docker命令之前,那Docker Daemon的安全性还需要很多改进。但在这些改进实现之前,设置sudo规则是***的选择。我们正在开发更好的解决方案,暂时我们仍然强烈推荐使用sudo。

原文链接:dockone.io/article/589

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/276138.html<

(0)
管理的头像管理
上一篇2025-05-10 12:42
下一篇 2025-05-10 12:43

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注