生产环境使用CLI如何保密

问题描述 投票:0回答:1

我有一个命令行界面,我个人现在已经使用了大约一年,最近它进入了一些生产服务器,我遇到了一个问题,因为它与安全相关,并且至少有点独特,我想我会在这里检查。

与任何 CLI 一样,除了您通过环境变量或参数提供的上下文之外,它在启动时是愚蠢的。我使用一个名为 CONNECTION_PATH 的环境变量,它指向本地存储在具有连接字符串的计算机上的 JSON 文件,以及用于连接 CLI 使用的数据库的其他一些配置参数。此 CONNECTION_PATH 可以根据最多 4 个不同连接的每次调用而变化。 (例如 4 个文件)此 CLI 将间歇性地调用/终止,并且不会保留其连接上下文。

服务器本身正在经历一些秘密存储(可能是 S3),无论如何,对于他们来说,使用安全密钥存储比立即以纯文本形式将其某些内容写入磁盘是不明智的。

我在这里看到两个确保机密安全的选项:

  • 允许 JSON 连接文件作为原始 json 字符串在 CLI 中传递(我避免了这种情况,因为 JSON 在终端中很难工作,但如果程序调用它更易于管理),这样所有的秘密都在服务器中记忆犹新
  • 在服务器启动时生成并加密 4 个 JSON 文件,并将其写入磁盘,并向我的 CLI 程序传递加密密钥以解码 JSON 数据。

我是否遗漏了任何其他安全隐患?对于如何处理这个问题,您还有其他建议吗?抱歉,我知道这更多的是建议,而不是具体的问题。

老实说,我考虑了安全隐患,只是想听听其他人的意见。

security command-line-interface
1个回答
1
投票

您应该考虑使用保管库,保管库通常是安全存储,可让您灵活地存储和加密数据,而无需处理解密密钥。

Vaults 为您提供访问路径(例如 URL),并且相应的资源受到凭据的保护。

因此,在这种情况下,当您提到使用 ENV 变量来存储路径时,在 CLI 的上下文中,您将保管库密码保存在 ENV 变量中,并在脚本中使用它来访问敏感信息所在的保管库的路径。数据驻留。

有许多免费、付费和开源库解决方案可供使用,您可以根据您的用例对其进行评估。

© www.soinside.com 2019 - 2024. All rights reserved.