所以我今天面临一个具有挑战性的问题。我目前正在开发我正在开发的应用程序的付款界面。我必须给应用程序未来的用户提供存储和编辑其支付卡详细信息的选项,以便于结帐。我所在行业中的每项业务都一样。因此,必须让我的用户能够添加和编辑卡详细信息。
我当时正在考虑将用户卡详细信息存储到我们使用PCI标准租用的AWS RDS数据库中。我计划在需要时使用PHP和mcrypt以及盐和胡椒来加密和解密卡数据。
在这种情况下,您认为将付款数据存储到我们的数据库中是否合适?还是他们的任何第三方提供商都会为我们存储用户付款明细?
请务必注意,我们将使用自己的商家帐户进行某些交易,而对于另一些交易,我们将使用各种供应商的商家帐户通过其API处理交易。
谢谢
答案 0 :(得分:2)
我建议以下蓝图:
Cloudfront-> API网关-> Lambda-> RDS
Lambda函数是唯一可以访问RSA私钥以解密由Cloudfront加密的字段值的位置。然后转过来使用AWS Encryption SDK重新加密持卡人信息,最后将其存储在RDS中。该lambda只允许使用KMS密钥进行加密。创建一个单独的lambda函数,该函数负责从RDS中读取数据,使用KMS对其进行解密并将其传输给第三方。
该解决方案的细节还有很多魔鬼,但是如果您遵循此蓝图,至少您不会让您的PHP应用程序受到威胁并暴露大量信用卡。最终,您希望限制处理持卡人信息的场所数量,以减少PCI审核的风险。我什至要说,对于持卡人数据,有一个单独的VPC和RDS。将“令牌”返回给您的应用程序以供参考。