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

tob*_*ias 5 security environment-variables systemd

背景

我有多个 RESTful Web 服务通过 Azure DevOps发布管道部署到 CentOS VM。这些服务中的每一个都由systemd管理,并使用环境变量来传递配置。

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

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

确保nologin 用户拥有环境文件

$ chown username:username /path/to/.service.env
Run Code Online (Sandbox Code Playgroud)

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

$ chmod 400 /path/to/.service.env
Run Code Online (Sandbox Code Playgroud)

使文件不可变。

$ chattr +i /path/to/.service.env
Run Code Online (Sandbox Code Playgroud)

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

问题

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