RabbitMQ

RabbitMQ 机密引擎根据配置的权限以及虚拟主机(virtual host)来动态生成用户凭据。这意味着需要访问虚拟主机的服务不再需要硬编码凭据。

由于每个服务都使用与众不同的凭据访问数据库,因此当发现有问题的数据访问时,审计会变得更加容易。我们可以通过 RabbitMQ 用户名跟踪到服务的特定实例。

Vault 在创建的用户对应的租约到期而变得无效时,会同时调用其自身内部的吊销系统以及删除 RabbitMQ 用户以确保该用户不再有效。

配置

大部分机密引擎在工作之前必须要先进行配置。这些步骤通常是由系统管理员或是配置管理工具来完成。

  1. 启用 RabbitMQ 机密引擎:
$ vault secrets enable rabbitmq
Success! Enabled the rabbitmq secrets engine at: rabbitmq/

默认情况下,机密引擎会挂载到名字对应的路径上。要在不同路径上启用机密引擎,请使用 -path 参数。

  1. 配置 Vault 用来与 RabbitMQ 通信以生成凭据的凭据:
$ vault write rabbitmq/config/connection \
    connection_uri="http://localhost:15672" \
    username="admin" \
    password="password"
Success! Data written to: rabbitmq/config/connection

必须要确保 Vault 用户有管理用户的管理员权限。

  1. 在 Vault 中配置一个映射到 RabbitMQ 虚拟主机权限的 Vault 角色:
$ vault write rabbitmq/roles/my-role \
    vhosts='{"/":{"write": ".*", "read": ".*"}}'
Success! Data written to: rabbitmq/roles/my-role

通过写入 roles/my-role 路径,我们定义了 my-role 角色。该角色将通过评估给定的 vhostsvhost_topicstags 语句来创建。默认情况下,不会为角色分配标签、虚拟主机或主题权限。如果未定义主题权限并使用默认授权后端(authorisation backend),则始终可以发布到主题交换或从主题消费。可以阅读有关 RabbitMQ 管理标签RabbitMQ 主题授权的更多信息。

使用方法

配置了机密引擎后,一个拥有搭配了合适权限的 Vault 令牌的用户或是机器可以生成 RabbitMQ 凭据。

通过读取搭配角色名的 /creds 端点来创建一个新的凭据:

$ vault read rabbitmq/creds/my-role
Key                Value
---                -----
lease_id           rabbitmq/creds/my-role/I39Hu8XXOombof4wiK5bKMn9
lease_duration     768h
lease_renewable    true
password           3yNDBikgQvrkx2VA2zhq5IdSM7IWk1RyMYJr
username           root-39669250-3894-8032-c420-3d58483ebfc4

通过使用 ACL,可以限制使用 rabbitmq 机密引擎,以便受信任的操作员可以管理角色定义,并且用户和应用程序都被限制只能使用他们被允许读取的凭据。

results matching ""

    No results matching ""