🤔什么是 SLSA?
SLSA( Supply chain Levels for Software Artifacts) 是一个安全框架,一系列关于标准和控制的清单,用来防止篡改、提高完整性以及保护项目、业务以及企业中软件包与基础设置的安全。
SLSA 安全框架基于行业共识创建,同时适用于软件生产者和软件消费者:
生产者:遵循安全标准让其研发的软件更安全;
消费者:根据所使用软件包的安全状态来做出对应的决策。
接下来,我们将从「源代码」、「依赖」等方面来讨论极狐GitLab DevSecOps 如何助力 SLSA 落地。本文为「源代码」篇,Enjoy~
可信的源代码托管平台是落地 SLSA 的关键
SLSA 框架建立了三个信任边界,鼓励用户采用正确的标准和防护手段来加强系统防御。这三个信任边界分别是:Source、Build 以及 Package。
而在每个边界处都有潜在的不安全操作,可能破坏整个体系的安全性。例如在源代码托管部分,一个未经验证的用户提交或一次未签名的提交等,可能将存在安全隐患的代码提交到仓库,最终成为软件供应链中的「一颗雷」。
一个可信的源代码托管平台是保证软件供应链安全的第一要素,也是助力企业落地 SLSA 框架的关键。
极狐GitLab:单一可信的源代码托管平台
极狐GitLab 是一个一体化安全 DevOps 平台,源代码托管是其重要功能。在经历了十多年的发展后,极狐GitLab 已成为具有多种安全防护手段的单一可信源代码托管平台,下文将介绍其中 5 种安全手段:
认证与密码保护
「认证」是保护一个平台安全的最基本要求。就像一个人在进入一栋建筑物时,需要认证是否为授权人员;进入建筑后,还要赋予对应权限,来允许其在不同区域进行对应的授权操作。
在认证阶段(进入建筑),极狐GitLab 支持 2FA 以及弱密码保护。
2FA(Two-factor authentication)是极狐GitLab 为账号提供了另一层安全保护,除了用户名密码外,还需要提供第二层认证因素(比如手机验证码)才可以登录账号。
用户只需要开启 2FA 配置即可:
2FA 能够有效防止用户在不小心丢失用户名密码的情况下,极狐GitLab 账号被恶意登录使用。
此外,极狐GitLab 在 15.4 开启了弱密码阻止功能。如果密码与已知的 4500+ 弱密码相匹配、密码中包含用户名或包含 gitlab、devops 等字样,会导致密码修改、创建失败,避免弱密码隐患。
此外,还可以通过设置密码长度,来确保密码足够健壮。
精细化权限管理
在授权阶段(进入建筑后的授权操作),极狐GitLab 使用 RBAC 进行精细化权限管理。
当将某个用户添加到某个 Group/Project 中时,通过赋予的角色(Role)来决定用户对于该 Group/Project 下的仓库具有何种操作权限。
目前可用的 Role 有:Guest、Reporter、Developer、Maintainer 以及 Owner。不同的 Role 具备不同的可执行权。
此外,极狐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 安全审计官网。
而对于审计流来讲,可以将事件(变更)发送到第三方系统进行审计,比如 ELK。
第三方系统在接收到事件流之后会进行进一步的解析处理,最后通过展示面板进行可视化,方便管理员或者审计人员查看。而且,第三方系统还可以和一些告警工具结合起来,当有过度操作(大量下载)时,可以将告警信息通过 Email、Slack 等发送给管理员或安全人员。
源代码是企业的核心资产,单一可信的源代码托管平台是帮助企业高效安全管理企业源代码,防止核心资产泄漏的有效手段。
🌟 以上就是极狐GitLab DevSecOps 助力 SLSA 落地之「源代码」篇,希望对您有帮助!
接下来我们将推出「依赖」篇等内容,敬请期待~