将第三方凭据存储在数据库/某个安全的地方

信息安全 验证 数据库 风险管理 保密
2021-08-16 01:21:55

这个问题是关于将第三方凭证存储在数据库/某个安全的地方,这样只有授权用户才能访问它。

我们的系统使用特定的用户名和密码连接到第三方系统。他们使用基本身份验证需要随机数值和纯文本密码进行身份验证。我们为连接到此第三方系统的不同用户提供单独的凭据。

我了解针对我们的应用程序对用户进行身份验证可以使用加盐哈希和其他单向加密。

请为我提供一些最佳方法,以便我可以存储这些第三方凭据。我们的系统需要将这些凭据存储在本地,因此我正在寻找一些最佳方法。

3个回答

好吧,挑战在于,所讨论的凭据必须以允许它们以明文形式读取的方式存储。这意味着一些关于密码存储的传统智慧(使用 bcrypt)不适用。

因此,您的目标是降低风险并划分数据。如果可能的话,您希望有一个不同的进程来对外部站点进行身份验证,并将您的 Web 应用程序返回给活动的已验证套接字的文件句柄。这意味着被入侵的网站不会泄露正在使用的实际凭据,因为 Web 应用程序将无权读取数据库的该部分。

加密数据库值是常识,但如果它与数据库运行在同一台服务器上,它可能具有有限的实用性,具体取决于您如何设计身份验证应用程序。如果您有时间和资源,请将其设计为在身份验证应用程序中进行加密和解密,并且数据库存储加密值。将这些角色中的每一个放置在不同的机器上并隔离数据库和外部身份验证系统提供了最大的分段。

满足您要求的最佳实践是使用OAUTH因此,如果第 3 方(要进行身份验证)提供 OAUTH 支持.....那么这是最好的首选方式,因为在这种情况下,您不必存储凭据,但可以保护通过以下方式提供给用户的 OAUTH 密钥3rd 方的责任要少得多。

尽管对于密钥或凭据这两者,您都可以使用用户密码为您的门户加密敏感数据,也可以使用 Salt。

我对perl不熟悉。但是 SHA 加密是在阅读您关于 2 路加密/解密的问题后想到的一种。那么您唯一需要保护的将是key密码而不是所有密码。