安全与权限控制专题测试
考察知识点
- 安全与权限控制相关概念与原理
- RabbitMQ 专家级实践
在 RabbitMQ 中,不同的 VHost 之间是完全隔离的,包括队列、交换机、绑定关系和用户权限。但是,所有 VHost 共享同一个底层 Erlang 节点和 TCP 连接端口(默认 5672),因此如果某个 VHost 的消息量过大导致内存耗尽,会影响同一节点上其他 VHost 的正常运行。
在 RabbitMQ 中,使用 rabbitmqctl set_permissions 命令为用户设置权限时,conf、write、read 三个正则表达式参数分别控制的是:用户对资源的创建权限、对资源的写操作权限、对资源的读操作权限。如果一个用户的 read 权限设置为 ^$(空字符串正则),则该用户可以读取该 VHost 下所有队列和交换机的内容。
在 RabbitMQ 集群环境中,VHost 的元数据会在所有集群节点间同步。因此,在集群的任意一个节点上创建或删除 VHost,操作结果会自动传播到集群中的其他节点。
在 RabbitMQ 中启用 TLS/SSL 加密通信后,消息的发布和消费性能会显著下降,主要原因是 TLS 握手过程中引入了额外的 CPU 计算开销和网络往返延迟。为了降低性能影响,可以启用 TLS Session Resumption(会话复用)机制来减少握手次数。
在 RabbitMQ 中,当管理员通过 rabbitmqctl set_permissions 命令修改某个用户的权限后,该用户已建立的连接和 Channel 会立即受到新权限的约束,正在进行的消费操作会被中断。
RabbitMQ 安装后会默认创建 guest 用户,该用户拥有 administrator 标签和所有 VHost 的完全权限。从安全角度,应在完成初始配置后立即删除该用户。如果在删除 guest 用户之前没有创建其他管理员用户,将导致无法通过 Management UI 或 API 进行后续管理操作。
RabbitMQ 的 rabbitmq_ip_management 插件(或类似 IP 拦截机制)可以实现基于 IP 地址的访问控制。关于该机制,以下说法正确的是:
以下关于 RabbitMQ VHost 的操作和管理,说法正确的是:
某金融机构需要为其 RabbitMQ 集群配置最高级别的安全通信。要求不仅客户端需要验证服务器的身份,服务器也需要验证客户端的身份,确保只有持有合法证书的客户端才能建立连接。以下哪种 TLS 配置方案最符合该需求?
在 RabbitMQ 中,用户 admin 对 VHost /production 的权限配置如下:
conf: "^(order|payment)_.*"
write: "^order_.*"
read: "^(order|notification)_.*"
关于该用户的操作能力,以下说法正确的是:
在 RabbitMQ 中配置 TLS/SSL 加密通信时,以下关于证书和密钥的描述,正确的是:
某 SaaS 平台使用 RabbitMQ 为多个租户提供消息服务,需要利用 VHost 实现租户间的资源隔离。以下关于 VHost 在多云/多租户场景中的应用,哪些设计是合理的?
在 RabbitMQ 中,关于权限模型的以下说法,哪些是正确的?
在 RabbitMQ 中启用 TLS/SSL 加密通信,需要在配置文件中设置以下哪些参数?
在 RabbitMQ 中配置 TLS 时,推荐配置 ssl_options.versions 参数来限制允许的 TLS 版本。出于安全考虑,应明确禁用 ____________ 和 ____________ 这两个旧版本协议,仅允许使用 ____________ 和 TLSv1.3 版本。
在 RabbitMQ 中,执行 rabbitmqctl delete_vhost /staging 命令后,系统会级联删除该 VHost 下的所有队列、交换机、绑定关系和用户权限。如果该 VHost 下有 ____________ 队列和 ____________ 交换机会被删除,且该操作 ____________ ,无法通过任何内置机制恢复。
在 RabbitMQ 中,为用户 app_user 在 VHost /api 上设置权限,要求:可以创建以 api_ 开头的队列和交换机、可以写入以 api_ 开头的资源、可以读取以 api_ 开头和以 log_ 开头的资源。完整的 rabbitmqctl 命令中,conf、write、read 三个正则表达式参数依次为 ____________ ; ____________ ; ____________ 。
某公司有 dev、staging、production 三个环境的微服务需要共享 RabbitMQ 基础设施。团队提出了两种方案:
- 方案 A:在同一个 RabbitMQ 集群中创建三个 VHost(
/dev、/staging、/production)进行隔离 - 方案 B:为每个环境部署独立的 RabbitMQ 实例
请从以下维度对比两种方案:(1) 资源隔离强度 (2) 运维复杂度 (3) 故障影响范围 (4) 成本。并说明在什么场景下应该选择方案 B。
某生产环境的 RabbitMQ 服务器主机名为 mq.internal.corp,需要为其配置 TLS 加密通信。请描述从证书生成到配置完成的的全链路加密方案,包括:
- 使用 OpenSSL 生成自签名 CA 证书、服务器证书和服务器私钥的完整命令
rabbitmq.conf中启用 TLS 的完整配置- Java 客户端连接该 TLS 加密的 RabbitMQ 服务器的核心代码片段
某团队在 RabbitMQ 中为三个微服务(订单服务、库存服务、通知服务)共享同一个 VHost /shared。请设计一套权限方案,满足以下要求:
- 订单服务:可以创建和读写以
order_开头的所有资源 - 库存服务:只能消费
order_created队列的消息,不能创建任何资源,不能发布消息 - 通知服务:只能向
notification_queue队列写入消息,可以读取该队列确认消息是否被消费
请给出每个服务的 rabbitmqctl set_permissions 命令,并解释设计中如何体现最小权限原则。