我有一个 crontab 脚本,它读取带有敏感信息(如解密密钥)的环境变量。 crontab 条目的定义如下:
30 3 * * 5 VAR="pw" /usr/bin/script.sh
以这种方式存储如此敏感的东西安全吗?如果没有,我该如何改进?
谢谢您的帮助。
答案1
将变量放入 crontab 文件和环境中是安全的,因为其他用户无法访问它。但是,它存在意外泄露的风险,例如,如果您在寻求调试帮助时发布 crontab 行,或者如果您复制它并将其发送给某人作为如何自动运行脚本的示例,或者如果某些进程记录其环境和日志可供无权访问此密码的人访问,或者如果您对其进行备份,并且无权访问此密码的人可以访问备份。我建议将秘密保存在单独的文件或目录树中,并在需要时读取它们。
如果无法修改script.sh
:
VAR=$(cat ~/.secret/script/password)
如果您可以修改script.sh
,使其在需要时读取变量,而不是使其在整个脚本中可用。
请注意,虽然环境变量不会向其他用户公开,但其他用户可以通过ps
.因此,不要将其$VAR
作为参数传递给外部命令。用作 shell 内置函数的参数是安全的$VAR
,例如以下内容是安全的:
gpg --passphrase-fd=3 3< <(printf %s "$PASSPHRASE")
尽管这个具体示例可以更简单地表示为
gpg --passphrase-file=/path/to/passphrase