全部学科
Python全栈
python
NodeJS全栈
nodejs

安全与权限控制专题测试

20 题 60 分钟 难度:★★★

考察知识点

  • 安全与权限控制相关概念与原理
  • RabbitMQ 专家级实践
💡 参考答案在文末
判断题
1

在 RabbitMQ 中,不同的 VHost 之间是完全隔离的,包括队列、交换机、绑定关系和用户权限。但是,所有 VHost 共享同一个底层 Erlang 节点和 TCP 连接端口(默认 5672),因此如果某个 VHost 的消息量过大导致内存耗尽,会影响同一节点上其他 VHost 的正常运行。

A

B

2

在 RabbitMQ 中,使用 rabbitmqctl set_permissions 命令为用户设置权限时,conf、write、read 三个正则表达式参数分别控制的是:用户对资源的创建权限、对资源的写操作权限、对资源的读操作权限。如果一个用户的 read 权限设置为 ^$(空字符串正则),则该用户可以读取该 VHost 下所有队列和交换机的内容。

A

B

3

在 RabbitMQ 集群环境中,VHost 的元数据会在所有集群节点间同步。因此,在集群的任意一个节点上创建或删除 VHost,操作结果会自动传播到集群中的其他节点。

A

B

4

在 RabbitMQ 中启用 TLS/SSL 加密通信后,消息的发布和消费性能会显著下降,主要原因是 TLS 握手过程中引入了额外的 CPU 计算开销和网络往返延迟。为了降低性能影响,可以启用 TLS Session Resumption(会话复用)机制来减少握手次数。

A

B

5

在 RabbitMQ 中,当管理员通过 rabbitmqctl set_permissions 命令修改某个用户的权限后,该用户已建立的连接和 Channel 会立即受到新权限的约束,正在进行的消费操作会被中断。

A

B

6

RabbitMQ 安装后会默认创建 guest 用户,该用户拥有 administrator 标签和所有 VHost 的完全权限。从安全角度,应在完成初始配置后立即删除该用户。如果在删除 guest 用户之前没有创建其他管理员用户,将导致无法通过 Management UI 或 API 进行后续管理操作。

A

B

单选题
7

RabbitMQ 的 rabbitmq_ip_management 插件(或类似 IP 拦截机制)可以实现基于 IP 地址的访问控制。关于该机制,以下说法正确的是:

A

IP 拦截规则优先于用户认证和权限检查执行,被拦截的 IP 甚至无法完成 TCP 连接

B

IP 拦截只能配置黑名单模式,无法配置白名单模式

C

被 IP 规则拦截的连接会被静默丢弃,不会在日志中留下记录

D

IP 拦截规则是动态生效的,修改后需要重启 RabbitMQ 服务才能应用

8

以下关于 RabbitMQ VHost 的操作和管理,说法正确的是:

A

VHost 创建后会自动生成默认的队列和交换机

B

删除一个非空 VHost 时,系统会自动删除其下所有队列、交换机和绑定关系

C

同一个用户可以在不同 VHost 中使用不同的用户名标识

D

VHost 的名称必须以 / 开头,否则无法创建

9

某金融机构需要为其 RabbitMQ 集群配置最高级别的安全通信。要求不仅客户端需要验证服务器的身份,服务器也需要验证客户端的身份,确保只有持有合法证书的客户端才能建立连接。以下哪种 TLS 配置方案最符合该需求?

A

配置 ssl_options.verify = verify_nonessl_options.fail_if_no_peer_cert = false

B

配置 ssl_options.verify = verify_peerssl_options.fail_if_no_peer_cert = true

C

配置 ssl_options.verify = verify_peerssl_options.fail_if_no_peer_cert = false

D

配置 ssl_options.verify = verify_nonessl_options.fail_if_no_peer_cert = true

10

在 RabbitMQ 中,用户 admin 对 VHost /production 的权限配置如下:

text
conf: "^(order|payment)_.*"
write: "^order_.*"
read: "^(order|notification)_.*"

关于该用户的操作能力,以下说法正确的是:

A

可以向 payment_queue 队列发送消息

B

可以创建名为 refund_task 的队列

C

可以消费 notification_queue 队列中的消息

D

可以绑定 order_exchange 交换机到 payment_queue 队列

11

在 RabbitMQ 中配置 TLS/SSL 加密通信时,以下关于证书和密钥的描述,正确的是:

A

RabbitMQ 服务器只需要提供服务器证书(server certificate),不需要 CA 证书

B

客户端验证服务器身份时,需要信任链中所有 CA 证书,包括根 CA 和中间 CA

C

配置 TLS 后,客户端和服务器之间只需要单向认证,即只需服务器验证客户端的证书

D

RabbitMQ 的 TLS 配置支持 OCSP Stapling,可以自动吊销过期证书

多选题
12

某 SaaS 平台使用 RabbitMQ 为多个租户提供消息服务,需要利用 VHost 实现租户间的资源隔离。以下关于 VHost 在多云/多租户场景中的应用,哪些设计是合理的?

A

为每个租户创建独立的 VHost,通过权限控制确保租户间资源不可互访

B

所有租户共享同一个 VHost,通过队列名称前缀(如 tenantA_queue1)来区分资源

C

利用 VHost 结合策略(Policy)为不同租户设置不同的消息 TTL 和队列长度限制

D

当 VHost 数量过多时,应考虑元数据膨胀对集群性能的影响,并合理规划 VHost 数量上限

E

可以通过 HTTP API 动态创建和删除 VHost,实现租户生命周期自动化管理

13

在 RabbitMQ 中,关于权限模型的以下说法,哪些是正确的?

A

权限是在 VHost 级别设置的,同一个用户在不同 VHost 中可以拥有不同的权限

B

用户的 write 权限中包含了对匹配的交换机执行 publish 操作和对匹配的队列执行 basic.publish 操作

C

如果用户只有 read 权限而没有 conf 权限,则可以消费已有队列的消息,但无法创建新队列

D

RabbitMQ 的权限系统支持基于角色的访问控制(RBAC),可以为不同角色预定义权限模板

E

权限正则表达式使用 PCRE(Perl Compatible Regular Expressions)语法进行匹配

14

在 RabbitMQ 中启用 TLS/SSL 加密通信,需要在配置文件中设置以下哪些参数?

A

listeners.ssl.default 指定 TLS 监听端口(如 5671)

B

ssl_options.cacertfile 指定 CA 证书路径

C

ssl_options.certfile 指定服务器证书路径

D

ssl_options.keyfile 指定服务器私钥路径

E

ssl_options.verify 设置客户端证书验证级别(如 verify_peerverify_none

F

ssl_options.fail_if_no_peer_cert 设置是否强制要求客户端提供证书

填空题
15

在 RabbitMQ 中配置 TLS 时,推荐配置 ssl_options.versions 参数来限制允许的 TLS 版本。出于安全考虑,应明确禁用 ________________________ 这两个旧版本协议,仅允许使用 ____________ 和 TLSv1.3 版本。

16

在 RabbitMQ 中,执行 rabbitmqctl delete_vhost /staging 命令后,系统会级联删除该 VHost 下的所有队列、交换机、绑定关系和用户权限。如果该 VHost 下有 ____________ 队列和 ____________ 交换机会被删除,且该操作 ____________ ,无法通过任何内置机制恢复。

17

在 RabbitMQ 中,为用户 app_user 在 VHost /api 上设置权限,要求:可以创建以 api_ 开头的队列和交换机、可以写入以 api_ 开头的资源、可以读取以 api_ 开头和以 log_ 开头的资源。完整的 rabbitmqctl 命令中,conf、write、read 三个正则表达式参数依次为 ____________ ; ____________ ; ____________

简答题
18

某公司有 dev、staging、production 三个环境的微服务需要共享 RabbitMQ 基础设施。团队提出了两种方案:

  • 方案 A:在同一个 RabbitMQ 集群中创建三个 VHost(/dev/staging/production)进行隔离
  • 方案 B:为每个环境部署独立的 RabbitMQ 实例

请从以下维度对比两种方案:(1) 资源隔离强度 (2) 运维复杂度 (3) 故障影响范围 (4) 成本。并说明在什么场景下应该选择方案 B。

19

某生产环境的 RabbitMQ 服务器主机名为 mq.internal.corp,需要为其配置 TLS 加密通信。请描述从证书生成到配置完成的的全链路加密方案,包括:

  1. 使用 OpenSSL 生成自签名 CA 证书、服务器证书和服务器私钥的完整命令
  2. rabbitmq.conf 中启用 TLS 的完整配置
  3. Java 客户端连接该 TLS 加密的 RabbitMQ 服务器的核心代码片段
20

某团队在 RabbitMQ 中为三个微服务(订单服务、库存服务、通知服务)共享同一个 VHost /shared。请设计一套权限方案,满足以下要求:

  1. 订单服务:可以创建和读写以 order_ 开头的所有资源
  2. 库存服务:只能消费 order_created 队列的消息,不能创建任何资源,不能发布消息
  3. 通知服务:只能向 notification_queue 队列写入消息,可以读取该队列确认消息是否被消费

请给出每个服务的 rabbitmqctl set_permissions 命令,并解释设计中如何体现最小权限原则。

参考答案
1.正确 2.错误 3.正确 4.正确 5.错误 6.正确 7.A 8.B 9.B 10.C 11.B 12.A;C;D;E 13.A;B;C;E 14.A;B;C;D;E;F 15.TLSv1;TLSv1.1;TLSv1.2## 解析 RabbitMQ TLS 版本配置: ```ini # 仅允许 TLSv1.2 和 TLSv1.3 ssl_options.versions.1 = tlsv1.2 ssl_options.versions.2 = tlsv1.3 ``` **TLS 版本演进**: - **TLSv1.0**(1999年):已发现多个安全漏洞(BEAST、POODLE),PCI DSS 等合规标准已禁止使用。 - **TLSv1.1**(2006年):修复了 TLSv1.0 的部分问题,但仍有安全隐患,已被 IETF 正式弃用(RFC 8996)。 - **TLSv1.2**(2008年):当前**最低推荐版本**,支持 AEAD 加密模式(GCM、CCM),安全性良好。 - **TLSv1.3**(2018年):最新版本,握手仅需 1-RTT(甚至 0-RTT),移除了不安全的密码套件,性能和安全性都有提升。 **配置建议**: - 生产环境**至少要求 TLSv1.2**,推荐同时启用 TLSv1.3。 - 不要启用 SSLv3、TLSv1.0、TLSv1.1。 - 可以通过 `ssl_options.ciphers` 进一步限制密码套件,确保只使用强加密算法。 16.所有 ; 所有 ; 不可逆 17.^api_.* ; ^api_.* ; ^(api|log)_.* 18. 19. 20.
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 交换机类型详解专题测试
下一套试卷 → 工作队列模式专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码