将每个客户的Stripe配置存储在SaaS应用程序中。

7
这个网站构建器SaaS应用程序有一个功能,允许客户将他们的Stripe账户连接到他们的网站并收款。每个使用这个SaaS应用程序的用户(网站所有者)都拥有一个Stripe账户。
在应用程序开发阶段,我们只是以加密的方式将每个客户的Stripe公钥/私钥存储在内部数据库中。但即使它是加密的,在我们看来,在生产环境中这不是正确的做法。
为了安全地存储每个帐户的敏感Stripe配置,应该采用什么样的适当方法来存储它们?

要正确完成此操作,您真的需要一个专用的 HSM。https://azure.microsoft.com/zh-cn/services/azure-dedicated-hsm/#overview 就是一个例子。没有 HSM,数据可能会暴露在太多的方式中。 - Chase
2个回答

3
您描述的似乎意味着您正在使用(或应该使用)Stripe Connect。这使您可以构建一个平台,让其他企业将其Stripe帐户连接到您的平台,从而使您可以在其帐户上具有读写访问权限。
如果您的用户已经拥有Stripe帐户,则可以使用文档中记录的OAuth流程here,或者您可以通过API简单地为他们创建一个帐户,然后重定向他们到Stripe onboard,如文档here所述。
一旦连接了帐户,您可以编写代码,使用自己平台的Secret API密钥和连接的帐户ID,在代表他们进行请求时通过Stripe-Account头传递 acct_123456。Stripe在此处清晰地记录了这一点here。在这个世界里,您永远不必存储他们的API密钥、加密或滚动它们。您所需要的只是在服务器上安全地保留自己的API密钥和获得连接期间的帐户ID。

2

使用Stripe的受限API密钥

Stripe有受限制的API密钥,允许Stripe的客户将一组权限授予密钥,然后与第三方服务共享。

来自Stripe文档https://stripe.com/docs/keys#limit-access

使用受限API密钥限制访问 受限API密钥仅允许您指定的最低访问级别。受限密钥无法与Stripe API的许多部分交互,并旨在在使用或构建微服务时降低风险。在开发Stripe集成期间,不应将其用作帐户API密钥的替代品。

如果您正在处理代表您与Stripe API交互的微服务,请使用受限API密钥。您可以创建受限API密钥,以限制对特定帐户数据的访问和权限。例如,您可以创建一个受限密钥,授予对纠纷数据的只读访问权限,然后将其与纠纷监视服务一起使用。

存储受限API密钥/鼓励密钥轮换

这些受限制的密钥比完整的 API 密钥更少的安全风险,这类密钥相当于“root”访问。对这些受限制的密钥进行加密存储可以满足您的安全需求。此外,向客户提供最佳实践的教育,包括 API 密钥轮换,有助于降低和分享风险。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接