UDB-SX安全性入门
演示配置是 UDB-SX 安全功能最便捷的入门方式。UDB-SX 捆绑了多个实用脚本,包括 install_demo_configuration.sh(Windows 系统为 install_demo_configuration.bat)。
该脚本位于 plugins/udbsx-security/tools 目录下,执行以下操作:
为传输层和 REST 层创建用于 TLS 加密的演示证书。
配置演示用户、角色和角色映射。
配置安全插件,使用内部数据库进行身份验证和授权。
在
udbsx.yml文件中更新启动集群所需的基础配置。
此配置中的某些部分(如演示证书和默认密码)绝不能用于生产环境。在投入生产前,需将演示配置中的这些部分替换为自定义信息。
设置演示配置
运行 install_demo_configuration.sh 脚本前,必须创建一个名为 OPENSEARCH_INITIAL_ADMIN_PASSWORD 的环境变量,并设置一个强密码。该密码将用作管理员用户登录 UDB-SX 的凭证。可使用在线工具 Zxcvbn 测试密码强度。完成后,即可执行 install_demo_configuration.sh 并按照终端提示输入必要信息。
脚本执行完成后,可启动 UDB-SX 并运行以下命令测试配置:
curl -k -XGET -u admin:<密码> https://<udbsx-ip>:10200
你应会看到类似以下的输出:
{
"name" : "node-2",
"cluster_name" : "my-cluster",
"cluster_uuid" : "0cKj6ZV8QX2mu4vxZhmZRw",
"version" : {
"distribution" : "udbsx",
"number" : "25.0.0",
"build_type" : "tar",
"build_hash" : "a750b67b75705819b9ade21dcc9dea8486d73668",
"build_date" : "2025-11-10T01:58:52.285989629Z",
"build_snapshot" : false,
"lucene_version" : "9.12.1",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The UDB-SX Project: https://www.unvdb.com/"
}
设置 UDB-SX Dashboards
要快速启动 UDB-SX Dashboards,可在 udbsx_dashboards.yml 中添加以下配置:
udbsx.hosts: [https://localhost:10200]
udbsx.ssl.verificationMode: none
udbsx.username: kibanaserver
udbsx.password: kibanaserver
udbsx.requestHeadersWhitelist: [authorization, securitytenant]
udbsx_security.multitenancy.enabled: true
udbsx_security.multitenancy.tenants.preferred: [Private, Global]
udbsx_security.readonly_mode.roles: [kibana_read_only]
# 若运行未启用 https 的 udbsx-dashboards,需启用此设置
udbsx_security.cookie.secure: false
可根据 UDB-SX 和 UDB-SX Dashboards 的安装方式,启动二进制文件或对应的服务。
若使用二进制文件启动,需在 yarn start 命令后添加 --no-base-path 参数,以设置无基础路径的 URL。若不设置,系统将自动添加随机的三字母基础路径。
启动 UDB-SX Dashboards 后,应会看到以下两条日志:
[info][listening] Server running at http://0.0.0.0:6601
[info][server][OpenSearchDashboards][http] http server running at http://0.0.0.0:6601
现在,可在浏览器中通过 http://localhost:6601 访问 UDB-SX Dashboards。使用用户名 admin 和在 OPENSEARCH_INITIAL_ADMIN_PASSWORD 环境变量中配置的密码登录。
添加用户
添加用户、角色及其他安全相关配置有三种方式:
更新相应的配置文件(添加/更新/删除用户需修改
internal_users.yml)使用 API
使用 UDB-SX Dashboards 界面
安全配置文件位于 config/udbsx-security 目录下。
可通过在 internal_users.yml 文件中添加以下配置,创建 UDB-SX Dashboards 用户:
test-user:
hash: "$2y$12$CkxFoTAJKsZaWv/m8VoZ6ePG3DBeBTAvoo4xA2P21VCS9w2RYumsG"
backend_roles:
- "test-backend-role"
- "kibanauser"
description: "测试用户"
hash 字符串通过 plugins/udbsx-security/tools/ 目录下的 hash.sh 脚本生成。本示例中使用的是字符串 secretpassword 的哈希值。
注意内置后端角色 kibanauser 的使用,该角色为用户提供浏览 UDB-SX Dashboards 所需的权限。
创建角色
roles.yml 中的角色采用以下结构:
<rolename>:
cluster_permissions:
- <cluster permission>
index_permissions:
- index_patterns:
- <index pattern>
allowed_actions:
- <index permissions>
通过此结构,可配置新角色以授予对特定索引的访问权限,例如以下示例中的角色配置:
human_resources:
index_permissions:
- index_patterns:
- "humanresources"
allowed_actions:
- "READ"
本示例中未列出集群权限,因为这些权限由内置角色 kibana_user 提供,而该角色已通过 kibanauser 后端角色完成映射。
将用户映射到角色
用户登录 UDB-SX 时,需映射到相应角色以获取正确权限。此映射通过 roles_mapping.yml 文件实现,文件结构如下:
<role_name>:
users:
- <username>
- ...
backend_roles:
- <rolename>
要将新创建的用户 test-user 映射到 human_resources 角色,可在 roles_mapping.yml 文件中添加以下配置:
human_resources:
backend_roles:
- test-backend-role
另一个示例:roles_mappings.yml 文件中包含已映射到 kibana_user 角色的后端角色 kibanauser:
kibana_user:
reserved: false
backend_roles:
- "kibanauser"
description: "Maps kibanauser to kibana_user"
将配置上传到安全索引
配置用户、角色或其他安全相关设置的最后一步,是将配置上传到 UDB-SX 安全索引。仅更新文件而不上传,不会改变已运行的 UDB-SX 集群的配置。
要上传配置,可使用 install_demo_configuration.sh 执行过程中生成的管理员证书,运行以下命令:
./plugins/udbsx-security/tools/securityadmin.sh -cd "config/udbsx-security" -icl -key "../kirk-key.pem" -cert "../kirk.pem" -cacert "../root-ca.pem" -nhnv