bk-iam-saas
bk-iam-saas copied to clipboard
[蓝盾] 权限迁移预研
线上SaaS环境数据备份导入本地, 分析数据:
- 有多少用户组策略数据
- 有多少用户组定义权限策略数据
- 策略的数据上下文怎么待升级的的数据做映射
梳理下蓝盾剩余事项没有做完的部分:
- 用户组申请页面处理 -- 产品待定
- 用户组名称的长度512问题 -- 产品待定
- 分级管理员默认有权限的用户组成员同步问题 -- 产品待定
- 蓝盾整体对接体验 -- 蓝盾沟通12月底完成
- 蓝盾权限迁移 -- 正在进行, 分析数据, 出整体方案
目标:
- 年前开始部分灰度
- 年后整体迁移
预研进度:
- 分析数据完成
未处理:
- 新版操作映射 -- 需要蓝盾产品提供
- 资源 - 操作列表, 使用什么规则来找到用户组并加入
- project_views_manager/all_action 是否能平迁到 project_manage
- 现有的操作中 'env_node_view', 'env_node_delete', 'env_node_edit', 'env_node_use', 'repertory_edit', 'repertory_use', 'repertory_create', 'repertory_delete', 'env_node_create', 'repertory_view' 在列表中找不到
- 按现有用户拥有的实例权限, 最小可匹配到的用户组, 把用户加入其中, 定义最小匹配: 用户组拥有的操作列表必须是用户组操作列表的子集, 用户组操作列表集合与用户拥有的操作列表的差集取最小值, 为最小匹配用户组
- 如果匹配出没有用户组不满足怎么办, 理论上不应该有? 所以需要决策
- v0的数据也要考虑, 如果有超出怎么办, 不能只考虑v3的, v3的样本太小
- 迁移后如何快速做数据对比, 校验
- 在subject action resource 都有的情况下, 是否能直接走鉴权来判断数据是否正确
- 把现有的数据 subject - resource - action_ids 重组为 subject - action - resources的数据, 然后通过 subject - action 查询
rbac_subject_action_group_resource
表数据, 对比resources数据是否能覆盖 还需要剔除已经不存在的用户组
权限迁移的粒度, 是否完全按照资源实例的细粒度用户组迁移
3. 加入
- all_action不能平迁project_manage,应转化为「勾选除project_manage外所有的操作」
- env_node等这些线下对齐
- v3类的用户组直接平迁,“(类)自定义权限”的,如果完全符合单资源用户组,则转至直接转到单资源用户组,如不符合单资源用户组,则转为项目用户组,不过有些操作组合我们可以让它适度扩权。v0同理
- all_action -> 项目下的所有操作 -> 需要提供项目列表
- project_views_manager -> 不需要处理, 不对应任何新版的操作
2月重点跟进下
确定的步骤
- 分析出v3相关的权限数据
- 按项目分析出v0相关的权限数据
- 按项目拉取所有资源与用户组数据
- 按策略把权限数据中匹配的人加入到用户组中
- 完成一个项目调用通知接口通知迁移完成
需要确定的方案:
- 相关数据格式怎么提供
- 策略怎么报错
- 调用方式是怎样的
数据容量评估:
- 分级管理员数量
- 二级管理员数量
- 用户组数量
需要评估数据对于权限中心SaaS性能的影响 重要
相对来说SaaS对于数据库相关的优化很少
跟进:
拿到CI的用户组权限列表数据, 开始数据分析
- 跑出CI现有模型与原来模型不一致的操作
- 跑出单个人的权限与用户组不一致的情况, 做一个简要的数据说明, 需要做决策的点
跟进
已提供v3权限迁移相关api给到蓝盾