1.2. 安全数据库即服务


在早期版本的 Red Hat OpenStack Platform 中,DBaaS 客户机代理使用凭证来运行 RabbitMQ 消息总线,该凭据由整个管理控制器用于其所有流量。因此,DBaaS 实例可以查看消息总线发送的所有数据,包括敏感数据,这可能允许实例滥用或攻击共享总线的其他服务。在 Red Hat OpenStack Platform 8 中,DBaaS 放置在隔离的租户中,该租户无法访问其余的管理控制器。但是,为了进一步提高 DBaaS 的安全性,您可以在单独的主机和单独的 RabbitMQ 消息总线上设置 DBaaS 实例。为此,请执行以下步骤。

  1. 在管理控制器中:

    1. 将 RabbitMQ 用户和密码设置为不与 DBaaS 租户共享的自定义值。例如,您可以使用 guest 帐户和 / 默认虚拟主机以及更改的密码:

      # rabbitmqctl change_password guest password
      Copy to Clipboard Toggle word wrap

      在服务设置为连接到消息总线的所有配置文件中,将更改密码。

    2. 更新 DBaaS 数据库端点,以使服务目录查找在单独的主机上使用 DBaaS。首先确定当前的端点 UUID,然后将其删除,最后创建一个具有单独 DBaaS 主机的 IP 地址的新端点:

      # keystone endpoint-list
      # keystone endpoint-delete current_DBaaS_endpoint_uuid
      # keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOne
      Copy to Clipboard Toggle word wrap
  2. 在 DBaaS 控制器上:

    1. 在远程管理控制器主机的 WSGI 配置中指出身份验证令牌过滤器。使用 /etc/trove/api-paste.ini 文件中的以下选项和值,将 IP 替换为管理控制器主机的 IP 地址:

      [filter:authtoken]
      paste.filter_factory = keystonemiddleware.auth_token:filter_factory
      service_protocol = http
      service_host = IP
      service_port = 5000
      auth_host = IP
      auth_port = 35357
      auth_protocol = http
      auth_uri = http://IP:35357/v2.0/
      signing_dir = /tmp/keystone-signing-trove
      admin_tenant_name = admin
      admin_user = admin
      admin_password = admin
      Copy to Clipboard Toggle word wrap
    2. 添加 admin 用户,以确保 DBaaS 客户机代理的 secret 与管理控制器中使用的 secret 不同:

      # rabbitmqctl add_user isolated isolated
      # rabbitmqctl set_permissions isolated ".*" ".*" ".*"
      Copy to Clipboard Toggle word wrap
    3. 通过将以下选项和值放在 /etc/trove/trove.conf 文件中,配置 DBaaS 控制平面以连接到本地 RabbitMQ 实例并进行身份验证:

      # AMQP Connection info
      rabbit_userid=isolated
      rabbit_password=isolated
      rabbit_host=DBaaS_IP
      
      # single instance tenant
      nova_proxy_admin_user = user
      nova_proxy_admin_pass = password
      nova_proxy_admin_tenant_name = tenant
      trove_auth_url = http://MGMT_IP:5000/v2.0
      nova_compute_service_type = compute
      cinder_service_type = volumev2
      os_region_name = RegionOne
      nova_compute_url = http://MGMT_IP:8774/v3
      
      remote_nova_client = trove_ext.cloudos.remote.nova_client_trove_admin
      remote_cinder_client = trove_ext.cloudos.remote.cinder_client_trove_admin
      remote_neutron_client = trove_ext.cloudos.remote.neutron_client_trove_admin
      Copy to Clipboard Toggle word wrap
  3. 在管理控制器中,编辑 /etc/trove/trove-guestagent.conf 文件,如下所示:

    # AMQP Connection info
    rabbit_userid=isolated
    rabbit_password=isolated
    rabbit_host=DBaaS_IP
    
    # single tenant config
    nova_proxy_admin_user = user
    nova_proxy_admin_pass = password
    nova_proxy_admin_tenant_name = tenant
    trove_auth_url = http://MGMT_IP:5000/v2.0
    swift_url = http://MGMT_IP:8080/v1/AUTH_
    Copy to Clipboard Toggle word wrap

1.2.1. ACL 策略

或者,您可以通过利用 RabbitMQ 虚拟主机提供的 ACL 策略来提高安全性。在这种情况下,您可以将单独的用户分配给每个虚拟主机,包括单独的权限。例如,您可以定义名为 /isolated 的虚拟主机,并为虚拟主机分配适当的 隔离 用户。要做到这一点,请执行以下步骤:

  1. 更改默认 / 虚拟主机 的客户机 帐户密码:

    # rabbitmqctl change_password guest password
    Copy to Clipboard Toggle word wrap
  2. 添加新用户和虚拟主机,并相应地设置权限:

    # rabbitmqctl add_user isolated isolated
    # rabbitmqctl add_vhost /isolated
    # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
    Copy to Clipboard Toggle word wrap
  3. 编辑 DBaaS 配置。要编辑两个文件: /etc/trove/trove-guestmanager.conf,它由 puppet-trove 生成,并被注入到客户机实例中,以及 /etc/trove/trove-conductor.conf,该服务配置 DBaaS control plane 服务,以获取来自 DBaaS 实例的异步状态更新。RabbitMQ 设置对于这两个文件是相同的:

    [oslo_messaging_rabbit]
    rabbit_host=IP
    rabbit_virtual_host=/isolated
    rabbit_userid=isolated
    rabbit_password=isolated
    rabbit_port=5672
    rabbit_ha_queues=False
    rabbit_hosts=IP:5672
    rabbit_use_ssl=False
    Copy to Clipboard Toggle word wrap

这种方法的优势在于其简单性与使用单独的主机和消息队列的情况进行比较。这在以自动化方式执行置备时很有用;例如,使用 Red Hat OpenStack Platform director。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部