Link Search Menu Expand Document Documentation Menu

多租户配置

OpenSearch Dashboards 默认启用多租户功能。如果需要禁用或更改与多租户相关的设置,请参阅 config/opensearch-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 必须与 opensearch_dashboards.yml 中 OpenSearch Dashboards 服务器用户的名称匹配。默认值为 kibanaserver。如果配置了不同的用户,请确保通过 role_mappings.yml 文件将该用户映射到 kibana_server 角色,以便授予他们 kibana_server 角色详情中列出的相应权限。
index 必须与 opensearch_dashboards.yml 中 OpenSearch Dashboards 索引的名称匹配。默认值为 .kibana
do_not_fail_on_forbidden 当为 true 时,安全插件会从搜索结果中删除用户无权查看的任何内容。当为 false 时,插件会返回安全异常。默认值为 false

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

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

添加租户

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

OpenSearch Dashboards

  1. 打开 OpenSearch Dashboards。
  2. 选择 SecurityTenantsCreate tenant
  3. 为租户命名并添加描述。
  4. 选择 Create

REST API

请参阅创建租户

tenants.yml

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

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

授予角色访问租户的权限

创建租户后,使用 OpenSearch Dashboards、REST API 或 roles.yml 为角色授予访问权限。

  • 读写(kibana_all_write)权限允许该角色查看和修改租户中的对象。
  • 只读(kibana_all_read)权限允许该角色查看对象,但不能修改它们。

OpenSearch Dashboards

  1. 打开 OpenSearch Dashboards。
  2. 选择 SecurityRoles 和一个角色。
  3. 对于租户权限,添加租户,按 Enter 键,并授予该角色读写权限。

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

管理 OpenSearch Dashboards 索引

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

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

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

要备份您的 OpenSearch Dashboards 数据,请使用诸如 .kibana* 的索引模式拍摄所有租户索引的快照

kibana_server 角色详情

OpenSearch Dashboards 使用 kibana_server 角色来执行必要的 OpenSearch 操作。默认情况下,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
  }
}
剩余 350 字符

有问题?

想贡献吗?