多租户配置

UDB-SX Dashboards 默认启用多租户。如果您需要禁用或更改与多租户相关的设置,请参阅 config/udbsx-security/config.yml 中的 kibana 设置,如下例所示:

config:
  dynamic:
    kibana:
      multitenancy_enabled: true
      private_tenant_enabled: true
      default_tenant: global tenant
      server_username: kibanaserver
      index: '.kibana'
    do_not_fail_on_forbidden: false
设置 描述
multitenancy_enabled 启用或禁用多租户。默认值为 true
private_tenant_enabled 启用或禁用私有租户。默认值为 true
default_tenant 用于设置用户登录时可用的租户。
server_username 必须与 udbsx_dashboards.yml 中的 UDB-SX Dashboards 服务器用户名匹配。默认值为 kibanaserver。如果配置了不同的用户,请确保通过 role_mappings.yml 文件将该用户映射到 kibana_server 角色,以便授予他们 kibana_server 角色详情 中列出的适当权限。
index 必须与 udbsx_dashboards.yml 中的 UDB-SX Dashboards 索引名称匹配。默认值为 .kibana
do_not_fail_on_forbidden 当为 true 时,安全插件会从搜索结果中移除用户无权查看的任何内容。当为 false 时,插件会返回安全异常。默认值为 false

udbsx_dashboards.yml 文件包含其他设置:

udbsx.username: 'kibanaserver'
udbsx.password: 'kibanaserver'
udbsx.requestHeadersAllowlist: ["securitytenant","Authorization"]
udbsx_security.multitenancy.enabled: true
udbsx_security.multitenancy.tenants.enable_global: true
udbsx_security.multitenancy.tenants.enable_private: true
udbsx_security.multitenancy.tenants.preferred: ["Private", "Global"]
udbsx_security.multitenancy.enable_filter: false
设置 描述
udbsx.requestHeadersAllowlist UDB-SX Dashboards 要求您将所有 HTTP 头信息添加到允许列表中,以便头信息可以传递到 UDB-SX。多租户使用特定的头信息 securitytenant,该头信息必须与标准的 Authorization 头信息一起存在。如果 securitytenant 头信息不在允许列表中,UDB-SX Dashboards 将以红色状态启动。
udbsx_security.multitenancy.enabled 在 UDB-SX Dashboards 中启用或禁用多租户。默认值为 true
udbsx_security.multitenancy.tenants.enable_global 启用或禁用全局租户。默认值为 true
udbsx_security.multitenancy.tenants.enable_private 启用或禁用私有租户。默认值为 true
udbsx_security.multitenancy.tenants.preferred 允许您更改 UDB-SX Dashboards Tenants 选项卡中的排序。默认情况下,列表以 Global 和 Private(如果启用)开头,然后按字母顺序排列。您可以在此处添加租户以将它们移动到列表顶部。
udbsx_security.multitenancy.enable_filter 如果您有许多租户,可以在列表顶部添加搜索栏。默认值为 false

添加租户

要创建租户,请使用 UDB-SX Dashboards、REST API 或 tenants.yml

UDB-SX Dashboards

  1. 打开 UDB-SX Dashboards。

  2. 选择 安全租户创建租户

  3. 为租户指定名称和描述。

  4. 选择 创建

REST API

请参阅创建租户

tenants.yml

---
_meta:
  type: "tenants"
  config_version: 2

## Demo tenants
admin_tenant:
  reserved: false
  description: "Demo tenant for admin user"

授予角色对租户的访问权限

创建租户后,使用 UDB-SX Dashboards、REST API 或 roles.yml 授予角色对其的访问权限。

  • 读写(kibana_all_write)权限允许角色查看和修改租户中的对象。

  • 只读(kibana_all_read)权限允许角色查看对象,但不能修改它们。

UDB-SX Dashboards

  1. 打开 UDB-SX Dashboards。

  2. 选择 安全角色创建角色

  3. 对于 租户权限,添加租户,并授予角色对该租户的读和/或写权限。

REST API

请参阅创建角色

roles.yml

---
test-role:
  reserved: false
  hidden: false
  cluster_permissions:
  - "cluster_composite_ops"
  - "indices_monitor"
  index_permissions:
  - index_patterns:
    - "movies*"
    dls: ""
    fls: []
    masked_fields: []
    allowed_actions:
    - "read"
  tenant_permissions:
  - tenant_patterns:
    - "human_resources"
    allowed_actions:
    - "kibana_all_read"
  static: false
_meta:
  type: "roles"
  config_version: 2

管理 UDB-SX Dashboards 索引

开源版本的 UDB-SX Dashboards 将所有对象保存到单个索引:.kibana。安全插件将此索引用于全局租户,但为其他每个租户使用单独的索引。每个用户还有一个私有租户,因此您可能会看到大量遵循两种模式的索引:

.kibana_<hash>_<tenant_name>
.kibana_<hash>_<username>

安全插件会清理这些索引名称中的特殊字符,因此它们可能与租户名称和用户名不完全匹配。

要备份您的 UDB-SX Dashboards 数据,请使用索引模式(例如 .kibana*)对所有租户索引拍摄快照。

kibana_server 角色详情

UDB-SX Dashboards 使用 kibana_server 角色来执行必要的 UDB-SX 操作。默认情况下,kibanauser 通过 role_mappings.yml 文件映射到此角色。您可以通过向 _plugins/_security/api/roles/kibana_server API 发送 GET 请求来查看分配给此角色的完整权限列表(请在 GET 请求中包含管理员证书、密钥和证书颁发机构文件)。 以下列表包括分配给此角色的权限:

{
  "kibana_server" : {
    "reserved" : true,
    "hidden" : false,
    "description" : "Provide the minimum permissions for the Kibana server",
    "cluster_permissions" : [
      "cluster_monitor",
      "cluster_composite_ops",
      "manage_point_in_time",
      "indices:admin/template*",
      "indices:admin/index_template*",
      "indices:data/read/scroll*"
    ],
    "index_permissions" : [
      {
        "index_patterns" : [
          ".kibana",
          ".opensearch_dashboards"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices_all"
        ]
      },
      {
        "index_patterns" : [
          ".kibana-6",
          ".opensearch_dashboards-6"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices_all"
        ]
      },
      {
        "index_patterns" : [
          ".kibana_*",
          ".opensearch_dashboards_*"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices_all"
        ]
      },
      {
        "index_patterns" : [
          ".tasks"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices_all"
        ]
      },
      {
        "index_patterns" : [
          ".management-beats*"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices_all"
        ]
      },
      {
        "index_patterns" : [
          "*"
        ],
        "fls" : [ ],
        "masked_fields" : [ ],
        "allowed_actions" : [
          "indices:admin/aliases*"
        ]
      }
    ],
    "tenant_permissions" : [ ],
    "static" : true
  }
}