OpenSearch Dashboards 中的动态配置
OpenSearch Dashboards 中的多租户包含动态配置选项,因此您可以管理常见的租户设置,而无需更改每个节点上的配置 YAML 文件然后重新启动集群。您可以通过 Dashboards 界面或 REST API 利用此功能。以下列表包含当前由动态配置覆盖的选项的描述
-
禁用或启用多租户:管理员可以动态禁用和启用多租户。禁用多租户不会造成数据丢失的风险。如果管理员选择重新启用租户,则所有先前保存的对象都将保留并可用。默认设置为
multitenancy_enabled: true
。此设置对全局租户没有影响,全局租户始终保持启用状态。
- 禁用或启用私有租户:此选项允许管理员启用和禁用私有租户。与启用多租户设置一样,当重新启用私有租户时,所有先前保存的对象都将保留并可用。
- 默认租户:此选项允许管理员在用户登录时选择全局租户、私有租户或自定义租户作为默认租户。如果用户无权访问默认租户(例如,如果将用户无法访问的自定义租户指定为默认租户),则默认租户将转换为首选租户,该首选租户在
opensearch-dashboards.yml
文件中由opensearch_security.multitenancy.tenants.preferred
设置指定。有关此设置的更多信息,请参阅多租户配置。
根据对使用动态配置的多租户所做的具体更改,某些用户在更改保存后可能会从其 Dashboards 会话中注销。例如,如果管理员用户禁用多租户,则其选定租户为私有或自定义租户的用户将被注销,需要重新登录。同样,如果管理员用户禁用私有租户,则其选定租户为私有租户的用户将被注销,需要重新登录。
然而,全局租户是一个特例。由于此租户永不禁用,因此将其选定为活动租户的用户将不会中断其会话。此外,更改默认租户对用户会话没有影响。
在 OpenSearch Dashboards 中配置多租户
要在 Dashboards 中配置多租户,请按照以下步骤操作
- 首先在 Dashboards 主页菜单中选择安全。然后从屏幕左侧的安全菜单中选择租户。将显示多租户页面。
- 默认情况下,显示管理选项卡。选择配置选项卡以显示多租户的动态设置。
- 在多租户字段中,选中启用租户复选框以启用多租户。清除该复选框以禁用该功能。默认值为
true
。 - 在租户字段中,您可以为用户启用或禁用私有租户。默认情况下,该复选框处于选中状态,功能已启用。
- 在默认租户字段中,使用下拉菜单选择默认租户。该菜单包括全局、私有以及用户可用的任何其他自定义租户。
- 在多租户字段中,选中启用租户复选框以启用多租户。清除该复选框以禁用该功能。默认值为
- 进行首选更改后,选择窗口右下角的保存更改。将出现一个弹出窗口,列出您已更改的配置项,并要求您查看更改。
- 选中您要确认的项旁边的复选框,然后选择应用更改。更改将动态实施。
使用 REST API 配置多租户
除了使用 Dashboards 界面,您还可以使用 REST API 管理动态配置。
获取租户配置
GET 调用检索动态配置的设置
GET /_plugins/_security/api/tenancy/config
示例响应
{
"mulitenancy_enabled": true,
"private_tenant_enabled": true,
"default_tenant": "global tenant"
}
更新租户配置
PUT 调用更新动态配置的设置
PUT /_plugins/_security/api/tenancy/config
{
"default_tenant": "custom tenant 1",
"private_tenant_enabled": false,
"mulitenancy_enabled": true
}
示例响应
{
"mulitenancy_enabled": true,
"private_tenant_enabled": false,
"default_tenant": "custom tenant 1"
}
Dashboardsinfo API
您还可以使用 Dashboardsinfo API 检索登录 Dashboards 的用户的多租户设置状态
GET /_plugins/_security/dashboardsinfo
示例响应
{
"user_name" : "admin",
"not_fail_on_forbidden_enabled" : false,
"opensearch_dashboards_mt_enabled" : true,
"opensearch_dashboards_index" : ".kibana",
"opensearch_dashboards_server_user" : "kibanaserver",
"multitenancy_enabled" : true,
"private_tenant_enabled" : true,
"default_tenant" : "Private"
}