安全与多租户最佳实践 #
这页不讲具体配置字段,而是从“安全架构设计”的角度,回答几个问题:
- Easysearch 集群应该如何接入现有身份体系(认证)?
- 权限应该怎么分层:集群、索引、文档、字段?
- 多租户与业务隔离应该选什么模式?
- 审计与运维流程里,Easysearch 扮演什么角色?
具体配置与 API 细节,请以参考手册中的安全模块文档为准。
1. 认证:尽量接到现有身份系统上 #
推荐优先考虑的几种接入方式:
- 企业已有的 SSO / LDAP / AD / OIDC 等身份源
- 统一网关/反向代理(如 API Gateway / Ingress)前置认证,Easysearch 侧主要做鉴权
在 Easysearch 安全模块中:
- 通过配置后端(backend)连接外部身份源
- 使用角色映射将“后端角色”转换为 Easysearch 内部的“安全角色”
实践建议:
- 尽量避免在 Easysearch 里维护大量“本地用户”,而是以少量系统账号 + 外部身份源为主
- 为自动任务(备份、同步、监控等)单独准备技术账号与角色,避免用人类账号跑程序
2. 授权:从粗到细分层设计 #
可以从外到内分三层思考权限模型:
- 集群级:谁能做集群管理操作(如创建索引、调整设置、管理快照)
- 索引级:谁能读/写哪些索引(按业务域、租户、环境划分)
- 文档/字段级:在同一索引内,不同用户/角色是否看到不同的数据/字段
结合 Easysearch 的安全功能:
- 使用 角色 来封装一组权限(cluster + indices + document/field level)
- 对于跨多个索引的权限,可以用索引模式(如
logs-*,orders-*)来归并
实践建议:
- 先设计少量“基线角色”(如只读分析、业务写入、运维管理),再在此基础上做定制
- 对于高敏感字段(如 PII、密钥等),优先考虑字段级/文档级限制,而不是在应用层“忘记返回”
3. 多租户:按业务与风险选择隔离级别 #
常见多租户模式:
- 按索引隔离:每个租户一组索引(如
tenant-a-logs-*),通过角色限制可访问的索引模式 - 按字段标记隔离:在同一索引中用
tenant_id字段区分租户,再用文档级安全做过滤
权衡:
- 按索引隔离:
- 优点:边界清晰,易于做备份/迁移/生命周期管理
- 成本:租户多时索引数量增长,需要小心控制 shard 数量
- 按字段标记隔离:
- 优点:索引数量可控,适合租户数量特别多且单租户数据相对较少的场景
- 成本:文档级权限判断增加查询开销,模型更复杂
实践建议:
- 少量大租户:更倾向于“一租户一组索引”
- 大量小租户:更倾向于“按字段标记 + 文档级安全”,但要严格限制哪些查询能访问这些索引
4. 审计与运维:把安全融入日常流程 #
安全相关的日常工作包括:
- 定期审查角色与用户映射,清理不再使用的账号与权限
- 针对高风险操作(删除索引、修改安全配置等)启用审计与告警
- 在运维脚本与自动化任务中,使用“最小权限”的技术账号与角色
Easysearch 侧可以提供:
- 审计日志:记录关键安全事件(登录、鉴权失败、敏感操作等)
- 指标与告警:如权限相关错误的异常增长、可疑的访问模式等
这些能力可以与现有的日志/监控平台配合,形成整体安全观测面板。
5. 和其他章节的关系 #
- 认证与外部身份源对接的配置细节:见集成章节中的安全集成小节,以及参考手册的安全配置文档
- 多租户与索引划分的建模讨论:见数据建模章节中的多租户部分
- 索引生命周期与备份策略对安全与合规的支撑:见数据生命周期与备份/恢复相关章节
参考手册(API 与参数) #
如果你已经确定了安全与多租户的整体方案,下一步可以在这些 Reference 页面里查具体字段与 API: