--- title: "安全与多租户最佳实践" date: 0001-01-01 description: "围绕 Easysearch 安全模块的认证、授权、多租户与审计策略的整体设计建议。" summary: "安全与多租户最佳实践 # 这页不讲具体配置字段,而是从“安全架构设计”的角度,回答几个问题: 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-*)来归并 实践建议:" --- # 安全与多租户最佳实践 这页不讲具体配置字段,而是从“安全架构设计”的角度,回答几个问题: - 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: - [安全模块总览]({{< relref "/docs/operations/security/_index.md" >}}) - [用户、角色与访问控制]({{< relref "/docs/operations/security/access-control/users-roles.md" >}}) - [字段级安全]({{< relref "/docs/operations/security/access-control/field-level-security.md" >}})、[文档级安全]({{< relref "/docs/operations/security/access-control/document-level-security.md" >}}) - [本地安全配置(YAML)]({{< relref "/docs/operations/security/configuration/yaml.md" >}})