【问题标题】:Rails strongbox decryption in resque process在resque过程中Rails保险箱解密
【发布时间】:2013-09-11 16:05:57
【问题描述】:

我定期对通过strongbox gem 使用公钥加密的数据运行长时间的解密过程。该过程解密一些消息,并将不再安全的数据发送给请求方。

在某些情况下,解密过程现在需要足够长的时间,以至于它实际上应该异步执行。我想通过将作业传递给resque scheduler 来处理这个问题。

解密密码来自网络请求 - 我如何安全地将密码传递给 resque? (resque 和 web 请求在不同的 AWS 实例上)。我不希望有权访问 resque 日志的人访问密码。

【问题讨论】:

    标签: ruby-on-rails encryption amazon-web-services resque


    【解决方案1】:

    过滤器参数:

    好吧,您绝对可以从日志中过滤您的参数/密码 所以每次您通过Resque logger 或Rails logger 登录时都尝试过滤掉这些参数

    想象一下基本代码 sn-p 看起来像这样

    def filter
      @filter ||= ActionDispatch::Http::ParameterFilter.new(Rails.application.config.filter_parameters)
    end
    
    def filter_parameter(params)
      filter.filter params
    end
    

    现在每次调用记录器时都会简单过滤参数

    [Rails | Resque].logger.info (filter_parameter(my_parameter))
    

    这将解决任何可以访问ResqueRails 记录器的人知道密码的问题

    安全 Redis 连接:

    虽然这可能会过滤日志中的参数,但 Resque/redis 确实包含其中的敏感数据

    我相信你会尽最大努力防止有人在 redis 中嗅探密码 是用密码连接redis

    您可以这样做的方法是在redis.conf 中设置密码

    在 redis.conf 中寻找这一行(取消注释并设置密码)

    #requirepass [set your redis password)
    

    然后使用这个password连接到Resque,这将确保只有知道redis密码的客户端才能建立连接

    Resque 网站:

    显然,如果您使用的是resque-web,数据仍然可能在 UI 上可用 您能做的最好的事情是使用一些授权机制,例如基本身份验证或任何适合您需要的机制 并只允许那些根据您的需要成功验证的人

    这是我放弃的方法,到目前为止我没有任何其他方法:)

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      • 2013-02-16
      • 1970-01-01
      • 2015-01-30
      相关资源
      最近更新 更多