Lua脚本中存储秘密和配置的实际应用

我有一些嵌入在nginx中的Lua脚本。在其中一个脚本中,我连接到我的Redis缓存,像这样:

local redis_host = "127.0.0.1"
local redis_port = 6379
...
local ok, err = red:connect(redis_host, redis_port);

我不喜欢这个,因为我必须硬编码主机和端口。我应该使用像.ini文件这样的东西,解析它在Lua中,从这个文件获取配置信息吗?他们如何在实际应用中解决这个问题?

此外,在我的脚本中我使用RSA解密和加密。例如,现在我这样做:

   local public_key = [[ -----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL7udJ++o3T6lgbFwWfaD/9xUMEZMtbm GvbI35gEgzjrRcZs4X3Sikm7QboxMJMrfzjQxISPLtsy9+vhbITQNVkCAwEAAQ== -----END PUBLIC KEY----- ]]
   ...
   local jwt_obj = jwt:verify(public_key, token)

再次强调,我不喜欢这个,因为我必须硬编码公钥。他们生产中使用这个还是使用其他技术存储秘密(如存储在环境变量中)?

点赞
用户400262
用户400262

我相信一些人在生产环境中是这样做的。这完全取决于你的舒适程度和标准。以下是应决定您方法的一些事项 -

  1. 数据的敏感性以及如果它公开可用时的风险是什么?
  2. 您的部署流程是什么?如果您使用了基础设施即代码方法或某种类型的配置管理,则肯定不希望这些项目嵌入到代码中。

要解决有关数据敏感性的第一个问题,您需要考虑多种不同的安全保护机制。标准的秘密存储库例如AWS参数存储库和CredStash专门为此目的而建,您需要在运行时提取机密以将它们加载到内存中。 对于第二个问题,您可以使用每个部署替换的配置文件。

为了获得最佳效果,您需要将安全存储机制和配置方法相结合以进行部署/更新。

正如评论中提到的那样,这些主题都有书籍介绍,因此在 Stack Overflow 答案中得到足够的细节的机会是不太可能的。

2017-09-05 01:37:50