如何保护 systemd 服务使用的环境文件?

如何保护 systemd 服务使用的环境文件?

背景

我通过 Azure DevOps 部署了多个 RESTful Web 服务发布管道到 CentOS 虚拟机。这些服务中的每一个都由系统并使用环境变量来传递配置。

通常我的方法是为每个服务创建新用户,并在发布代理在虚拟机上运行时将变量注入用户的环境中。但是,由于我不想为添加的每个服务创建一个新用户,因此我使用 systemd环境文件注入配置 - 即使某些 systemd 核心成员阻止其使用。其中一些值非常敏感,因此需要受到保护。

当前保护环境文件的方法:

确保未登录用户拥有环境文件

$ chown username:username /path/to/.service.env

确保该文件只能由其所有者读取。

$ chmod 400 /path/to/.service.env

使文件不可变。

$ chattr +i /path/to/.service.env

以 nologin 用户身份运行 systemd 服务并使用 拉入环境文件EnvironmentFile=/path/to/.service.env

问题

  1. 有没有办法进一步保护环境文件不被访问? (我认为使用 GnuPG 等工具对其进行加密是行不通的,因为 systemd 无法读取该文件。)
  2. 用户可以读取已启动的systemd服务的环境变量吗?

相关内容