【问题标题】:Parse server with ElastiCache redis server and password使用 ElastiCache redis 服务器和密码解析服务器
【发布时间】:2019-02-23 21:12:26
【问题描述】:

我已经在 Elastic Beanstalk 上设置了一个可用的 Parse 服务器。我添加了一个 AWS ElasticCache Redis 服务器用于缓存,但是在使用密码时我无法使连接正常工作,只有没有。在我创建新 Parse 服务器的 Parse 服务器 index.js 文件中,我像这样连接 Redis:

// Redis cache server
var RedisCacheAdapter = require('parse-server').RedisCacheAdapter;
var redisurl='rediss://:'+process.env.REDIS_PASS+'@'+process.env.REDIS_URL
var redisOptions = {url: redisurl};
var redisCache = new RedisCacheAdapter(redisOptions);   

我的网址看起来像REDIS_URL=clustercfg.xxxx.xxxx.use1.cache.amazonaws.com

redis://rediss:// 我都试过了。我知道 RedisCacheAdapter 只需要一个选项 - URL。我以为我可以直接在链接中添加密码,但似乎适配器不会解析为密码和 URL,而只是期望 URL。

我的问题是我在这里做错了什么还是有其他使用密码的方法?如果无法使用密码,我想知道原因是什么(是因为 ElastiCache 对 Internet 隐藏,只有 EC2 上的服务器可以看到)?

更新: 基于来自@MarkB 的 cmets,我测试了 ElastiCache 的一些不同设置,并将上面的代码修改为也使用密码。

var redisOptions = {url: redisurl, password: process.env.REDIS_PASS}; 
  1. 以集群模式、静态加密、传输中加密和 Redis 密码运行 ElastiCache 失败。
  2. 使用静态加密、传输中加密和 Redis 密码运行 ElastiCache 失败。
  3. 运行 ElastiCache,静态加密和传输中加密,无密码失败。
  4. 运行 ElastiCache 没有静态加密、传输中加密和无密码成功。

在我看来,从 Parse 服务器连接时使用静态和传输中的加密会导致问题,我不知道如何解决。正如@MarkB 所提到的,Parse server (EC2) and ElastiCache 之间的连接仅限于 VPC,所以我可以没有安全选项,但仍然很好。

【问题讨论】:

标签: amazon-web-services amazon-ec2 redis parse-server amazon-elasticache


【解决方案1】:

根据 Parse Server 文档 hereredisOptions 将直接传递给记录在文档中的 redis 客户端 here,它支持 password 字段。我相信这就是您需要指定密码而不是在 URL 中指定密码的方式。

另请注意,如果您使用的是 Redis Client 版本 auth_pass 而不是 password

正如您所提到的,由于 ElastiCache 仅限于您的 VPC,许多人认为无需添加密码身份验证就足够安全,除非出于 PCI 或 HIPAA 合规性等原因需要这样做。

【讨论】:

  • 感谢您的评论 - 非常有帮助。我用我今天做的更多实验更新了我的问题。如果您有任何进一步的 cmets,我将不胜感激。
  • 我不认为静态加密是相关的。这将完全是 Redis/ElastiCache 服务器和支持 EBS 卷之间的服务器端事情。它根本不会暴露给任何 Redis 客户端。听起来传输中的加密是这里的问题。您是否查看过 Redis 客户端的 tls 选项?看起来你需要传递类似tls: {host: hostname, port: port} 的东西。您可能需要对这些 TLS 设置进行一些试验。
  • 谢谢 - 我会检查 TLS 设置。
猜你喜欢
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2017-10-08
相关资源
最近更新 更多