📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

snapshot_management.filter_by_backend_roles 配置项用于控制是否根据用户的后端角色来过滤快照管理策略

当设置为 true 时,系统会根据用户的后端角色权限来决定用户是否有权限执行特定的快照管理操作,实现基于角色的访问控制(RBAC)。

配置项属性 #

  • 配置路径: snapshot_management.filter_by_backend_roles
  • 数据类型: Boolean(布尔值)
  • 默认值: false
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(可以动态更新,无需重启)

配置项详解 #

工作机制 #

后端角色过滤机制

filter_by_backend_roles: false (默认,禁用过滤):

快照管理操作请求:
├── 用户请求执行操作
├── 跳过角色检查
├── 直接允许执行
└-- 不进行权限验证 ⚠️


特点:
├── 所有用户权限相同
├── 不检查后端角色
├── 快速响应
└-- 安全风险 ⚠️


filter_by_backend_roles: true (启用过滤):

快照管理操作请求:
├── 用户请求执行操作
├── 获取用户身份
├── 检查后端角色
├── 验证角色权限
│   ├── 有权限 → 允许执行 ✅
│   └── 无权限 → 拒绝执行 ❌
└-- 返回操作结果


特点:
├── 基于角色控制访问
├── 细粒度权限管理
├── 增强安全性
└-- 需要 RBAC 集成

权限验证流程 #

快照管理操作权限验证

操作类型:
├── 创建快照管理策略
├── 修改快照管理策略
├── 启动/停止策略
├── 删除快照管理策略
└-- 查看策略详情


验证流程:

1. 用户认证
   用户登录
       ↓
   获取用户信息
       ↓
   提取后端角色列表


2. 角色检查
   filter_by_backend_roles: true?
       ├── 是 → 检查角色 ✅
       │   ├── 用户有需要的角色?
       │   │   ├── 是 → 允许操作
       │   │   └── 否 → 拒绝操作
       │   └-- 返回结果
       │
       └── 否 → 跳过检查 ⚠️
           └── 允许所有操作


3. 操作执行
   权限验证通过
       ↓
   执行快照管理操作
       ↓
   返回操作结果


权限拒绝:
├── 返回 403 Forbidden
├── 错误信息: 缺少必要的后端角色
└-- 建议联系管理员

与安全系统集成 #

RBAC 集成

Easysearch 安全框架:
├── 用户认证
│   ├── 用户名/密码
│   ├── PKI 证书
│   ├── SAML/OIDC
│   └-- LDAP/AD
│
├── 角色管理
│   ├── 内置角色
│   ├── 自定义角色
│   ├── 后端角色映射
│   └-- 角色继承
│
└── 权限控制
    ├── 索引级权限
    ├── 集群级权限
    ├── 快照权限
    └-- 快照管理权限


后端角色:
├── 定义: 外部系统中的角色
├── 来源:
│   ├── LDAP 组
│   ├── AD 组
│   ├── SAML 断言
│   └-- OIDC Claims
├── 映射: 映射到 Easysearch 角色
└-- 用途: 权限验证基础


快照管理权限示例:
├── role: snapshot_admin
│   └── backend_roles: [snapshot-team]
│       ├── 创建策略 ✅
│       ├── 修改策略 ✅
│       ├── 启动/停止 ✅
│       └── 删除策略 ✅
│
├── role: snapshot_viewer
│   └── backend_roles: [snapshot-view]
│       ├── 查看策略 ✅
│       ├── 创建策略 ❌
│       ├── 修改策略 ❌
│       └-- 删除策略 ❌
│
└-- 无角色用户
    ├── 任何操作 ❌ (启用过滤时)
    └-- 任何操作 ✅ (禁用过滤时)

安全影响对比 #

安全影响分析

filter_by_backend_roles: false (默认)

优点:
├── 配置简单
├── 无需角色配置
├── 向后兼容
└-- 快速部署


缺点:
├── 无权限控制 ⚠️
├── 任何用户可操作 ⚠️
├── 安全风险高 ⚠️
├-- 不符合生产安全要求 ⚠️


适用场景:
├── 开发环境
├── 测试环境
├── 个人学习
└-- 概念验证


filter_by_backend_roles: true

优点:
├── 细粒度权限控制 ✅
├── 基于角色访问 ✅
├── 安全合规 ✅
├-- 审计追踪 ✅


缺点:
├── 配置复杂
├── 需要角色规划
├-- 需要安全集成


适用场景:
├── 生产环境 ✅
├── 多租户环境 ✅
├-- 企业部署 ✅

配置建议 #

生产环境(强烈推荐) #

snapshot_management:
  filter_by_backend_roles: true  # 启用角色过滤

建议: 生产环境必须启用,确保安全访问控制。

开发测试环境 #

snapshot_management:
  filter_by_backend_roles: false  # 简化配置

建议: 测试环境可以禁用,简化配置。

多租户环境 #

snapshot_management:
  filter_by_backend_roles: true  # 必须启用

建议: 多租户环境必须启用,实现租户隔离。

单用户环境 #

snapshot_management:
  filter_by_backend_roles: false  # 可选禁用

建议: 受信任的单用户环境可以禁用。

动态更新 #

PUT /_cluster/settings
{
  "transient": {
    "snapshot_management.filter_by_backend_roles": true
  }
}

代码示例 #

基础配置 #

snapshot_management:
  filter_by_backend_roles: true

安全配置 #

snapshot_management:
  filter_by_backend_roles: true

配合角色定义:

PUT /_security/role/snapshot_admin
{
  "indices": [
    {
      "names": ["*"],
      "privileges": ["all"]
    }
  ],
  "cluster": ["all"],
  "backend_roles": ["snapshot-team", "admin"]
}

角色映射 #

PUT /_security/role_mapping/snapshot_team_mapping
{
  "roles": ["snapshot_admin"],
  "rules": {
    "field": {
      "groups": ["snapshot-team", "cn=snapshot,ou=groups,dc=example,dc=com"]
    }
  }
}

创建策略(启用过滤) #

POST /_snapshot_management/_policies
{
  "name": "daily_snapshot",
  "snapshot_config": {
    "repository": "backup_repo",
    "snapshot_name": "daily-<now{yyyy-MM-dd}>"
  },
  "trigger": {
    "schedule": {
      "cron": "0 2 * * *"
    }
  }
}

只有具有对应后端角色的用户才能执行。

查看用户角色 #

GET /_security/user/_authenticate

相关配置 #

配置项作用默认值
filter_by_backend_roles后端角色过滤false

注意事项 #

  1. 默认值: 默认值为 false,但生产环境应设为 true

  2. 动态更新: 支持动态更新,无需重启。

  3. RBAC 依赖: 需要配置角色和角色映射才能生效。

  4. 安全集成: 与 Easysearch 安全框架紧密集成。

  5. 权限粒度: 支持细粒度的权限控制。

  6. 向后兼容: 禁用时保持向后兼容。

  7. 审计日志: 建议配合审计日志使用。

  8. 角色规划: 启用前应规划好角色体系。

  9. 测试验证: 启用前应测试所有操作。

  10. 生产建议: 生产环境强烈推荐启用。

使用场景 #

场景选择指南

企业生产环境:
├── 推荐配置: true ✅
├── 安全要求: 高
├── 用户数量: 多
├── 权限隔离: 需要
└-- 理由: 必须的权限控制


多租户 SaaS:
├── 推荐配置: true ✅
├── 租户隔离: 必须
├── 数据安全: 关键
├── 合规要求: 严格
└-- 理由: 租户数据隔离


开发测试环境:
├── 推荐配置: false
├── 安全要求: 低
├── 用户体验: 优先
├-- 配置简化: 需要
└-- 理由: 方便开发调试


个人学习环境:
├── 推荐配置: false
├── 用户数量: 1
├── 安全要求: 低
├-- 快速上手: 需要
└-- 理由: 简化配置


受信任的内部环境:
├── 推荐配置: true/false
├── 环境特点: 受信任
├-- 管理方式: 依政策
└-- 理由: 根据安全策略决定

安全配置示例 #

完整的安全配置方案

1. 启用后端角色过滤
   snapshot_management.filter_by_backend_roles: true


2. 定义角色
   ├── 管理员角色
   │   ├── backend_roles: [admin, snapshot-admin]
   │   └── 权限: 所有操作
   │
   ├── 操作员角色
   │   ├── backend_roles: [snapshot-operator]
   │   └-- 权限: 创建、修改、启动/停止
   │
   └── 查看者角色
       ├── backend_roles: [snapshot-viewer]
       └-- 权限: 仅查看


3. 配置角色映射
   ├── LDAP 组映射
   ├── AD 组映射
   ├── SAML 断言映射
   └-- OIDC Claims 映射


4. 设置审计日志
   ├── 记录所有操作
   ├── 记录访问失败
   ├── 定期审查日志
   └-- 异常行为告警


5. 定期审查
   ├── 审查角色定义
   ├── 审查用户权限
   ├── 移除过期权限
   └-- 更新安全策略

最佳实践 #

快照管理安全最佳实践

1. 生产环境必须启用
   ├── filter_by_backend_roles: true
   ├── 最小权限原则
   ├── 定期权限审查
   └-- 保持安全更新


2. 角色设计原则
   ├── 最小权限原则
   ├── 职责分离
   ├── 角色清晰命名
   ├── 文档化角色用途
   └-- 定期审查更新


3. 用户管理
   ├── 及时移除离职用户
   ├── 定期审查活跃用户
   ├── 强制密码策略
   ├── 启用多因素认证
   └-- 监控异常登录


4. 审计和监控
   ├── 启用审计日志
   ├── 记录所有操作
   ├── 定期审查日志
   ├── 设置告警规则
   └-- 保留日志足够时间


5. 安全测试
   ├── 定期安全审计
   ├── 权限测试
   ├── 渗透测试
   ├── 漏洞扫描
   └-- 安全培训