Docker:以非 root 用户运行 Telegraf

导航至

Telegraf 1.20.3 版本发布,将官方 Telegraf DockerHub 镜像中的 Telegraf 服务不再以 root 用户身份运行。此更改使得 Telegraf 服务在容器中以最低权限运行,以增强安全性,考虑到 Telegraf 具有广泛的可扩展性和丰富的插件。

《Docker 的最佳实践》和《互联网安全中心 (CIS) Docker 基准》都鼓励以非 root 用户身份运行容器,以限制容器的可利用性和对宿主系统的影响。此更改是为了与这些建议保持一致,并进一步增强在容器中运行 Telegraf 的安全性和体验。

我们理解在维护版本中做出这种更改既出乎意料,也可能导致不良后果。在收到关于 初始更改 的初步反馈后,我们对实现进行了 额外更新,以减少对用户的影响,并广泛宣传此更改。Telegraf 1.20.3、1.19.3 和 1.18.3 的 DockerHub 镜像都进行了第二次更新。

此更改的结果可能要求用户修改使用 Telegraf Docker 镜像的方式。用户需要确保运行 Telegraf 服务的 telegraf 用户或 telegraf 组可以访问操作所需的任何附加服务、套接字、文件等。用户可以使用标准命令(如 usermod 将 telegraf 用户添加到组或 chown 更改文件的所有权)来授予访问权限。

用户仍然可以使用 DockerHub 镜像安装额外的包或配置服务。

如果用户将 Telegraf 的 Docker 套接字传递给用于监控 Docker 自身的 Telegraf,则他们需要将 telegraf 用户添加到拥有 Docker 套接字的组。一种实现方式是在使用 docker CLI 启动时使用 --user 选项。

docker run --user telegraf:$(stat -c '%g' /var/run/docker.sock) ...

Docker Run 文档中有关于指定用户和组的更多信息。

在 InfluxData,我们基于一系列核心价值观建立了公司。这个变化的引入实际上让我们想起了这五个核心价值观中的四个。

  • 我们致力于开源
  • 我们相信谦逊是学习的动力
  • 我们拥抱失败
  • 我们完成任务

我们渴望与最佳实践保持一致并支持社区,这是这个变化的重点。我们在2021年一直非常关注持续提高我们的安全态势,并将继续这样做。然而,我们的开源社区也让我们知道,尽管有良好的意图,但在维护版本中做出这个改变并不是最理想的。我们感谢社区提供的直接具体的反馈。因此,我们迅速吸收了反馈。我们将利用这次经验来学习和改进未来的发布流程。

我们感谢我们惊人的社区,并继续被他们的鼓励和建议所感动,尤其是当我们做得不尽如人意时。