研发平台的数据访问控制,建议从划定数据边界开始,而不是先打开权限配置页面。先按敏感度把代码、流水线、制品、环境和文档分级,再按组织与项目划出隔离范围;接着把岗位职责写成角色—权限矩阵,在平台上配置到仓库、分支、流水线、制品库和环境;最后用定期复核、访问日志和入转调离回收验证效果。整个过程围绕最小权限、职责分离和可追溯三条原则展开。
要点总览(TL;DR)
- 访问控制从数据分级开始:先按公开、内部、受限、机密四级盘点代码仓库、流水线、制品库、环境和文档,再按组织、项目、环境划定隔离边界。
- 把岗位职责写成角色—权限矩阵,默认在项目级授权,仅对受限和机密对象下沉到对象级;删除、发布、生产环境访问单独授予,并落实职责分离。
- 配置按身份源接入、用户组绑定角色、仓库与分支保护、流水线与制品库权限、环境申请审批、临时账号时效控制的顺序推进。
- 用季度全量复核、高风险对象月度抽查、访问日志检查和入转调离回收验证确认权限有效,越权与职责分离冲突及时整改。
- ONES 支持按项目配置成员角色,并对工作项、迭代、文档等对象设置查看与编辑权限,可在项目级承接矩阵中的角色定义。
先定边界:哪些研发数据需要分级与隔离
访问控制的第一步是回答“哪些数据需要被保护、保护到什么程度”。如果分级不清,后续角色和规则就会失去依据,容易出现该收紧的仓库对全员开放、该共享的文档层层审批。建议由安全或平台负责人牵头,联合各项目负责人完成一次数据盘点,产出一份《研发数据分级与隔离边界清单》。
按敏感度划分四个等级
研发数据可按公开、内部、受限、机密四级划分,每级对应不同的访问门槛:
| 等级 | 典型数据 | 访问门槛 |
|---|---|---|
| 公开 | 已开源的组件、对外发布的技术文档 | 组织内可读,无需单独申请 |
| 内部 | 一般业务代码、内部设计文档、测试用例 | 项目成员默认可读,写入需角色授权 |
| 受限 | 核心业务代码、生产配置、制品库发布权限 | 按角色授权,敏感操作需审批 |
| 机密 | 密钥与凭证、生产环境、涉及客户数据的制品 | 最小范围授权,临时访问需审批并留痕 |
分级结果要落到具体对象上,而不是停留在制度文件里。每个代码仓库、每条流水线、每个制品库和环境都应有明确等级,等级决定它进入哪一类隔离边界。
按组织、项目、环境划定隔离边界
隔离边界通常有三个维度:组织维度按部门或业务线划分,避免跨部门默认可见;项目维度按项目空间隔离,项目之间默认不互通;环境维度把测试环境与生产环境分开,生产环境的访问范围应明显小于测试环境。三个维度叠加后,每个数据对象都能定位到“属于哪个组织、哪个项目、哪个环境”,这就是后续授权的作用范围。
纳入访问控制的对象范围
研发平台中需要纳入控制的对象至少包括:代码仓库及其分支、持续集成流水线、制品库、测试环境与生产环境、项目文档与知识库。此外,平台自身的系统配置、成员管理入口和密钥管理功能也属于受限或机密级,应单独授权。
完成盘点后,清单应包含:对象名称、所属组织与项目、数据等级、隔离边界、当前访问范围、目标访问范围。这份清单是下一节角色—权限矩阵的输入。
建角色与权限矩阵:谁在什么范围内做什么
有了数据边界,下一步把岗位职责翻译成可配置的角色和权限项。矩阵的作用是让授权有据可查:每个角色在每类对象上能做什么、不能做什么,一次写清,避免每次授权都临时判断。
常见角色划分
研发平台通常需要以下角色:平台管理员负责平台级配置与成员管理;项目管理员负责本项目内的成员与授权;开发人员负责代码提交、分支操作和流水线触发;测试人员负责测试环境访问与测试数据使用;运维人员负责生产环境部署与制品发布;外部协作方按合同范围获得有限访问;审计角色只读访问日志与权限清单,不参与日常授权。角色数量应与组织复杂度匹配,小团队可以合并部分角色,但审计与执行应保持分离。
权限粒度怎么选
权限粒度分三层:平台级权限控制谁能进入平台、谁能管理组织架构;项目级权限控制谁能加入项目、谁能管理项目成员;对象级权限控制具体仓库、分支、流水线、制品和环境的读写与操作。建议默认在项目级授权,仅对受限和机密对象下沉到对象级,避免权限项过多导致维护困难。
权限项定义与职责分离
权限项至少覆盖:读、写、删除、审批、发布、环境访问。其中删除、发布和生产环境访问属于高风险操作,应单独授予。职责分离要求开发人员不默认拥有生产发布权限,发布操作由运维执行或经审批后执行;权限审批人不能同时是申请人;审计角色不参与授权操作。这些约束要写进矩阵,而不是靠口头约定。
角色—权限矩阵表
矩阵按“角色 × 对象类型”组织,单元格填写允许的操作,空白表示无权限。下表为示例结构,实际填写时按项目情况调整:
| 角色 | 代码仓库 | 流水线 | 制品库 | 测试环境 | 生产环境 | 项目文档 |
|---|---|---|---|---|---|---|
| 平台管理员 | 平台级配置 | 平台级配置 | 平台级配置 | 平台级配置 | 平台级配置 | 平台级配置 |
| 项目管理员 | 读写、成员授权 | 读写、成员授权 | 读写 | 授权 | 申请 | 读写、授权 |
| 开发 | 读写(受保护分支除外) | 触发、查看 | 读取 | 访问 | 无 | 读写 |
| 测试 | 读取 | 触发测试流水线 | 读取测试制品 | 访问 | 无 | 读写 |
| 运维 | 读取 | 配置与执行发布 | 发布 | 访问 | 部署与运维 | 读取 |
| 外部协作方 | 指定仓库读取或写入 | 查看 | 无 | 按需申请 | 无 | 指定文档读取 |
| 审计 | 只读日志 | 只读日志 | 只读日志 | 只读日志 | 只读日志 | 只读 |
矩阵定稿后应版本化管理,每次调整记录变更人、变更原因和生效时间,作为后续复核的基准。
配置访问规则:从账号到对象的落地步骤
矩阵是设计,配置是把设计落到平台上的过程。建议按“身份—成员—对象—环境—临时权限”的顺序推进,每一步完成后再进入下一步,便于定位问题。
第一步:账号与身份源接入
先把平台账号与组织架构、单点登录打通,确保人员入职、调岗、离职时账号状态能同步变化。完成标志是:新成员能通过统一身份登录,离职账号在身份源停用后无法登录平台。身份源是后续所有授权的基础,跳过这一步,权限回收就只能靠人工排查。
第二步:建立用户组并绑定角色
按项目或团队建立用户组,把角色绑定到组而不是逐人授权。成员加入项目时加入对应组,离开时移出组,权限随之变化。完成标志是:项目内每个成员都能通过组归属解释其权限来源,不存在无组归属的孤立授权。
第三步:配置仓库与分支保护
对受限及以上等级的仓库设置分支保护:主分支禁止直接推送,合并需评审通过;删除仓库、修改保护规则等操作仅限项目管理员。开发人员按矩阵获得普通分支的读写权限。完成标志是:尝试直接向受保护分支推送会被拒绝,评审记录可查。
第四步:配置流水线与制品库权限
流水线的触发、编辑和删除分开授权,发布类流水线仅运维或经审批人员可执行。制品库按环境区分读写权限,测试制品与生产制品分开存放,生产制品的发布权限单独授予。完成标志是:开发人员能触发测试流水线但无法执行生产发布,制品库中生产制品的写入者仅有运维角色。
第五步:环境访问申请与审批
测试环境可按项目成员默认开放,生产环境采用申请制:申请人说明用途和时长,项目管理员或运维审批后开通,到期自动回收。审批记录与访问记录一并留存。完成标志是:生产环境访问均有申请单和审批记录,无审批的访问无法建立。
第六步:临时权限与外部账号时效控制
外部协作方和临时支援人员使用独立账号,绑定有效期,到期自动失效;临时提权设置最长时限,到期回到原权限。完成标志是:临时账号清单可查,过期账号无法登录,临时提权有到期时间。
在项目协作层面,ONES 支持按项目配置成员角色,并对工作项、迭代、文档等对象设置查看与编辑权限,成员加入项目时按角色获得对应范围的操作能力。对于以工作项和文档为主要载体的研发协作数据,可以把矩阵中的项目级角色直接对应到项目成员角色上,减少逐人配置的工作量。
角色分工与交付物:谁负责哪一步
权限设置涉及多个角色,职责不清会导致矩阵无人维护、离职权限无人回收。建议在方案启动时就把分工和交付物定下来。
| 角色 | 职责 | 交付物 | 交接方式 |
|---|---|---|---|
| 安全/平台负责人 | 制定数据分级标准与角色—权限矩阵,审批高风险授权规则 | 分级与边界清单、权限矩阵 | 评审会确认后发布,版本归档 |
| 项目管理员 | 执行本项目内的成员授权与回收,维护用户组 | 项目成员与角色清单 | 变更记录同步至平台,月度汇总 |
| IT/HR | 提供入职、转岗、离职事件,维护身份源 | 人员变动事件清单 | 事件触发后通知平台管理员处理 |
| 审计角色 | 定期复核权限清单与访问日志,跟踪问题整改 | 权限复核报告 | 报告提交安全负责人,问题闭环跟踪 |
交接的关键是事件驱动:人员变动、项目立项与结项、角色调整都应触发对应的权限变更,而不是等到季度复核才处理。每次变更留下记录,复核时才有依据。
示例:一个研发项目的访问控制配置
以下为演示情景,用于说明配置过程,不代表真实项目数据。
假设某项目组有 12 名成员,包含 1 名项目管理员、7 名开发、2 名测试、1 名运维,另有 1 名外部合作方参与前端模块开发。项目数据范围包括两个代码仓库(一个核心服务仓库为受限级,一个前端仓库为内部级)、两条流水线(测试与生产发布)、一个制品库、测试与生产两套环境、项目文档库。
角色分配与矩阵填写
项目管理员拥有项目内成员授权和仓库管理权限;开发人员对前端仓库读写、对核心仓库读写但受保护分支除外;测试人员对两个仓库只读、可触发测试流水线;运维负责生产发布流水线执行和生产环境部署;外部合作方仅获得前端仓库指定分支的读写权限和项目文档中前端目录的读取权限;审计角色由安全团队人员兼任,只读访问日志。
仓库、流水线与环境规则
核心服务仓库主分支开启保护,合并需至少一名开发评审通过,禁止直接推送;前端仓库主分支同样保护,外部合作方通过独立账号在功能分支提交,合并由项目管理员评审。测试流水线对开发和测试开放触发;生产发布流水线仅运维可执行,执行前需项目管理员审批。生产环境访问采用申请制,单次申请有效期 4 小时,到期自动回收。
外部协作方的临时权限处理
外部合作方账号绑定合作周期,设置为到期自动停用;权限范围限定在前端仓库和指定文档目录,不授予制品库和生产环境任何权限。合作结束后由项目管理员确认账号停用,并在权限清单中标注回收时间。
配置后的验证动作
配置完成后做四项验证:用开发账号尝试推送受保护分支,应被拒绝;用测试账号尝试执行生产发布流水线,应无权限;用外部账号访问核心仓库,应不可见;检查生产环境访问记录,确认均有审批单。四项通过后,配置视为生效。
验证与完成检查:怎么确认权限设置有效
权限配置完成不等于访问控制有效。需要通过定期复核、日志检查和事件验证,确认权限与人员、职责保持一致,并及时发现越权与冲突。
定期复核的周期与责任人
建议按季度开展全量复核,高风险对象(生产环境、机密级制品、外部账号)按月抽查。复核由审计角色组织,项目管理员提供本项目成员与权限清单,安全负责人确认高风险授权是否仍然必要。复核结论记录在案,发现的问题指定整改人和完成时间。
访问日志与异常访问检查
重点检查几类信号:非工作时间的生产环境访问、短时间内大量下载制品、权限申请被拒后的重复尝试、长期未使用但仍有效的授权。异常记录应能追溯到具体账号、时间和操作对象,便于判断是误操作还是权限配置过宽。
入转调离后的权限回收验证
每次人员变动后,抽查该人员账号的登录状态和项目成员关系:离职账号应无法登录且从所有用户组移除;转岗人员应退出原项目组、获得新岗位所需权限;入职人员权限不超过其角色矩阵范围。抽查结果记入复核记录。
越权与职责分离冲突排查
排查两类问题:一是同一账号同时拥有申请与审批权限,或开发人员拥有生产发布权限;二是存在矩阵之外的临时授权长期未回收。发现冲突后调整角色或收回权限,并记录调整原因。
完成检查清单与通过标准
| 检查项 | 通过标准 |
|---|---|
| 数据分级与边界清单 | 所有纳入控制的对象均有等级和隔离边界,无遗漏 |
| 角色—权限矩阵 | 矩阵已评审发布,每个角色权限可追溯到岗位职责 |
| 身份源接入 | 离职账号无法登录,人员变动可同步 |
| 仓库与分支保护 | 受保护分支直接推送被拒绝,评审记录可查 |
| 生产发布权限 | 仅授权角色可执行,执行前有审批记录 |
| 环境访问 | 生产环境访问均有申请与审批,到期自动回收 |
| 临时与外部账号 | 均有有效期,过期无法使用,清单可查 |
| 定期复核 | 季度全量复核完成,问题有整改记录 |
| 职责分离 | 无申请与审批同人、开发与生产发布同人的冲突 |
清单全部通过后,访问控制进入常态维护:人员变动触发权限变更,季度复核校验有效性,日志检查发现异常。ONES 的项目成员角色与工作项权限管理可以在项目级承接矩阵中的角色定义,配合成员变动时的角色调整,让权限回收和复核有明确的记录可查。
常见问题
小团队人手有限,角色和权限矩阵可以简化到什么程度?
可以合并部分角色,但合并后仍要保留三条约束:高风险操作单独授予、申请与审批不同人、审计与执行分离。例如 5 人以下的团队可由一人兼任平台管理员和项目管理员,开发和测试角色合并,但生产发布权限仍单独授予运维或指定负责人;审计职责可由团队外的人员兼任,按季度复核一次权限清单。合并的前提是矩阵中写清每个角色实际拥有的权限项,避免合并后出现无人负责的授权。
项目数量多、成员流动频繁时,逐个项目维护权限成本太高,有什么办法?
优先用用户组和角色绑定替代逐人授权:按团队或职能建立组,把角色绑定到组,成员进出项目时只调整组归属。同时把身份源接入作为前提,人员变动由身份源触发账号状态变化,减少人工排查。对于跨项目复用的角色,可以在矩阵中定义标准角色模板,新项目立项时直接套用,项目管理员只处理例外授权。定期复核时重点检查无组归属的孤立授权和长期未使用的授权,这两类往往是维护成本的主要来源。
外部协作方和临时支援人员怎么授权才安全?
外部人员使用独立账号,不共用内部成员账号;账号绑定合作周期或任务周期,设置到期自动停用。权限范围按合同或任务说明限定到具体仓库、分支或文档目录,制品库和生产环境默认不授予。临时提权设置最长时限,到期回到原权限。合作结束或任务完成后,由项目管理员确认账号停用,并在权限清单中记录回收时间,复核时抽查过期账号是否仍可登录。
权限配置完成后,怎么判断设置是否真的有效?
用实际账号做反向验证比看配置页面更可靠:用开发账号尝试推送受保护分支,应被拒绝;用测试账号尝试执行生产发布流水线,应无权限;用外部账号访问核心仓库,应不可见;检查生产环境访问记录,确认均有审批单。四项通过后配置视为生效。之后进入常态维护,按季度全量复核,生产环境、机密级制品和外部账号按月抽查,发现越权或职责分离冲突后调整角色并记录原因。
人员离职或转岗后,权限回收应该由谁触发、怎么验证?
由 IT/HR 提供人员变动事件,事件触发后通知平台管理员处理,项目管理员负责确认本项目内的成员关系已调整。验证时抽查该人员账号的登录状态和项目成员关系:离职账号应无法登录且从所有用户组移除;转岗人员应退出原项目组并获得新岗位所需权限。抽查结果记入复核记录。如果身份源已接入,账号停用可由身份源同步完成,但项目内的成员关系和对象级授权仍需项目管理员确认,这部分通常无法自动回收。
