多租户动态配置

多租户包含 UDB-SX Dashboards 中的动态配置选项,因此您可以管理租户的常见设置,而无需更改每个节点上的配置 YAML 文件并重新启动集群。您可以使用 UDB-SX Dashboards 前端或 REST API 来利用此功能。以下列表包括当前由动态配置涵盖的选项描述:

  • 禁用或启用多租户:管理员可以动态禁用和启用多租户。禁用多租户不会造成数据丢失的风险。如果管理员选择重新启用租户,则所有先前保存的对象都将被保留并可用。默认值为 multitenancy_enabled: true。此设置不会影响全局租户,全局租户始终处于启用状态。

  • 禁用或启用私有租户:此选项允许管理员启用和禁用私有租户。与启用多租户设置一样,当重新启用私有租户时,所有先前保存的对象都将被保留并可用。

  • 默认租户:此选项允许管理员选择全局、私有或自定义租户作为用户登录时的默认租户。如果用户无法访问默认租户(例如,如果指定了用户不可用的自定义租户作为默认租户),则默认值将过渡到首选租户,该租户由 udbsx-dashboards.yml 文件中的 udbsx_security.multitenancy.tenants.preferred 设置指定。

根据使用动态配置对多租户所做的具体更改,一旦更改保存,某些用户可能会从其 Dashboards 会话中注销。例如,如果管理员用户禁用多租户,则选择私有或自定义租户的用户将被注销并需要重新登录。同样,如果管理员用户禁用私有租户,则选择私有租户的用户将被注销并需要重新登录。

然而,全局租户是一个特殊情况。由于此租户从未被禁用,因此选择全局租户作为其活动租户的用户将不会遇到会话中断。此外,更改默认租户不会影响用户的会话。

在 UDB-SX Dashboards 中配置多租户

要在 Dashboards 中配置多租户,请按照以下步骤操作:

  1. 首先,在 Dashboards 主页菜单中选择 安全。然后选择屏幕左侧安全菜单中的 租户。将显示 Dashboards 多租户 页面。

  2. 默认情况下,将显示 管理 选项卡。选择 配置 选项卡以显示多租户的动态设置。

    • Dashboards 多租户 字段中,选择 启用 复选框以启用多租户。清除复选框以禁用该功能。默认值为 true

    • Dashboards 租户 字段中,您可以启用或禁用用户的私有租户。默认情况下复选框已选中,该功能已启用。

    • Dashboards 默认租户 字段中,使用下拉菜单选择默认租户。菜单包括 Global、Private 以及任何其他可供用户使用的自定义租户。

  3. 进行首选更改后,选择窗口右下角的 保存更改。将弹出一个窗口,列出您已更改的配置项,并要求您审阅更改。

  4. 选择要确认的项目旁边的复选框,然后选择 应用更改。更改将动态实施。

使用 REST API 配置多租户

除了使用 Dashboards 界面外,您还可以使用 REST API 管理动态配置。

获取租户配置

GET 调用检索动态配置的设置:

GET /_plugins/_security/api/tenancy/config

示例响应

{
  "default_tenant": "",
  "private_tenant_enabled": true,
  "multitenancy_enabled": true,
  "sign_in_options": [
    "BASIC"
  ]
}

更新租户配置

PUT 调用更新动态配置的设置:

PUT /_plugins/_security/api/tenancy/config
{
    "default_tenant": "test-tenant",
    "private_tenant_enabled": false,
    "multitenancy_enabled": true
}

示例响应

{
  "default_tenant": "test-tenant",
  "private_tenant_enabled": false,
  "multitenancy_enabled": true,
  "sign_in_options": [
    "BASIC"
  ]
}

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": false,
  "default_tenant": "test-tenant",
  "sign_in_options": [
    "BASIC"
  ],
  "password_validation_error_message": "A password must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one special character.",
  "password_validation_regex": """(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}"""
}