背景
我通过 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
。
问题
- 有没有办法进一步保护环境文件不被访问? (我认为使用 GnuPG 等工具对其进行加密是行不通的,因为 systemd 无法读取该文件。)
- 用户可以读取已启动的systemd服务的环境变量吗?