【发布时间】:2018-07-29 12:24:09
【问题描述】:
我使用 RabbitMQ 作为我的应用程序的消息代理,并使用持久存储作为消息存储机制。我发送给 RabbitMQ 的一些消息包含不需要以纯文本形式存储的敏感数据。看来我可以遵循两个选项来确保消息不会以纯文本形式存储在 RabbitMQ 中。
选项 1 - 在将消息发送到 RabbitMQ 之前对其进行加密,因此无论如何消息内容都不会是纯文本形式。这引入了一个瓶颈,我将无法让某些授权的第三方使用我的消息,因为它需要第三方知道解密密钥
选项 2 - 配置 RabbitMQ,使其在存储和读取持久存储时加密和解密消息。
我更喜欢选项 2。以下是我的问题。
- RabbitMQ 是否将消息以纯文本形式存储在持久存储中,以便任何有权访问文件系统并访问文件并读取消息内容的人?
- 我们能否将 RabbitMQ 持久存储配置为以加密方式存储数据?
【问题讨论】:
-
请注意,它不仅仅是存储。另一个威胁是对手通过其正常接口(即可以连接)并获取和/或放置消息来访问 RabbitMQ。在许多情况下,这可能比访问其存储更容易。
-
@GaborLengyel 感谢您的回复。我没有将它用作存储,但我为消息设置了 TTL 时间,以确保它们等到消费者消费消息。在那之前,我想保护他们的安全。
-
我的意思是即使你保护了存储,你仍然有攻击者能够访问队列的问题,所以这当然取决于你的用例,但可能值得添加消息加密在发送东西之前,根据选项 1。换句话说,选项 1 和 2 解决不同的威胁,这两者都可能是相关的。
-
@GaborLengyel 是的,选项 1 看起来更好。
标签: security encryption rabbitmq