1 行代码开启「密钥检测」,给敏感数据加上防护锁

news2024/10/7 4:30:22

💡 近日,在「DevSecOps 软件安全开发实践」课程上,极狐(GitLab) 高级专业服务交付工程师韩飞、极狐(GitLab) 前端工程师任治桐,分享了密钥检测的背景、应用及处理,并演示了极狐GitLab 密钥检测功能,快用 1 行代码开启密钥检测功能,给敏感信息加上安全锁。

以下内容整理自本次直播,你也可以点击👉观看视频回放或下载 PPT。Enjoy~

在应用程序开发过程中,开发人员为了本地 debug 方便,会 hardcode 一些信息,比如连接数据库的用户名、密码、连接第三方 APP 的 token、certificate 等,如果在提交代码的时候没有及时删除这些信息,则非常容易造成敏感信息泄漏,带来被拖库、撞库等风险。

举个例子:某公司一名工程师无意中将与客户往来的邮件以及系统登录信息(包括密码、密钥对和私钥)上传到公开的存储库上,黑客就使用公开的密码和密钥进入企业内部系统,进行偷窃数据、发布非法信息等操作,给企业造成了重大经济损失,严重影响客户信任与企业名誉。

类似的密钥信息泄漏案例屡见不鲜。有没有一种办法,能够在开发人员提交代码前,就提前发现代码中的密钥信息,规避密钥泄露风险?密钥检测应运而生。

密钥检测常见做法


企业进行密钥检测常用的方法包括:自研检测工具、开源工具整合、第三方检测服务、混合使用等。这些方法都有其优劣势,例如:

  • 自研检测工具:最大限度契合企业环境与需求,但需要投入大量人力与资源;

  • 开源工具整合:依赖开源工具的检测能力,需要自行维护与升级;

  • 第三方检测服务:可以快速建立密钥检测能力,但需要承担服务费用,功能上也受制于服务提供商,可持续性低;

  • 混合使用:工具链复杂,需投入资源进行管理与维护。

极狐GitLab 密钥检测优势


极狐GitLab 认为密钥检测是 DevSecOps 的重要话题,与软件开发全生命周期中的每一个人息息相关,最好的方式就是将密钥检测集成到 CI/CD 中,在开发人员提交代码时就同步进行检测,真正做到安全左移,持续监测

一体化:简化管理难度与复杂度

密钥检测作为七大 DevSecOps 功能之一,内置于极狐GitLab 中,无需繁琐的软件部署,实现扫描报告、配置、计划任务等统一界面管理,无需在多个软件系统之间切换,充分简化管理难度与复杂度。

配置简单:一行代码,即可启用

只需在极狐GitLab CI  配置文件中增加一行代码,即可将密钥扫描模板导入流水线,轻松启动密钥扫描,发现并修复项目的密钥安全问题。

覆盖全面:100 + 密钥扫描选项

极狐GitLab 密钥检测包含 100 + 种规则集,覆盖密钥安全检测方方面面,包括是否泄露或重复使用,密钥选择、长度、加密算法是否存在安全隐患等,帮助用户发现在日常使用中容易忽略的风险与漏洞。

开源开放:每一行源代码公开可见

极狐GitLab 作为开源软件,用户可以自由查看密钥检测功能的每一行代码,根据企业安全需求开发自定义和扩展默认功能。

并且,极狐GitLab 持续更新与改进密钥检测的规则与检测方式,以适应新的安全威胁与需求变化。用户可以随时查看更新的具体代码变更,获得更强的检测能力。

密钥检测「基础」使用方式


如前文所言,极狐GitLab 可通过一行代码,启用密钥检测。这是最基础的使用方法,可快速试用与评估密钥检测功能。

➤ 导入 CI 模板 .gitlab-ci.yml

在极狐GitLab CI/CD 中导入密钥检测的 CI 模板,模板仅包含一条启动密钥检测的作业,导入后可立即执行密钥扫描。

➤ 自动添加密钥检测作业

在 CI/CD 流水线部署阶段,自动添加一条启动密钥检测作业,使每个流水线在部署前自动执行密钥扫描,形成持续检测机制,发现密钥安全问题及早修复。

➤ 显示密钥检测报告

密钥检测作业完成后,在极狐GitLab 流水线界面展示扫描报告,说明检测到的各个密钥中存在的安全问题以及修复建议,辅助用户高效修复或更换不安全密钥。

密钥检测「进阶」使用方式


定制扫描范围

极狐GitLab 密钥检测支持定制扫描范围,用户可以根据安全策略与需求进行选择,如:

➤ 历史扫描

对仓库所有历史提交与标签运行密钥检测,发现仓库生命周期中任何时间点存在的密钥安全问题,进行系统性修复。

➤ 默认分支扫描

每次有合并请求被合并到默认分支时,自动运行密钥检测,确保默认分支的每次更新都符合安全标准,不存在密钥 related 问题。

➤ 合并请求扫描

每当有新的合并请求被创建时,自动运行密钥检测,检测合并请求中引入的 SSH 密钥是否存在任何安全问题,在代码被正式合并前发现与修复问题,实现安全的 Pull Request 流程。

➤ 推送事件扫描

每当有代码被推送至仓库时,自动运行密钥检测,实现持续的密钥安全检测,尽早发现和解决每次更新引入的任何密钥问题。

自定义规则级

不同企业可能有不同产品特点,需要匹配不同的安全规范。

极狐GitLab 密钥检测支持自定义规则级别,用户可根据企业安全要求,自定义规则级,生成最符合业务安全标准的检测报告。

极狐GitLab 密钥检测支持通过 .gitlab/secret-detection-ruleset.toml 文件,对检测规则进行高度自定义,例如:

➤ Slack Token 扫描规则定义

对仓库代码中泄露的 Slack Token 进行检测,防止未授权访问企业的 Slack 工作区。

➤ Tencent Cloud Secret 扫描规则定义

对腾讯云 Secret 的详细检测规则,有效防止重要凭证/敏感数据在代码仓库中遭到泄露,被未授权访问。

密钥检测后的处理


通过密钥检测发现密钥泄漏了,该怎么办?首先要做就是删除对应的密钥信息

泄露情况一般分两种:极狐GitLab 自己的 token 或第三方平台如腾讯云或 AWS token。

分别对应机制是:

  1. 极狐GitLab 自己的 token:如已开启 Token Revocation 开关,极狐GitLab 会自动撤销删除密钥,Token 信息失效;

  2. 三方平台 token:需手动配置撤销服务,极狐GitLab 调用自定义密钥撤销服务(Token Revocation API)进行处理。

整体流程

Step 1:在流水线中开启 Secret Detection Job 服务;

Step 2:通过流水线密钥扫描 Job 扫描代码库是否存在泄露密钥;

Step 3:判断泄漏的密钥信息是否为极狐GitLab 密钥;

Step 4:如果是极狐GitLab 密钥则自动删除;如果不是极狐GitLab 密钥,判断是否配置对应 Token Revocation API;

Step 5:如果是第三方密钥并配置了对应 Token Revocation API,则主动发送请求处理。

如何判断是否为极狐GitLab 密钥?

那么,极狐GitLab 是如何判断密钥信息是否为极狐GitLab 密钥?

极狐GitLab 通过 gitleaks 文件进行匹配,通过定义不同类型密钥的正则匹配模式,来判断检测到的密钥信息是否为极狐GitLab 密钥。

主要的判断规则如下图,如果检测到的密钥信息前缀是 glpat 或 glptt 则认为是极狐GitLab 密钥信息,进行自动删除处理。

如何自定义 Access Token 前缀?

极狐GitLab 默认密钥信息前缀是 glpat 或 glptt 类型,但也可以通过自定义方式来修改 token 前缀。

➤ 进入 Admin Area

➤ 点击 Settings → General

➤ 展开 Account and limit

➤ 填写 Personal Access Token prefix

添加自定义任意业务需要的字符串作为极狐GitLab token 前缀信息,极狐GitLab对应的 token 将会生成以该前置为规则的密钥信息。

Token Revocation 处理架构


如上图所示,主要流程为:

  1. 密钥扫描生成密钥检测报告(secret detection report)JSON 文件,记录检测到的各类 Token 泄露问题;

  2. 收集并存储所有的密钥扫描报告,通过 Sidekiq 触发定时任务;

  3. 循环检测是否存在未处理的 Revocation 请求;

  4. 如果存在,确认需要修复的问题所对应 Token 的类型,确定调用的撤销接口;

  5. 返回 Sidekiq ;

  6. 调用相应的 Token 撤销接口,提交参数信息请求撤销对应问题;

  7. 接口返回“accepted”,表示相关 Token 已被成功撤销。

完整的 Token Revocation 流程实现了从检测到修复的全生命周期密钥安全管理。准确的 Revocation 状态机制可以清晰了解每个问题的修复进度,使用户可以高效修复各类密钥/Token 泄露问题,确保代码安全。

如何配置自己的 Token Revocation 服务?

要实现自己的 Token Revocation API 服务,至少需要包含两个主要 API:

➤ 获取可撤销 Token 列表 API

返回需要被 Revocation API 处理的 Token 类型列表。

➤ 提交撤销请求 API

该 API 允许调用方提交针对某个泄露 Token 的撤销请求。这使检测到 Token 泄露的系统可以主动调用该 API 发起撤销流程。

极狐GitLab 密钥检测主要设置命令及其描述如下表:

具体实现:

  1. 进入极狐GitLab Rails 控制台;

  2. 配置如下:

密钥检测是防止软件系统密钥与凭证漏洞的有效方法,是提高应用与数据安全的重要手段。希望今天的分享对大家有帮助,让安全编码与运维成为广大开发者的共识与行动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频文件损坏无需再苦恼!快速修复方法分享!

如今录制视频或者从互联网下载视频都很简单,这些视频可以从笔记本电脑、电视甚至智能手机上用于观看或上传到自媒体平台/社交平台。 但视频有时会出现损坏的问题,导致视频无法正常播放,出现这种情况怎么办? 导致视频文件损坏的原…

家居购项目 1.分页导航 2.购物车 3.订单生成

文章目录 🐀Java后端经典三层架构🐇MVC模型🐇开发环境搭建🐇会员注册🌳前端验证用户注册信息🌳思路分析🍉创建表🍉创建实体类🍉DAO🍌MemberDAOImpl &#x1f…

怎么编辑pdf里面的文字?好用工具分享

PDF文件是一种非常常见的电子文档格式,它具有通用性、易分享、易打印的特点,因此广泛应用于各个领域中。然而,PDF文件通常是只读的,如果需要修改其中的文字,就需要使用专业的PDF编辑软件或者在线编辑工具。 市场上有很…

cuda编程学习——原子函数(十)

前言 参考资料: 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程:基础与实践 樊哲勇 文章所有代码可在我的GitHub获得,后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》,B站:出门吃三碗饭 …

文心一言 VS 讯飞星火 VS chatgpt (28)-- 算法导论5.1 3题

三、假设你希望以1/2的概率输出0与 1。你可以自由使用一个输出0或1的过程 BIASED-RANDOM。它以某概率 p 输出1&#xff0c;概率 1-p 输出0&#xff0c;其中 0<p<1 &#xff0c;但是 p 的值未知。请给出一个利用 BIASED-RANDOM 作为子程序的算法&#xff0c;返回一个无偏的…

pwm led

PWM Dimming (脉冲宽度调制) 调光——是一种利用简单的数字脉冲&#xff0c;反复开关灯光LED驱动器的调光技术。通过程序控制输出宽、窄不同的数字式脉冲&#xff0c;即可简单地实现改变输出电流&#xff08;电压&#xff09;&#xff0c;从而调节LED灯的亮度。 当PWM不是满占空…

真无线蓝牙耳机哪个牌子好用?六款真无线蓝牙耳机品牌推荐

无论我们是看视频还是在路上听音乐&#xff0c;真无线蓝牙耳机可以丰富我们的一天。然而&#xff0c;问题是有太多的选择&#xff0c;许多人不知道哪一款的性价比高音质好&#xff0c;下面小编特意整理了一期性价比高音质好的蓝牙耳机。 第一款&#xff1a;南卡小音舱lite2 蓝…

运维小白必学篇之基础篇第一集:Linux相关命令实验

Linux相关命令实验 实验者&#xff1a;胡 阳 命令提示符 【rootlocalhost ~】# 【当前登录系统的用户主机名 当前工作目录】提示符 &#xff08;# 表示 管理员&#xff09; &#xff08;&#xff04; 表示 普通用户&#xff09; 基本格式&#xff1a;命令 【选项】 【…

一文带你学习前端 - 自动化测试

theme: devui-blue 前端自动化测试 1. 自动化测试基本概念介绍 前言 一般我们实现功能&#xff0c;基本都是两部分写代码&#xff0c;调试/测试。写代码和测试的时间&#xff0c;基本都是55分。如果是测试逻辑&#xff0c;可能要打一下log&#xff0c;或者打断点去调试。测…

行业报告 | 工业机器视觉深度报告——兼具高成长和成熟技术的AI应用赛道

原创 | 文 BFT机器人 01 核心要点 核心观点: 工业机器视觉是高技术壁垒、商业模式成熟、国产替代迅速、行业快速发展的优秀赛道。行业端&#xff1a;3C电子是最主要的行业&#xff0c;新能源行业增速最快&#xff0c;受益于质量管控政策和行业高增速。技术端&#xff1a;大模型…

让工作效率提升10倍:十大AIGC工具评测

AI技术的普及已经在近年来不断增长。这种技术已经改变了我们与电脑的互动方式&#xff0c;让我们能够更高效、更自然地完成任务。本文将展示10个基于ChatGPT和GPT-3 AI模型构建的最强大的资源&#xff0c;使您更容易充分利用它们的潜力。因此&#xff0c;如果您想利用AI技术改进…

DiscoTOC - 自动内容表格

示例 桌面 移动终端 特性 toc table of contents&#xff08;内容列表&#xff09; 通过菜单上面的设置按钮&#xff0c;根据当前内容的状况一键生成 toc 列表Toc 将会一直在页面中尽显显示 —— 滚动内容与 topic 的链接是同步的当你滚动过当前页面中中的主题的时候&#…

Python numpy - 数组的创建与访问

目录 一 数组array的创建途径 1 列表list 2 函数array 3 函数arange 4 函数zeros 5 函数eyes 6 随机函数randn/ randint 二 数组array的访问 1 访问形状/元素个数/数据类型 2 访问一维数组的位置/范围 3 访问二维数组的位置/范围 4 用&#xff1a;访问二维数组的…

美国餐饮连锁集团【CAVA Group】申请纽交所IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自美国的餐饮连锁集团【CAVA Group】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纽交所IPO上市&#xff0c;股票代码为(CAVA) &#xff0c;CAVA Group…

基于SSM的疫情物资管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

公民开发者学习无代码编程,从CRUD开始

目录 1 创建数据表2 创建新增页面3 新增功能开发4 预览总结 自从Forrester2014年提出低代码的概念后&#xff0c;对于编程人员重新进行了划分。使用传统开发工具&#xff0c;使用代码进行编程的叫专业开发人员。使用低代码或者无代码开发工具&#xff0c;作为企业内部的人员&am…

基于深度学习的高精度老鼠检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度老鼠检测识别系统可用于日常生活中检测与定位老鼠目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的老鼠目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据…

如何确定bug是前端还是后端的错误?

前言&#xff1a;学会分析一个bug属于前端还是后端的错误&#xff0c;可方便开发快速定位问题&#xff0c;缩短与开发的沟通成本&#xff0c;也是测试人员的必备技能&#xff0c;笔者面试时就曾经被问到过&#xff0c;那就一起分析一波吧。 一、定义bug类型&#xff1a; 1、…

app渗透-抓包

app渗透-1 前言1.模拟器2.抓包工具-Fiddler2.1抓app包2.1.1设置模拟器2.1.2设置fiddler2.1.3使用 2.2抓小程序2.2.1抓包2.2.2解决抓不到https2.2.3解决抓不到包-12.2.4解决抓不到包-22.2.5解决抓不到包-3 前言 不要把app和小程序想的多困难&#xff0c;其实就是一个小的网站塞…

2023-06-01:讲一讲Redis常见数据结构以及使用场景。

2023-06-01&#xff1a;讲一讲Redis常见数据结构以及使用场景。 答案2023-06-01&#xff1a; 字符串&#xff08;String&#xff09; 适合场景 缓存功能 Redis 作为缓存层&#xff0c;MySQL 作为存储层&#xff0c;在大部分请求中&#xff0c;数据的读取通常是从 Redis 中…