一个不眠之夜
“叮叮叮,叮叮叮”,一阵短促的微信音讯声将正在熟睡中的小安吵醒,小安下意识的拿起枕边的手机一看,凌晨三点半,手机屏幕上满满的都是源代码托管服务器发来的告警,他连忙查看告警详情,内容都是:用户:小蓝,IP:192.168.0.100,正在克隆 xx 仓库。
多条告警显示,小蓝正在大量克隆公司外部我的项目仓库。起初,小安认为是源代码仓库受到了歹意攻打,然而认真一看用户信息,显著是公司内部人员,而且只克隆与公司近期研发的 AI 医疗相干的仓库,其余产品线的并未克隆,小安认为公司内部人员不会在日上三竿还进行产品研发。
来不及多想,为了保障公司代码平安,小安将 IP 和用户名纳入了代码仓库治理的黑名单中,告警戛然而止,代码托管服务器日志也没有其余异样。小安悬着的心终于落地了,带着纳闷小安又眯了一会儿,期待下班。
第二天下班,小安将昨晚的事件通知了 SRE 团队的其余成员,顺便说起了那个用户 ID,后果其中一位共事说,那个 ID 是一个外围研发的,他始终在负责公司翻新我的项目 AI 医疗的研发工作,据说前段时间,有一家初创企业给了难以回绝的待遇,所以近期曾经在办理到职了。小安感觉事件不简略,于是立马将此状况向平安合规经理进行了汇报。平安合规经理非常重视这件事,立马和研发负责人进行沟通。
预先得悉,小蓝行将退出一家初创公司,他想把本人已经编写的一些算法代码带过来,而这也是他高薪待遇的一个条件,于是小蓝在早晨大家都进入梦乡的时候,用本人尚有权限的账号将过往的代码克隆下来,没想到克隆刚开始不久忽然账号就被封闭,无奈执行任何操作。
在月度平安合规复盘的时候,小安因为敏锐的安全感和及时采取的止损措施受到了平安合规经理的褒扬,小安有些腼腆地说:都是源代码托管平台的平安审计帮了忙。
源代码托管:最容易被从外部攻破的堡垒
下面小安公司遇到的状况就是软件研发畛域十分常见的源代码透露事件。现如今随着企业数字化转型的逐渐深刻,软件曾经成为撑持企业数字化转型的重要支点,而作为软件原材料的源代码天然也成为了企业的外围资产,源代码的透露或者受损也就意味着企业外围资产的受损。
然而,企业源代码透露的事件却频繁产生,比方 2018 年,某国内出名电子产品生产厂商产生了源代码透露事件,起因是一名实习生在到职的时候带走了局部源代码,而后将其分享给了做平安钻研的敌人,随后敌人将代码上传到了 GitHub 仓库下面,最终导致源代码透露,影响了大量应用该公司电子产品的用户;再比方 2022 年,某国内出名汽车厂商产生了重大的数据透露事变,多达 300,000 万的客户数据被透露,外面蕴含大量的集体敏感信息,预先剖析得悉,数据透露的起因是分包商不小心将代码上传到了公共仓库,而这些代码蕴含了重要的敏感信息,从而影响了 2017 – 2022 年间注册了厂商某 App 的所有客户。
源代码的平安防护是一个重要话题,须要采取多种手段来构建平面的防护机制,比方用户登陆认证受权(事先)、用户拜访权限管制(事中)以及平安审计(预先)等。针对下面的几个代码透露事件,如果用好源代码托管的审计事件性能,是能够进行躲避的。
审计事件,构建源代码平安防护的“最初一道防线”
所谓审计事件是对重要事件进行追踪,通过对事件操作行为的剖析来及时阻止不合规的操作,最终保障事务主体的安全性。
对于源代码托管来讲,审计事件次要是对于源代码托管平台的操作进行追踪,诸如用户增删、代码仓库权限及拜访等,以便及时发现不合规的操作,防止源代码遭逢透露。
源代码托管审计事件三要素
源代码托管的审计事件的要害因素是三个“W”:
- Who:事件的操作主体。次要指对源代码进行操作的用户;
- When:事件产生的工夫。次要指用户对源代码托管平台执行某些操作时的具体工夫;
- What:操作主体做了什么具体操作。次要指对代码仓库的一些具体操作,诸如代码克隆、推送及拉取,仓库的可见性变更及用户增加和删除等。
源代码托管审计事件的价值
审计事件是构建源代码托管平台平安防护网的重要一环,残缺的审计事件具备以下价值:
- 防患于未然,及时止损:通过剖析用户的行为,及时发现不合规的操作,比方短时间内大量克隆代码仓库、将公有仓库改为公共仓库等,而后采取对应的措施来阻止不合规操作对应源代码的进一步操作,防止造成源代码透露或受损;
- 找事件真因,疾速定位:如果产生了源代码透露或者受损的状态,能够借助审计事件进行事变回溯,在过往的审计事件中找到可疑的人员、可疑的操作,再通过疾速排查来找到事变产生的真正起因;
- 立平安警钟,防止后患:残缺的平安审计流程能够通知内部人员,任何不合规操作都会被发现,如果触碰公司平安合规红线,就会受到公司的相应处罚,让所有公司人员造成平安合规意识,独特爱护公司外围资产平安。
极狐 GitLab 审计事件性能
极狐 GitLab 作为一体化的 DevSecOps 平台,具备残缺的审计事件体系,蕴含从实例级到群组级再到我的项目级,而且笼罩用户治理、认证受权、项目管理、代码写作、CI/CD 等方面。截止到 16.2 版本,极狐 GitLab 共有 132 项审计事件,而且还有局部审计事件在踊跃开发中。
极狐 GitLab 审计事件性能特点
极狐 GitLab 审计事件性能是极狐 GitLab 平安合规能力的重点性能之一,是付费性能(仅在业余及以上版本中可用),具备以下特点:
- 开箱即用:极狐 GitLab 审计事件性能开箱即用,用户无需进行额定配置,只须要导入付费版许可证即可开启应用,在对应的门路下即可查看针对实例、群组及我的项目相干的审计事件;
- 事件丰盛:极狐 GitLab 审计事件涵盖的范围广,蕴含的审计事件类型丰盛,如上图所示,截止 16.2 版,已有 132 项可用的审计事件,可能建设起一个很欠缺的审计防护体系;
- 迭代更新:极狐 GitLab 采取月度发版机制,可能对审计事件性能进行继续地迭代更新,据统计,在最近一年的发版(12 个版本)中,大概有 13+ 个与审计事件相干的重大改良公布,进一步改良了审计事件的性能;
极狐 GitLab 审计事件性能应用
针对实例级别的审计事件,能够通过 管理中心 → 监控 → 审计事件 来查看。比方能够在实例级别的审计事件中看到 SSH key 增加、集体拜访令牌创立、群组 / 我的项目创立、删除等事件。
审计事件会明确记录事件的操作主体(Author)、操作内容(Action)、操作工夫(Date)及操作源 IP 地址等信息。
同样地,能够通过 群组 → 平安 → 审计事件 查看与群组操作无关的事件:
因为极狐 GitLab 群组能够进行嵌套,因而能够用同样的办法查看子群组的审计事件信息。
通过 我的项目 → 平安 → 审计事件 查看与我的项目操作无关的事件:
此外,还能够将审计事件报告进行导出,而后发送给审计人员,审计人员能够在报告中通过过滤去查看对应的审计事件详情。
对于极狐 GitLab 审计事件的所有类型(实例级、群组级、我的项目级、其余)能够查阅极狐 GitLab 审计事件官网文档。
审计事件可能记录用户对于源代码托管平台的各种操作,然而不具备异样行为(可配置)的告警性能,以便在异样行为产生时,疾速操作,及时止损。为此,极狐 GitLab 提供平安审计事件流性能,将审计事件发送到第三方,配合第三方的事件剖析 + 告警性能来实现异样行为的告警。
审计事件流(audit events streaming)为旗舰版性能。
源代码托管的金丝雀:极狐 GitLab 审计事件流
极狐 GitLab 审计事件流性能能够将审计事件流发送到内部的流数据系统(能够承受并解决 JSON 格局的数据),而后再由流数据系统对数据进行剖析、存储、可视化及告警等操作。
能够为极狐 GitLab 实例、群组、子群组设置内部流数据系统。针对实例、群组 / 子群组及我的项目的操作事件就会以事件流的形式发送到配置好的内部流数据系统。审计事件流中除了上述的审计事件外,还包含对于 Git 操作的信息,比方对于代码的克隆(SSH 或 HTTPS)/ 推送、仓库的 Fork、MR 的创立等,而且审计事件流的性能会追随版本的更新而继续迭代。
更多对于极狐 GitLab 审计事件流的内容能够查看极狐 GitLab 官网文档。
极狐 GitLab 审计事件流的应用须要首先配置内部流数据系统,以实例级别的配置来讲,能够通过 管理中心 → 监控 → 审计事件 → 事件流 → 增加流目的地 来实现:
极狐 GitLab 审计事件流服务会将审计事件信息推送到配置好的服务外面,以克隆仓库来讲,如果受权用户克隆了某个仓库,那么内部流数据系统会收到如下的 JSON 信息:
{
"id": "5e194963-79bc-43ce-99f3-4190ff105b23",
"author_id": 1,
"entity_id": 6,
"entity_type": "Project",
"details": {
"author_name": "Administrator",
"author_class": "User",
"target_id": 6,
"target_type": "Project",
"target_details": "jh-gitlab-audit-events",
"custom_message": {
"protocol": "ssh",
"action": "git-upload-pack"
},
"ip_address": "127.0.0.1",
"entity_path": "xiaomage/jh-gitlab-audit-events"
},
"ip_address": "127.0.0.1",
"author_name": "Administrator",
"entity_path": "xiaomage/jh-gitlab-audit-events",
"target_details": "jh-gitlab-audit-events",
"created_at": "2023-08-24T02:38:24.945Z",
"target_type": "Project",
"target_id": 6,
"event_type": "repository_git_operation"
}
下面信息表明了操作人员信息(author_name)、执行动作(details.action)、操作仓库(details.entity_path 或 target_details)还有操作日期(created_at)、IP(details.ip_address 或 ip_address)等信息。能够将上述信息进行存储、剖析、可视化及告警来事件审计事件闭环。上面以 EFK(elasticsearch、filebeat、kibana)为例来演示整个过程。
将 filebeat 配置内部的流数据系统,间接承受来自极狐 GitLab 的审计事件流信息,而后 filebeat 将数据处理之后存储到 elasticsearch 中,再利用 kibana 的可视化能力实现对于审计事件信息的可视化解决,最初借助 kibana 的 alert 性能实现对异样操作的告警(发送邮件、slack 音讯或推送到其余零碎)。
能够在 kibana 中看到的审计事件信息,诸如明码变更、仓库可见性变更(从公开到公有或者相同)、我的项目删除等:
如果配置对应的 alert,当某项操作产生或者超过肯定阈值时就触发告警,告诉相干人员做进一步的解决。诸如当一个我的项目在肯定工夫内被某一个人频繁克隆,则能够触发告警,发送告警邮件到指定邮箱:
或者发送到钉钉等 IM 零碎上:
源代码作为企业的外围资产,应该受到重视,须要打造全方位的平安防护体系,而平安审计是作为保障代码外围资产外泄的一个重要伎俩。极狐 GitLab 审计事件和审计事件流可能造成代码平安审计的闭环,能够让用户对源代码仓库的操作都“活在阳光下”,及时发现违规、异样的操作来防止企业外围资产受损。