在 Linux 服务器上保护密钥,供服务器上运行的软件使用

在 Linux 服务器上保护密钥,供服务器上运行的软件使用

我不是服务器安全方面的专家,我对服务器被入侵的情况有疑问。我有一个 nodejs 应用程序,它是一个机器人,只有 https 连接才能从一些 api 端点读取数据,还会将一些数据发送到另一个端点,所有这些连接都是通过 https 进行的。该机器人使用一个非常敏感的密钥,并且该软件一直在使用它。所以我的问题是:

如果有人访问了服务器,我们如何存储密钥重要吗?“无论我们将其保存在 hashi vault、aws 还是环境变量中,或者甚至我们是否使用在运行时提供给软件的密码对其进行加密,甚至不保存在服务器内部(这使得它在应用程序内存中可用),如果攻击者获得对服务器的访问权,一切都会受到损害,对吗?有没有什么办法,即使有人获得了我们服务器的访问权,我们也可以保护我们的密钥(该密钥在软件中不断使用)?

我也有这个想法,在 AWS 上将该软件作为 lambda 函数运行,但如果 aws 帐户受到损害,则仍会显示环境。

我感谢任何指点。

ps:服务器在AWS上运行。

答案1

并非特定于 AWS 或 Linux。跨主机使用多个密钥可以在一定程度上缓解此问题。

如果他们拥有一些密钥或凭证(例如供应商/API),那么很多人都会遇到意想不到的事情,有一天,有人误操作获取了凭证,然后帐户被锁定,或者由于异常活动而被盗用和锁定,并且使用该凭证的所有内容都会失败,直到所有使用该凭证的工作都暂停,凭证被重置,并且所有使用该凭证的地方都重新配置并重新启动。当发生这种情况时,您通常会发现其他地方也使用了该凭证。

要回答您的问题,它必须是您的审计员认可的东西。我见过类似这样的东西:每个主机中都有一个证书,您可以授予特定帐户读取/使用的权限,并使用 powershell/python 读取证书和私钥,并使用它来访问 Vault。如果您想正确执行此操作,云提供商也有自己的 HSM。https://aws.amazon.com/cloudhsm/

我并不喜欢为此使用变量,但它似乎比我想象的更常见。

决策的一部分是当您需要重置凭证/API 密钥时要执行什么过程。更改环境变量或证书。

https://security.stackexchange.com/questions/49725/is-it-really-secure-to-store-api-keys-in-environment-variables

相关内容