定义用户和角色

在 UDB-SX 中定义用户以控制谁可以访问 UDB-SX 数据,可以使用内部用户数据库来存储用户,也可以将它们存储在外部身份验证系统中,例如 LDAP

要定义角色以确定权限或操作组的范围,可以创建具有特定权限的角色,例如,包含集群范围权限、索引特定权限、文档和字段级安全以及租户的任何组合的角色。

可以在用户创建期间将用户映射到角色,或者在定义用户和角色之后进行映射。此映射根据分配的角色确定每个用户的权限和访问级别。

定义用户

您可以使用 UDB-SX Dashboards、internal_users.yml 或 REST API 来定义用户。创建用户时,您可以使用 internal_users.yml 或 REST API 将用户映射到角色。

UDB-SX Dashboards

  1. 选择 安全内部用户,然后创建内部用户

  2. 提供用户名和密码。Security 插件会自动哈希密码并将其存储在 .opendistro_security 索引中。

  3. 如果需要,指定用户属性。

    属性是可选项,可用于索引权限或文档级安全中的变量替换。

  4. 选择 创建

internal_users.yml

请参阅 YAML

REST API

请参阅创建用户

定义角色

与定义用户类似,您可以使用 UDB-SX Dashboards、roles.yml 或 REST API 来定义角色。UDB-SX 提供了预定义角色和一个特殊的只读角色。

UDB-SX Dashboards

  1. 选择 安全角色,然后创建角色

  2. 填写角色名称。

  3. 根据需要添加权限。

  4. 选择 创建

roles.yml

请参阅 YAML 文件

REST API

请参阅创建角色

编辑角色

您可以使用以下方法之一编辑角色。

UDB-SX Dashboards

  1. 选择 安全 > 角色

  2. 选择要编辑的角色。

  3. 选择 编辑角色。对角色进行任何必要的更新。

  4. 要保存更改,请选择 更新

roles.yml

请参阅 YAML 文件

REST API

请参阅编辑角色

将用户映射到角色

如果在创建用户时未指定角色,可以在之后将角色映射到该用户。

就像用户和角色一样,您可以使用 UDB-SX Dashboards、roles_mapping.yml 或 REST API 创建角色映射。

UDB-SX Dashboards

  1. 选择 安全角色,然后选择一个角色。

  2. 选择 映射用户 选项卡和 管理映射

  3. 指定用户或外部身份(也称为后端角色)。

  4. 选择 映射

roles_mapping.yml

请参阅 YAML 文件

REST API

请参阅创建角色映射

定义只读角色

只读角色授予用户从 UDB-SX 集群读取数据的能力,但不能修改或删除任何数据。当您希望为报告、分析或可视化目的提供数据访问,而不允许修改数据或集群本身时,只读角色非常有用。这可以保持数据完整性并防止意外或未经授权的更改。

与 UDB-SX 中的任何角色一样,可以使用以下方法配置只读角色:

  • 使用 UDB-SX Dashboards

  • 修改 yml 配置文件

  • 使用集群设置 API

熟悉角色和角色映射的最简单方法是使用 UDB-SX Dashboards。该界面简化了创建角色和将这些角色分配给用户的过程,具有易于导航的工作流程。

定义基本只读角色

要创建一个基本只读角色,允许用户访问 UDB-SX Dashboards、查看现有仪表板和可视化,并查询不同的索引,请使用以下权限。这些权限授予用户对集群上所有租户和索引的访问权限。

集群权限

对于需要读取集群范围资源(例如可视化或仪表板)的用户,请将 cluster_composite_ops_ro 权限添加到该用户的角色中。

索引权限

需要访问可视化视图的用户还需要访问用于创建可视化的索引。要授予用户对所有索引的只读访问权限,请在 索引 下拉菜单下指定全部(*),并在 索引权限 中指定 读 取

租户权限

如果您使用租户来分割团队或项目之间的工作,请使用全部(*)选项,后跟 只读 选项,如下图所示。

alt text

设置所有权限类型并定义角色后,您可以直接在角色的 映射用户 选项卡上将角色映射到用户。选择 映射用户,然后选择要映射到角色的用户,如下图所示。

映射用户

readonly_mode

UDB-SX Dashboards readonly_mode 功能用于授予用户仅访问 Dashboards 界面的权限,从视图中移除所有其他 UI 元素。

要配置此角色,请将以下行添加到 udbsx_dashboards.yml 文件中:

udbsx_security.readonly_mode.roles: [new_role]

即使分配的角色授予了额外权限或用户被映射到具有索引写入访问权限的其他角色,UDB-SX Dashboards 也会限制此访问权限。使用 CURL 或 API 直接访问 UDB-SX 数据仍然允许。UDB-SX Dashboards 不参与此通信。

如果用户被映射到 readonly_mode 角色,则 UI 的所有其他元素将被移除,除了 Dashboards。在下图中,左侧的视图显示了从映射到 readonly_mode 角色的用户角度看到的屏幕。右侧的视图显示了用户的标准视图。

比较只读模式

将用户仅映射到 readonly_mode 角色不允许他们查看相关索引或现有仪表板。对索引和仪表板的读取访问需要单独的权限。

如果用户还被映射到 udbsx.ymlplugins.security.restapi.roles_enabled 下列出的任何角色,例如 all_accesssecurity_rest_api_access,则 readonly_mode 被忽略,使他们能够访问标准 UI 元素。

额外权限

如果用户需要 read_only 角色中包含的权限之外的权限,例如用于警报或异常检测任务,则可以分配预定义角色,例如 alerting_read_accessanomaly_read_access

预定义角色

Security 插件包含几个预定义角色,可作为有用的默认值。

角色 描述
alerting_ack_alerts 授予查看和确认警报的权限,但不能修改目的地或监视器。
alerting_full_access 授予执行所有警报操作的完全权限。
alerting_read_access 授予查看警报、目的地和监视器的权限,但不能确认警报或修改目的地或监视器。
all_access 授予对集群的完全访问权限,包括所有集群范围操作、对所有集群索引的写入权限以及对所有租户的写入权限。
anomaly_full_access 授予执行所有异常检测操作的完全权限。
anomaly_read_access 授予查看检测器的权限,但不能创建、修改或删除检测器。
asynchronous_search_full_access 授予执行所有异步搜索操作的完全权限。
asynchronous_search_read_access 授予查看异步搜索的权限,但不能提交、修改或删除它们。
cross_cluster_replication_follower_full_access 授予在跟随者集群上执行跨集群复制操作的完全访问权限。
cross_cluster_replication_leader_full_access 授予在领导者集群上执行跨集群复制操作的完全访问权限。
index_management_full_access 授予执行所有索引管理操作的完全权限,包括索引状态管理 (ISM)、转换和汇总。
index_management_read_access readall 相同,但增加了监控的集群权限。
ml_full_access 授予执行所有机器学习 (ML) 功能的完全权限,包括启动新的 ML 任务以及读取或删除模型。
ml_read_access 授予查看 ML 功能和结果的权限,但不能修改它们。
notifications_full_access 授予执行所有通知操作的完全权限。
notifications_read_access 授予查看通知及其配置的权限,但不能修改它们。
udbsx_dashboards_read_only 授予对 UDB-SX Dashboards 的只读访问权限。
udbsx_dashboards_user 授予对 UDB-SX Dashboards 的基本用户访问权限。
point_in_time_full_access 授予执行所有时间点操作的完全权限。
readall 授予集群范围搜索(如 msearch)和对所有索引的搜索权限。
reports_instances_read_access 授予生成按需报告和下载现有报告的权限,但不能查看或创建报告定义。
security_analytics_ack_alerts 授予查看和确认警报的权限。
security_analytics_full_access 授予使用所有 Security Analytics 功能的完全权限。
security_analytics_read_access 授予查看 Security Analytics 组件(如检测器、警报和发现)的权限。还包括允许用户搜索检测器和规则的权限。此角色不允许用户执行修改或删除检测器等操作。
security_manager 授予管理安全相关功能和配置的权限。
snapshot_management_full_access 授予执行所有快照管理操作的完全权限。
snapshot_management_read_access 授予查看快照管理操作和配置的权限,但不能修改它们。

示例

以下教程描述了在 UDB-SX Dashboards 中创建批量访问角色的步骤。

创建新的 bulk_access 角色:

  1. 打开 UDB-SX Dashboards。

  2. 选择 安全角色

  3. 创建一个名为 bulk_access 的新角色。

  4. 对于 集群权限,添加 cluster_composite_ops 操作组。

  5. 对于 索引权限,添加一个索引模式。例如,您可以指定 my-index-*

  6. 对于索引权限组,添加 write 操作组。

  7. 选择 创建

将角色映射到您的用户:

  1. 选择 映射用户 选项卡和 管理映射

  2. 对于 内部用户,添加您的批量访问用户。

  3. 选择 映射

管理员和超级管理员角色

UDB-SX 用户角色对于控制对集群资源的访问至关重要。根据用户的访问权限和责任,可以将用户分类为普通用户、管理员用户或超级管理员用户。

普通用户

普通用户具有基本访问权限,允许他们与 UDB-SX 集群交互,例如查询数据和使用仪表板,但他们没有管理权限。

管理员用户

管理员用户具有提升的权限,允许他们在集群内执行各种管理任务。与普通用户相比,他们具有更广泛的访问权限,包括:

  • 管理用户和角色。

  • 配置权限。

  • 调整后端设置。

管理员用户可以通过在 udbsx.yml 文件中配置设置、使用 UDB-SX Dashboards 或与 REST API 交互来执行这些任务。

超级管理员用户

超级管理员用户在 UDB-SX 环境中具有最高级别的管理权限。此角色通常保留给选定的用户,应谨慎管理。

超级管理员用户对集群内的所有设置和数据具有不受限制的访问权限,包括:

  • 修改 Security 插件配置。

  • 访问和管理安全索引 .opendistro_security

  • 覆盖任何安全限制。

超级管理员角色的身份验证

超级管理员用户通过证书进行身份验证,而不是密码。必要的证书在 udbsx.yml 文件的 admin_dn 部分定义,并且必须使用相同的根证书颁发机构 (CA) 签名,如下例所示:

plugins.security.authcz.admin_dn:
  - "CN=Unvdb Admin,O=ShenZhen Unversal DB Company,L=Shenzhen,ST=Guangdong,C=CN"

如果超级管理员证书由不同的 CA 签名,则管理员 CA 必须与节点的 CA 连接在 udbsx.ymlplugins.security.ssl.http.pemtrustedcas_filepath 定义的文件中。

更多信息,请参阅配置超级管理员证书