Security 配置核心要点

在 UDB-SX 中设置安全性对于保护您的数据至关重要。以下是 9 个核心要点,为保持系统安全提供了明确的步骤。

1. 自定义 PKI 设置 SSL/TLS

自定义公钥基础设施(PKI)虽需更多前期工作,但其灵活性更高,能以最安全和最高效的方式设置 SSL/TLS 。

为节点层和 REST 层流量启用 SSL/TLS

SSL/TLS 在传输层(用于节点间通信)默认启用。SSL/TLS 在 REST 层默认禁用。

要启用 REST 层的加密,需要以下设置:

plugins.security.ssl.http.enabled: true

用您自己的 PKI 替换所有演示证书

使用 install_demo_configuration.sh 初始化 UDB-SX 集群时生成的证书不适合生产环境。应将其替换为您自己的证书。

您可以通过几种不同的方式生成自定义证书。一种方法是使用 OpenSSL,详细描述请参阅生成自签名证书。此外,还有一些在线工具可以简化证书创建过程,例如:

2. 首选客户端证书认证进行 API 身份验证

客户端证书认证提供了一种比密码认证更安全的方式,并且更适合机器对机器的交互。它还确保较低的性能开销,因为身份验证发生在 TLS 级别。几乎所有客户端软件,例如 curl 和客户端库,都支持这种身份验证方法。

3. UDB-SX Dashboards 身份验证

通过 SAML 或 OpenID 等协议为 UDB-SX Dashboards 身份验证实施单点登录 (SSO),可以将凭据管理委派给专用系统,从而增强安全性。

这种方法最大限度地减少了在 UDB-SX 中直接处理密码的交互,简化了身份验证过程,并防止内部用户数据库变得混乱。

4. 限制分配给用户的角色数量

优先使用更少、更精细的用户角色,而不是多个简单角色,可以增强安全性并简化管理。

角色管理的其他最佳实践包括:

  1. 角色粒度:根据特定的工作职能或访问需求定义角色,以最小化不必要的权限。

  2. 定期角色审查:定期审查和审计分配的角色,以确保其符合组织策略和访问需求。

5. 验证 DLS、FLS 和字段掩码

如果配置了文档级安全 (DLS)、字段级安全 (FLS) 或字段掩码,请务必仔细检查您的角色定义,特别是当一个用户映射到多个角色时。强烈建议您通过向 _plugins/_security/authinfo 发出 GET 请求来测试这一点。

6. 审计日志配置:仅保留必要项

审计日志记录过多会降低系统性能,原因如下:

  • 每个记录的事件都会增加处理负载

  • 审计日志可能快速增长,占用大量磁盘空间

为确保最佳性能,请禁用不必要的日志记录,并有选择地使用哪些日志。如合规性无强制要求,可考虑关闭审计日志。如果审计日志记录对您的集群至关重要,请根据您的合规性要求进行配置。

只要可能,请遵循以下建议:

  • audit.log_request_body 设置为 false

  • audit.resolve_bulk_requests 设置为 false

  • 启用 compliance.write_log_diffs

  • 最小化 compliance.read_watched_fields 的条目。

  • 最小化 compliance.write_watched_indices 的条目。

7. 考虑禁用私有租户

在许多情况下,私有租户的使用是不必要的,尽管此功能默认启用。因此,每个 UDB-SX Dashboards 用户都被提供自己的私有租户和一个相应的新索引来保存对象。这可能导致大量不必要的索引。评估您的集群是否需要私有租户。如果不需要私有租户,请通过将以下配置添加到 config.yml 文件来禁用该功能:

config:
  dynamic:
    kibana:
      multitenancy_enabled: true
      private_tenant_enabled: false

8. 使用 securityadmin.sh 管理配置

使用 securityadmin.sh 来管理集群的配置。securityadmin.sh 是 UDB-SX 提供的一个命令行工具,用于管理安全配置。它允许管理员有效地管理安全设置,包括 UDB-SX 集群内的角色、角色映射和其他与安全相关的配置。

使用 securityadmin.sh 具有以下优点:

  1. 一致性:通过使用 securityadmin.sh,管理员可以确保集群内安全配置的一致性。这有助于维护标准化和安全的环境。

  2. 自动化:securityadmin.sh 能够自动化安全配置任务,从而更轻松地在多个节点或集群之间部署和管理安全设置。

  3. 版本控制:通过 securityadmin.sh 管理的安全配置可以使用标准版本控制系统(如 Git)进行版本控制。这便于跟踪更改、审计和恢复到以前的配置。

您可以通过使用 -backup 选项运行 securityadmin.sh 工具,备份当前通过 UDB-SX Dashboards UI 或 UDB-SX API 创建的配置,来防止配置覆盖。这样可以确保在使用 securityadmin.sh 上传修改后的配置之前捕获所有配置。

9. 替换所有默认密码

初始化 UDB-SX 时,internal_users.yml 中为许多内部用户(例如 adminkibanaserverlogstash)提供了默认密码。

您应该在启动时或集群运行后尽快将这些用户的密码更改为强、复杂的密码。创建密码配置是一个简单的过程,特别是在使用与 UDB-SX 捆绑的脚本时,例如位于 plugin/UDB-SX security/tools 目录中的 hash.shhash.bat

kibanaserver 用户是一个关键组件,它允许 UDB-SX Dashboards 与 UDB-SX 集群通信。默认情况下,在演示配置中为此用户预配置了默认密码。应在 UDB-SX 配置中将其替换为复杂的更强强且唯一的密码,并应更新 udbsx_dashboards.yml 文件以同步此更改。