1.2. 安全数据库即服务
在早期版本的 Red Hat OpenStack Platform 中,DBaaS 客户机代理使用凭证来运行 RabbitMQ 消息总线,该凭据由整个管理控制器用于其所有流量。因此,DBaaS 实例可以查看消息总线发送的所有数据,包括敏感数据,这可能允许实例滥用或攻击共享总线的其他服务。在 Red Hat OpenStack Platform 8 中,DBaaS 放置在隔离的租户中,该租户无法访问其余的管理控制器。但是,为了进一步提高 DBaaS 的安全性,您可以在单独的主机和单独的 RabbitMQ 消息总线上设置 DBaaS 实例。为此,请执行以下步骤。
在管理控制器中:
将 RabbitMQ 用户和密码设置为不与 DBaaS 租户共享的自定义值。例如,您可以使用
guest帐户和/默认虚拟主机以及更改的密码:rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务设置为连接到消息总线的所有配置文件中,将更改密码。
更新 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
# 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 RegionOneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在 DBaaS 控制器上:
在远程管理控制器主机的 WSGI 配置中指出身份验证令牌过滤器。使用
/etc/trove/api-paste.ini文件中的以下选项和值,将 IP 替换为管理控制器主机的 IP 地址:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 admin 用户,以确保 DBaaS 客户机代理的 secret 与管理控制器中使用的 secret 不同:
rabbitmqctl add_user isolated isolated rabbitmqctl set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将以下选项和值放在
/etc/trove/trove.conf文件中,配置 DBaaS 控制平面以连接到本地 RabbitMQ 实例并进行身份验证:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在管理控制器中,编辑
/etc/trove/trove-guestagent.conf文件,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. ACL 策略 复制链接链接已复制到粘贴板!
或者,您可以通过利用 RabbitMQ 虚拟主机提供的 ACL 策略来提高安全性。在这种情况下,您可以将单独的用户分配给每个虚拟主机,包括单独的权限。例如,您可以定义名为 /isolated 的虚拟主机,并为虚拟主机分配适当的 隔离 用户。要做到这一点,请执行以下步骤:
更改默认
/虚拟主机的客户机帐户密码:rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加新用户和虚拟主机,并相应地设置权限:
rabbitmqctl add_user isolated isolated rabbitmqctl add_vhost /isolated rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl add_vhost /isolated # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 DBaaS 配置。要编辑两个文件:
/etc/trove/trove-guestmanager.conf,它由 puppet-trove 生成,并被注入到客户机实例中,以及/etc/trove/trove-conductor.conf,该服务配置 DBaaS control plane 服务,以获取来自 DBaaS 实例的异步状态更新。RabbitMQ 设置对于这两个文件是相同的:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
这种方法的优势在于其简单性与使用单独的主机和消息队列的情况进行比较。这在以自动化方式执行置备时很有用;例如,使用 Red Hat OpenStack Platform director。