devEops权限体系设计解析:细粒度权限如何隔离开发与运维人员 devEops权限体系设计解析细粒度权限如何隔离开发与运维人员【免费下载链接】DevOps:smiley:DevOps System - :heart:devEops:heart: - 开发自运维平台 - 运维体系解决方案适用于多个应用环境的资产组织以及运维脚本的适配运行。项目地址: https://gitcode.com/gh_mirrors/devops84/DevOpsdevEops 是一个基于 Django 与 Django REST Framework 打造的开发自运维平台其核心特色之一就是拥有一套堪称教科书级的细粒度权限体系。在这套体系下权限不再是一刀切的管理员/普通用户两级开关而是精确到每个资源、每个动作的权限码组合从而在同一个平台上优雅地实现开发人员与运维人员的权限隔离。本文将从权限模型、权限码设计、接口拦截三个层面带你完整看懂这套权限体系的设计思路。为什么运维平台需要开发与运维隔离的权限设计在传统的运维平台中往往存在两类矛盾的需求开发人员需要查看资产、域名、数据库配置偶尔需要发布工单但不应拥有修改服务器密钥、执行高风险运维任务的权力运维人员负责资产管理、元操作定义、任务调度需要完整操作权限但不应接触业务代码配置。如果平台只提供全有或全无的权限开关要么开发人员权限过大带来安全风险要么运维工作处处受限。devEops 给出的答案是把权限拆到足够细再通过权限组按角色组合这正是本文要解析的细粒度权限隔离方案。devEops权限体系的核心Django Auth 权限码devEops 的权限体系建立在 Django 自带的 auth 认证体系之上但没有停留在简单的is_staff/is_superuser判断而是为每个业务模型自定义了一组语义明确的权限码permission codename。以用户管理模块 apps/authority/models.py 中的ExtendUser为例它在 Meta 中定义了这样一组权限权限码中文含义yo_list_user罗列用户yo_list_opsuser罗列运维用户yo_create_user新增用户yo_update_user修改用户yo_delete_user删除用户yo_list_pmngroup罗列权限组yo_create_pmngroup新增权限组yo_update_pmngroup修改权限组yo_delete_pmngroup删除权限组注意其中yo_list_opsuser这个特殊权限码——它单独用于罗列运维用户从模型层面就把运维人员这一角色与其他普通用户区分开了。类似的权限码还遍布资产管理manager.yo_list_host、manager.yo_create_host、元操作yo_list_metacontent、密钥、跳板机等所有核心模块。细粒度权限如何生效从权限码到接口拦截仅有权限码定义还不够关键在于如何拦截。devEops 采用 DRF 的BasePermission基类为每个资源模块编写了专属的权限 Mixin形成了一个接口对应一个权限码的拦截模式。以 apps/authority/permission/user.py 为例其核心逻辑非常清晰每个视图对应的权限 Mixin 都声明了一个permission_required权限码校验时取出当前用户的全部权限集合request.user.get_all_permissions()命中则放行未命中则拒绝超级管理员直接放行作为最高优先级。同样的模式被复用在资产主机apps/manager/permission/host.py、密钥管理apps/authority/permission/key.py、权限组apps/authority/permission/group.py、跳板机apps/authority/permission/jumper.py等所有模块中真正做到每个动作都有独立的开关。开发与运维人员如何通过权限组实现隔离细粒度权限码是零件权限组Group则是把这些零件组装成角色的图纸。devEops 完整保留了 Django 的 Group 模型用户通过加入不同的权限组获得不同的权限集合‍开发人员权限组只挂载资产查看、域名查询、工单发布等低风险权限码‍运维人员权限组挂载主机增删改、元操作创建、密钥管理、任务执行等完整权限码️超级管理员跳过全部权限校验负责权限组本身的维护。从源码可以看到ExtendUser通过多对多关系关联 Group并提供了get_group_name()方法把用户归属的权限组拼接展示。一个用户加入多个权限组时权限会自动取并集——这正是细粒度权限 角色组合的灵活之处也是开发与运维人员权限隔离得以优雅落地的关键。密钥保护与二次验证权限之外的纵深防御权限隔离解决了谁能做什么而敏感资源还需要额外的保护层。devEops 在细粒度权限之上还叠加了两道防线密钥加密存储服务器端直接生成 SSH-RSA 密钥私钥加密后存入数据库只有在执行运维操作或 SSH 连接时才临时解密使用避免密钥明文暴露Google Authority 二次验证ExtendUser模型内置qrcode字段与 TOTP 校验逻辑登录与关键操作可叠加动态口令即使权限被绕过也还有第二道闸门。这两项能力与权限码配合形成了权限控制 数据加密 动态口令的三层纵深防御让开发与运维人员即使共用一套平台也能各守边界、互不越权。总结可复用的细粒度权限设计思路回顾 devEops 的权限体系其设计思路可以提炼为三个可复用的要点权限码原子化为每个资源模型定义 list/create/update/delete 级别的独立权限码而不是粗粒度的角色开关拦截逻辑模板化基于 DRFBasePermission提炼通用 Mixin每个接口只需声明permission_required即可获得鉴权能力代码复用率极高角色组合化用 Django 原生 Group 承载权限组用户与权限组多对多关联天然支持一人多角色的复杂组织场景。对于正在搭建自运维平台或内部管理系统的团队来说devEops 的这套细粒度权限体系无疑是一份极具参考价值的实践样本它证明了开发与运维人员的权限隔离不需要复杂的独立权限引擎基于 Django 原生能力精心设计同样可以做到既安全又灵活。【免费下载链接】DevOps:smiley:DevOps System - :heart:devEops:heart: - 开发自运维平台 - 运维体系解决方案适用于多个应用环境的资产组织以及运维脚本的适配运行。项目地址: https://gitcode.com/gh_mirrors/devops84/DevOps创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考