安全与多租户最佳实践

安全与多租户最佳实践 #

这页不讲具体配置字段,而是从“安全架构设计”的角度,回答几个问题:

  • Easysearch 集群应该如何接入现有身份体系(认证)?
  • 权限应该怎么分层:集群、索引、文档、字段?
  • 多租户与业务隔离应该选什么模式?
  • 审计与运维流程里,Easysearch 扮演什么角色?

具体配置与 API 细节,请以参考手册中的安全模块文档为准。

1. 认证:尽量接到现有身份系统上 #

推荐优先考虑的几种接入方式:

  • 企业已有的 SSO / LDAP / AD / OIDC 等身份源
  • 统一网关/反向代理(如 API Gateway / Ingress)前置认证,Easysearch 侧主要做鉴权

在 Easysearch 安全模块中:

  • 通过配置后端(backend)连接外部身份源
  • 使用角色映射将“后端角色”转换为 Easysearch 内部的“安全角色”

实践建议:

  • 尽量避免在 Easysearch 里维护大量“本地用户”,而是以少量系统账号 + 外部身份源为主
  • 为自动任务(备份、同步、监控等)单独准备技术账号与角色,避免用人类账号跑程序

2. 授权:从粗到细分层设计 #

可以从外到内分三层思考权限模型:

  1. 集群级:谁能做集群管理操作(如创建索引、调整设置、管理快照)
  2. 索引级:谁能读/写哪些索引(按业务域、租户、环境划分)
  3. 文档/字段级:在同一索引内,不同用户/角色是否看到不同的数据/字段

结合 Easysearch 的安全功能:

  • 使用 角色 来封装一组权限(cluster + indices + document/field level)
  • 对于跨多个索引的权限,可以用索引模式(如 logs-*, orders-*)来归并

实践建议:

  • 先设计少量“基线角色”(如只读分析、业务写入、运维管理),再在此基础上做定制
  • 对于高敏感字段(如 PII、密钥等),优先考虑字段级/文档级限制,而不是在应用层“忘记返回”

3. 多租户:按业务与风险选择隔离级别 #

常见多租户模式:

  • 按索引隔离:每个租户一组索引(如 tenant-a-logs-*),通过角色限制可访问的索引模式
  • 按字段标记隔离:在同一索引中用 tenant_id 字段区分租户,再用文档级安全做过滤

权衡:

  • 按索引隔离:
    • 优点:边界清晰,易于做备份/迁移/生命周期管理
    • 成本:租户多时索引数量增长,需要小心控制 shard 数量
  • 按字段标记隔离:
    • 优点:索引数量可控,适合租户数量特别多且单租户数据相对较少的场景
    • 成本:文档级权限判断增加查询开销,模型更复杂

实践建议:

  • 少量大租户:更倾向于“一租户一组索引”
  • 大量小租户:更倾向于“按字段标记 + 文档级安全”,但要严格限制哪些查询能访问这些索引

4. 审计与运维:把安全融入日常流程 #

安全相关的日常工作包括:

  • 定期审查角色与用户映射,清理不再使用的账号与权限
  • 针对高风险操作(删除索引、修改安全配置等)启用审计与告警
  • 在运维脚本与自动化任务中,使用“最小权限”的技术账号与角色

Easysearch 侧可以提供:

  • 审计日志:记录关键安全事件(登录、鉴权失败、敏感操作等)
  • 指标与告警:如权限相关错误的异常增长、可疑的访问模式等

这些能力可以与现有的日志/监控平台配合,形成整体安全观测面板。

5. 和其他章节的关系 #

  • 认证与外部身份源对接的配置细节:见集成章节中的安全集成小节,以及参考手册的安全配置文档
  • 多租户与索引划分的建模讨论:见数据建模章节中的多租户部分
  • 索引生命周期与备份策略对安全与合规的支撑:见数据生命周期与备份/恢复相关章节

参考手册(API 与参数) #

如果你已经确定了安全与多租户的整体方案,下一步可以在这些 Reference 页面里查具体字段与 API: