C# 保护RabbitMQ消息

C# 保护RabbitMQ消息,c#,security,rabbitmq,C#,Security,Rabbitmq,我在这里寻求一些建议。 我已经在C#中使用RabbitMQ构建了一个多租户解决方案。 它由一个云解决方案组成,该解决方案通过RabbitMQ将消息推送到客户端应用程序。 RabbitMQ的路由是使用如下路由键设置的:myapp.messagestream. 所有客户端都使用相同的用户名和密码连接到RabbitMQ。虽然客户机代码是模糊的,但获取用户名和密码仍然相对简单。从理论上讲,有了这个,我们可以“猜测”任何其他客户id并获得流。显然,这不是我们想要的 我想要解决这个问题的方法是使用每个客户的

我在这里寻求一些建议。 我已经在C#中使用RabbitMQ构建了一个多租户解决方案。 它由一个云解决方案组成,该解决方案通过RabbitMQ将消息推送到客户端应用程序。 RabbitMQ的路由是使用如下路由键设置的:
myapp.messagestream.

所有客户端都使用相同的用户名和密码连接到RabbitMQ。虽然客户机代码是模糊的,但获取用户名和密码仍然相对简单。从理论上讲,有了这个,我们可以“猜测”任何其他客户id并获得流。显然,这不是我们想要的

我想要解决这个问题的方法是使用每个客户的加密密钥加密所有消息。这样,即使您拥有RabbitMQ的用户名和密码,并且猜测了正确的客户id,您仍然看不到任何可用信息

任何人都可以分享关于上述的见解吗?这似乎是个好主意吗?还是我完全疯了


提前感谢。

即使邮件已加密,也会被消费并从队列中删除。我想这不是你想允许的

考虑创建不同的用户,并允许他们只从自己的队列中读取。您可以将其连接到LDAP

编辑:
隐藏传输中的消息始终是一个好主意,但这可以通过SSL/TLS实现,无需在其上添加另一层

即使消息已加密,它也会被消费并从队列中删除。我想这不是你想允许的

考虑创建不同的用户,并允许他们只从自己的队列中读取。您可以将其连接到LDAP

编辑:
隐藏传输中的消息始终是一个好主意,但这可以通过SSL/TLS实现,无需在其上添加另一层

始终认为AMQP用于集群内部消息传递。始终认为AMQP用于集群内部消息传递。我认为将其从队列中删除不是问题。当前设置的方式是,消息具有2秒的TTL,之后它们被分类为不再有效。SSL/TLS已得到处理。我唯一担心的是,当有人使用凭据并在路由密钥中使用通配符时。实际上,最好的方法是为每个连接创建用户帐户,但这可能会导致成千上万的用户。这不会带来问题吗?@Mekroebo我从来没有设置过十几个用户(我是静态设置的),但是如果会话足够长,我认为这不会是问题。您可以使用LDAP测试它,它只需要配置,如果它不适合您的需要,可以使用更定制的解决方案(可能在开始加密消息之前尝试HTTP授权后端),我想我会首先尝试RMQ直接提供的选项,我认为从队列中删除它不是问题。当前设置的方式是,消息具有2秒的TTL,之后它们被分类为不再有效。SSL/TLS已得到处理。我唯一担心的是,当有人使用凭据并在路由密钥中使用通配符时。实际上,最好的方法是为每个连接创建用户帐户,但这可能会导致成千上万的用户。这不会带来问题吗?@Mekroebo我从来没有设置过十几个用户(我是静态设置的),但是如果会话足够长,我认为这不会是问题。您可以使用LDAP测试它,它只需要配置,如果它不适合您的需要,您可以使用更定制的解决方案(在开始加密消息之前,可以尝试HTTP授权后端),我想首先尝试RMQ直接提供的选项