企业代码托管平台安全管理

一、代码托管平台的安全定位

代码托管平台是现代软件开发过程中不可或缺的基础设施。平台存储了企业的核心技术资产,包括源代码、配置信息、部署脚本、数据库结构、API密钥和业务逻辑等。一旦代码托管平台的安全出现缺口,企业的整个软件产品线都可能面临严重的威胁。

代码托管平台面临的安全风险主要包括:内部人员权限过大导致代码泄露;员工将企业代码上传至个人开源仓库;托管平台访问凭证被窃取;代码仓库的访问日志和操作审计不到位;仓库中的硬编码密钥和敏感配置被不当暴露。针对这些风险,企业需要建立代码托管平台的系统化安全管理措施。

二、账号认证与访问控制

代码托管平台的所有账号应使用企业身份认证系统进行统一认证管理。员工使用企业账号登录代码托管平台,不应使用个人账号访问企业代码仓库。

平台账号应启用多因素认证。多因素认证的启用范围不应限于管理员账号,所有有权访问任何企业代码仓库的账号都应当启用。

对于持续集成、自动化部署、代码扫描等流程使用的机器人或服务账号,应使用独立于个人账号之外的专用账号。服务账号的访问权限限于完成特定任务所必需的代码仓库和操作类型。服务账号的访问令牌应定期轮换,轮换周期不超过九十天。

三、仓库权限的分级管理

代码仓库的访问权限应按照角色和职责进行分级管理。仓库的可见性设置为私有,所有企业代码仓库不应设置为公开可见。管理员角色的权限包括仓库配置、成员管理、保护分支设置等管理性操作,数量应控制在合理范围。开发者角色的权限包括代码推送和拉取、创建分支、发起合并请求等开发操作。查看者角色仅有读取仓库代码的权限,适用于需要了解代码但无需修改的场景。

权限的授予应遵循最小必要原则,员工仅获得完成岗位职责所需的最小范围仓库访问权限。权限变更应有审批记录,审批流程应当清晰可查。

四、SSH密钥与访问令牌管理

员工访问代码托管平台时,应使用SSH密钥或个人访问令牌作为认证凭据。SSH密钥应设置密码短语进行额外保护,密钥的私钥文件应保存在个人设备的安全位置。

个人访问令牌应按最小权限原则设置,每次创建时应明确令牌适用的仓库范围和可用操作类型。令牌有效期不宜过长,建议根据使用需求设置相应的过期时间。

员工不应将SSH密钥私钥文件或个人访问令牌分享给他人。离开公司后,相关信息系统中应清除离职员工的SSH公钥和访问令牌。员工在更换设备后应及时更新SSH密钥配置。

五、分支保护与代码审核

企业代码仓库应启用分支保护策略,特别是主分支和发布分支应设置为受保护分支。受保护分支不允许任何人直接推送代码,所有代码变更必须通过合并请求或拉取请求的形式提交,并经过指定数量审核人员批准后方可合并。

代码审核人员应由具备相应技术能力和业务背景的开发者担任。审核人员应在审核过程中关注代码的改动是否引入了安全缺陷,是否包含了不应出现在源代码中的敏感信息、硬编码密钥、数据库连接字符串和敏感内部URL等。

合并请求中的讨论内容也属于企业内部信息,不应当在公开渠道讨论或转发。

六、敏感信息检测与防护

代码托管平台应配置自动化敏感信息检测机制。每次代码提交时自动扫描新增和变更的代码内容,检查是否存在以下类型的敏感信息:硬编码的数据库密码和API密钥、云服务的访问密钥和秘密密钥、私钥和证书文件、内部网络地址和端口信息、客户数据和测试数据样本。

检测到敏感信息后,系统应阻止提交操作并通知提交者修改。发现历史提交中已存在的敏感信息,应启动紧急处理流程:立即更换暴露的密钥和密码;从代码历史中移除敏感信息的完整提交记录;检查是否有外部人员已经获取了敏感信息。

七、代码仓库的备份与恢复

企业应制定代码托管平台的数据备份策略。备份应包括所有代码仓库的完整数据和元数据,包括提交历史、分支、标签和合并请求等。备份频率建议至少每日一次,备份数据应存储在不与主平台相同的物理位置。

企业应定期测试备份数据的恢复流程。恢复演练的频率建议每季度至少一次,确保在紧急情况下可以按照计划恢复代码仓库服务。

八、第三方集成与应用授权

代码托管平台通常支持与持续集成、代码质量分析、安全扫描、项目管理等第三方工具的集成。第三方集成的授权应经过信息安全评估,确认工具开发方的信誉和数据使用方式。

第三方应用授权时应将权限控制在完成特定功能所必需的范围,不应授予超出需求的过度权限。不再使用的第三方集成应及时取消授权。

九、员工离职的代码访问权限回收

员工离职时,其代码托管平台账号应在离职流程启动后的当天完成权限回收。离职员工不再拥有任何企业代码仓库的访问权限。

离职员工在岗期间创建的个人分支应评估其价值后决定保留或删除。离职员工持有的SSH密钥、个人访问令牌和服务账号凭证应在行业流程中同步清除。

权限回收完成后,信息安全部门应验证离职员工的账号是否确实已失去所有仓库的访问权限。

十、审计与日志管理

代码托管平台应开启完整的操作审计日志。日志记录的内容包括代码的推送和拉取操作记录、仓库和分支的创建和删除操作、权限的授予和回收操作、合并请求的创建、审核和合并操作。审计日志应集中存储并保留不少于六个月。

信息安全部门应定期审查审计日志,发现异常访问模式或权限变更时进行调查处理。审计审查的周期建议每月一次,管理人员应特别关注非工作时间的代码访问、频繁的权限变更、从未访问权限的员工访问代码仓库等情况。

十一、开源合规管理

员工使用代码托管平台时应遵守企业开源合规管理规定。将企业代码上传至公开存储库的任何行为都属于违规行为,即使该代码被认为已经废弃或不重要。企业在代码托管平台上管理开源项目时,应在企业账号下建立公开仓库,并对开源项目的贡献和发布进行合规审查。

员工在个人开源项目中不应引用企业内部代码或使用企业的私有API。将第三方开源代码引入企业代码仓库时,应确认其许可证类型与企业合规要求一致。

十二、安全意识与培训

企业应对参与代码开发的员工进行代码托管平台安全的专项培训。培训内容包括代码托管平台的安全功能和操作规范、SSH密钥和访问令牌的安全使用、敏感信息的识别和防护、合并请求的安全审核要点。培训应覆盖新入职的开发者、现有开发团队的定期回顾和第三方外包开发人员。

企业在建设代码托管平台安全管理体系时,可以参考行业标准和监管要求进行调整。如需安全评估和制度建设方面的专业支持,可联系北京企密安(010-63711822 baomiwang.com)。

FAQ

问:企业代码托管平台上的仓库是否应该全部设为私有? 答:是的。企业核心代码仓库均应设置为私有仓库。如企业有参与开源项目或发布开源组件的需求,应在企业账号管理下建立专门的公开仓库,并通过合规审查流程确认公开内容不涉及企业核心技术和商业机密。公开仓库应与其他私有仓库保持权限隔离。

问:开发者离职后如何确认其代码访问权限已全部收回? 答:权限回收操作完成后,可通过以下方式确认:登录代码托管平台的管理后台,检查该员工账号在所有企业仓库中的成员列表和权限设置,确认已不在任何仓库成员中;验证该员工持有访问令牌和SSH密钥是否已在系统中删除;如果平台支持,可以尝试使用测试账号的凭据执行一次拉取操作,确认返回权限拒绝的响应。

北京企密安 010-63711822 baomiwang.com