移动应用中的RabbitMQ安全性

时间:2015-09-07 07:36:42

标签: security ssl rabbitmq

我在我们正在开发的一个移动应用程序中使用Rabbit MQ代理,我对安全方面感到有点困惑。我们正在使用云托管的rabbitmq和托管平台给了我们用户名和密码(之后已经更改),我们正在使用SSLconnection,所以不用担心MIM或窃听。

我关心的是任何知道主机和端口可以连接到rabbitmq的人,因为我们有移动应用程序,我们在设备上存储rabbitmq用户名和密码(虽然是加密的)所以我猜任何能够物理访问设备的人都会以某种方式解密用户名密码可以登录rabbitmq,一旦你登录,你几乎可以在rabbitmq上做任何事情,比如删除队列等。 如何在移动环境中使用像Rabbitmq这样的MQ。是否有更好/更安全的方式使用rabbitmq。

1 个答案:

答案 0 :(得分:1)

根据我的经验,最好不要让您的移动应用直接连接到rabbitmq。在app和RabbitMQ之间使用Web服务器。让您的移动应用通过基于HTTP的API调用连接到您的Web服务器。 Web服务器将连接到RabbitMQ,您不必担心移动应用程序中包含连接信息。

除了安全问题之外,还有以下几个优点:

  • 更好地管理RabbitMQ连接
  • 更容易扩展移动用户数量
  • 根据需要在不更改移动应用程序的情况下向后端添加更多逻辑和处理的能力

创建与RabbitMQ的连接是一项昂贵的操作。它需要TCP / IP连接。一旦该连接打开,它将保持打开状态,直到您关闭它。如果您从移动应用程序打开连接并保持打开状态,则会减少与RabbitMQ的可用连接数。如果您快速打开和关闭连接,则会在创建和关闭连接时产生大量额外成本。

在中间有一个Web服务器,您可以打开一个连接并让它管理多个移动设备。 Web服务器将处理http请求并使用与rabbitmq的一个连接来向其发送消息。

由于HTTP Web请求是一种短期连接,因此您可以在短时间内处理更多用户,而不是直接使用rabbitmq连接。

这最终会带来更好的可扩展性,因为您可以添加另一个Web服务器来处理数千个移动应用程序实例,同时只添加1个新的RabbitMQ连接。

这也允许您在Web服务器内添加中间层逻辑。您可以根据需要添加其他处理层,而无需更改移动应用程序。更改Web服务器代码并根据需要重新部署。

如果您必须在中间没有服务器的情况下执行此操作,您可能无法解决您遇到的安全问题。移动设备将包含进行连接所需的信息。