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. 限制分配给用户的角色数量
优先使用更少、更精细的用户角色,而不是多个简单角色,可以增强安全性并简化管理。
角色管理的其他最佳实践包括:
角色粒度:根据特定的工作职能或访问需求定义角色,以最小化不必要的权限。
定期角色审查:定期审查和审计分配的角色,以确保其符合组织策略和访问需求。
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 具有以下优点:
一致性:通过使用
securityadmin.sh,管理员可以确保集群内安全配置的一致性。这有助于维护标准化和安全的环境。自动化:
securityadmin.sh能够自动化安全配置任务,从而更轻松地在多个节点或集群之间部署和管理安全设置。版本控制:通过
securityadmin.sh管理的安全配置可以使用标准版本控制系统(如 Git)进行版本控制。这便于跟踪更改、审计和恢复到以前的配置。
您可以通过使用 -backup 选项运行 securityadmin.sh 工具,备份当前通过 UDB-SX Dashboards UI 或 UDB-SX API 创建的配置,来防止配置覆盖。这样可以确保在使用 securityadmin.sh 上传修改后的配置之前捕获所有配置。
9. 替换所有默认密码
初始化 UDB-SX 时,internal_users.yml 中为许多内部用户(例如 admin、kibanaserver 和 logstash)提供了默认密码。
您应该在启动时或集群运行后尽快将这些用户的密码更改为强、复杂的密码。创建密码配置是一个简单的过程,特别是在使用与 UDB-SX 捆绑的脚本时,例如位于 plugin/UDB-SX security/tools 目录中的 hash.sh 或 hash.bat。
kibanaserver 用户是一个关键组件,它允许 UDB-SX Dashboards 与 UDB-SX 集群通信。默认情况下,在演示配置中为此用户预配置了默认密码。应在 UDB-SX 配置中将其替换为复杂的更强强且唯一的密码,并应更新 udbsx_dashboards.yml 文件以同步此更改。