我正在运行一个PHP应用程序,它使用用户名和密码连接到RDS数据库,向客户端提供数据。用户名和密码是使用AWS客户端作为加密字符串从AWS KMS中检索的。我对PHP应用程序的每一个请求都这样做,以打开到数据库的连接。
所以水流看起来就像这样
传入请求->从AWS -> Open DB connection -> Query ->返回数据检索DB凭据
在此流程中,每个请求都会发送到AWS以获取DB凭据,安全字符串将使用KMS解密,最终结果是KMS的高使用率会导致更高的开销。它还引入了每个API请求的延迟。
我想知道是否有一些PHP缓存库可以用于在EC2实例上本地安全地存储凭据,这样我就不需要一直获取它了。
我读了很多论坛,我看到一些人说把它们存储在根之外的文件上,甚至在根之外的.env上也很好,还有一些人说使用memcache,但是大多数人说缓存凭据就是不去的模式。
我知道没有100%安全的东西,但是任何关于缓存凭据的建议都是值得赞赏的。
发布于 2021-04-06 05:30:59
也许您可以将您的凭据存储在快速访问Redis实例中,这样您就不会继续访问KMS和SSM Parameter服务,但在这种情况下,我建议您在Redis中放置一个非常低的TTL,以便这些凭据可以在短时间内死亡,以避免任何安全事故。使用此解决方案,您可以实现Singlenton模式,该模式总是从redis请求凭据,如果没有它们,则从SSM请求它们,并临时存储它们供以后使用。
** redis实例应与服务器/应用程序建立直接信任关系,以减少安全事故。
发布于 2021-04-04 05:50:10
结果证明,高开销是由于使用KMS解密的安全字符串参数太多而造成的。我将大多数参数转换为普通字符串类型,只留下敏感字符串作为加密类型,从而减少了整个KMS的使用。在AWS文档中,我忽略了其中的内容:“创建SecureString参数不需要从parameter收取费用,但是使用AWS加密的费用确实适用”--同样对于缓存库,我发现phpfastcache非常容易使用。然而,我决定保持目前的方式,因为KMS的价格似乎与减少的KMS的使用是合理的。
https://stackoverflow.com/questions/66927396
复制相似问题