Docker:以非 root 用户身份运行 Telegraf

导航至

Telegraf 1.20.3 版本更改了官方 Telegraf DockerHub 镜像,不再以 root 用户身份运行 Telegraf 服务。通过此更改,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 镜像安装额外的软件包或配置服务。

如果用户传入 Docker 套接字以供 Telegraf 监控 Docker 本身,则他们需要将 telegraf 用户添加到拥有 Docker 套接字的组。实现此目的的一种方法是在从 docker CLI 启动时使用 --user 选项

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

Docker Run 文档提供了关于指定用户和组的更多信息。

在 InfluxData,我们基于一套 核心价值观建立公司。此更改的引入实际上提醒了我们五个价值观中的四个

  • 我们致力于开源
  • 我们相信谦逊驱动学习
  • 我们拥抱失败
  • 我们完成工作

我们希望与最佳实践保持一致并支持社区,这是此更改的最前沿。2021 年,我们一直非常关注继续提升我们的安全态势,未来我们将继续这样做。然而,我们的开源社区也让我们知道,尽管意图良好,但在维护版本中进行此更改并不理想。我们感谢社区提供的直接和具体的反馈。因此,我们迅速采取行动以整合反馈。我们将利用这次经验来学习和改进我们未来的发布流程。

我们感谢我们出色的社区,并继续为他们的鼓励和建议而感到谦卑,尤其是在我们做得不太正确的时候。