5 大手段,打造单一可信源代码托管平台|极狐GitLab DevSecOps 助力 SLSA 落地之源代码篇


SLSA 框架建立了三个信任边界,鼓励用户采用正确的标准和防护手段来加强系统防御。这三个信任边界分别是:SourceBuild 以及 Package
 
 
而在每个边界处都有潜在的不安全操作,可能破坏整个体系的安全性。例如在源代码托管部分,一个未经验证的用户提交或一次未签名的提交等,可能将存在安全隐患的代码提交到仓库,最终成为软件供应链中的「一颗雷」。
 
一个可信的源代码托管平台是保证软件供应链安全的第一要素,也是助力企业落地 SLSA 框架的关键。
 
极狐GitLab
单一可信的源代码托管平台
 
极狐GitLab 是一个一体化安全 DevOps 平台,源代码托管是其重要功能。在经历了十多年的发展后,极狐GitLab 已成为具有多种安全防护手段的单一可信源代码托管平台,下文将介绍其中 5 种安全手段:
 
认证与密码保护
 
「认证」是保护一个平台安全的最基本要求。就像一个人在进入一栋建筑物时,需要认证是否为授权人员;进入建筑后,还要赋予对应权限,来允许其在不同区域进行对应的授权操作。
 
 
在认证阶段(进入建筑),极狐GitLab 支持 2FA 以及弱密码保护。
 
2FA(Two-factor authentication)是极狐GitLab 为账号提供了另一层安全保护,除了用户名密码外,还需要提供第二层认证因素(比如手机验证码)才可以登录账号。
 
用户只需要开启 2FA 配置即可:
 
 
2FA 能够有效防止用户在不小心丢失用户名密码的情况下,极狐GitLab 账号被恶意登录使用。
 
此外,极狐GitLab 在 15.4 开启了弱密码阻止功能。如果密码与已知的 4500+ 弱密码相匹配、密码中包含用户名或包含 gitlabdevops 等字样,会导致密码修改、创建失败,避免弱密码隐患。
 
此外,还可以通过设置密码长度,来确保密码足够健壮。
 
密码设置详情请查看官方文档:
https://docs.gitlab.cn/ee/user/profile/user_passwords.html
 
精细化权限管理
 
在授权阶段(进入建筑后的授权操作),极狐GitLab 使用 RBAC 进行精细化权限管理。
 
当将某个用户添加到某个 Group/Project 中时,通过赋予的角色(Role)来决定用户对于该 Group/Project 下的仓库具有何种操作权限。
 
目前可用的 Role 有:Guest、Reporter、Developer、Maintainer 以及 Owner。不同的 Role 具备不同的可执行权。
 
权限和角色详情请查看官方文档:
https://docs.gitlab.cn/ee/user/permissions.html
 
 
此外,极狐GitLab 还可以通过保护分支、CODEOWNERS 等功能实现对于分支、特定文件或目录的操作权限控制,确保只有授权用户才能执行对应操作。
 
Commit 签名
 
Commit 签名是为了确保代码提交者为代码变更的真实作者,防止代码被篡改,导致整个项目面临重大潜在安全风险。常用的 Commit 签名方法包括 GPG、SSH key 以及 X.509 证书等。
 
极狐GitLab 默认支持用 GPG 对 Commit 进行签名和验证。使用非常便捷,只需要在极狐GitLab 界面上配置好 GPG key:
 
 
接着只需要简单配置 git 即可:
 

 
git config --global user.signingkey YOUR-GPG-KEY
 
提交代码即可看到 Commit 现已验证
 
 
Code Reivew
 
Code Review 是确保质量安全内建的重要步骤。
 
通过 Code Review 可尽早发现代码中潜在的安全风险(如敏感信息硬编码、SQL injection、XSS 等),以最小成本完成安全问题修复,确保合入主分支的代码安全性是有保证的。
 
针对每次代码提交(MR),极狐GitLab 可以指派多个审核人对于变更代码进行多人多轮的 Code Review。
 
 
进一步,配合自定义的的多种代码准入规则(只有特定人员批准或满足特定条件的代码才允许被合入)构建多级代码安全保护机制。
 
 
安全审计
 
安全审计能够确保对于源代码的所有操作都有迹可查,便于追溯审计。
 
安全审计事件可以包括:
 
  • 实例密码变更;
  • 用户权限更改;
  • 用户 CRUD(增删改查)操作;
  • 项目导出与下载等。
 
这些事件(变更)的记录,对于了解源代码托管平台所发生的动态以及对应操作的变更人信息等,有着重要作用,能够有效防止源代码泄露。即使发生泄露,也可以通过回溯审计报告来查找可疑线索(比如某个即将离职的员工,在某时间段内疯狂下载代码)。
 
极狐GitLab 具备审计事件 “告警” 能力,主要分两类:审计事件和事件流
 
对于审计事件的告警,直接在极狐GitLab 的安全和合规面板中即可查看:
 
 
对于审计事件中支持的所有变更事件详情可以查看极狐GitLab 安全审计官网:
https://docs.gitlab.com/ee/administration/audit_events.html
 
而对于审计流来讲,可以将事件(变更)发送到第三方系统进行审计,比如 ELK。
 
第三方系统在接收到事件流之后会进行进一步的解析处理,最后通过展示面板进行可视化,方便管理员或者审计人员查看。而且,第三方系统还可以和一些告警工具结合起来,当有过度操作(大量下载)时,可以将告警信息通过 Email、Slack 等发送给管理员或安全人员。
 
 
源代码是企业的核心资产,单一可信的源代码托管平台是帮助企业高效安全管理企业源代码,防止核心资产泄漏的有效手段。