我昨天花了几个小时试图找到一种方法来将 Redis 与在 Vercel 上运行的应用程序一起使用。根据 Redis 安全文档,将 Redis 实例直接暴露在互联网上不是一个好主意:
Redis 旨在供受信任环境中的受信任客户端访问。这意味着通常将 Redis 实例直接暴露给 Internet 或通常暴露给不受信任的客户端可以直接访问 Redis TCP 端口或 UNIX 套接字的环境并不是一个好主意。
我想使用 Digital Ocean 的可信来源将传入连接限制为来自我的 Vercel 服务器的连接,但看起来这是不可能的,因为 Vercel 使用动态 IP 地址。根据 Vercel 文档:
为确保您的 Vercel 部署能够访问外部资源,您应该允许来自所有 IP 地址的连接。通常这可以通过输入 IP 地址 (0.0.0.0) 来实现。
虽然允许来自所有 IP 地址的连接可能是一个问题,但依靠 IP 白名单来确保安全通常是无效的,并且可能导致不良的安全措施。
为了妥善保护您的数据库,我们建议使用随机生成的密码,存储为环境变量,长度至少为 32 个字符,并定期轮换此密码。
我可以依赖密码验证,但根据 Redis 文档,这意味着另一层冗余,而不是主要的安全措施。我是不是遗漏了什么,或者是否没有在不影响安全性的情况下将 Redis 与 Vercel 一起使用的好方法?