赞
踩
新钛云服已为您服务1230天
日常工作中,运维和开发同事通常会有自己的Github账号,用来上传自己编写的代码或存放博客文章、笔记等资料,有时会不经意的把公司或客户的敏感信息上传到Github,轻的会泄漏域名、IP等信息,重则泄漏系统的登录方式、密码,以及数据库的密码等非常重要的信息。
一旦发生此类事件,可能会给公司带来相当大的损失,影响公司形象,所以,我们需要一个自动化的扫描敏感信息的工具尽早发现此类问题,并对有敏感信息的库进行删除或设置为Private。
脚本使用Python编写,该部分会讲述该脚本的实现的思路与流程。
提交关键字
Github的搜索需要关键字,例如 example.com、mycompany123(mycompany为示例,实际可能是 cisco123、cisco@123)等,需要各同事集思广益,提交自己负责业务的关键字
注意关键字不能太过宽泛,例如某个IP地址,或非常常用的密码,例如password、abc123等,应该提供契合业务系统的关键字
为了方便提交以及删除旧关键字,我们不写到服务器的配置文件内,而是利用维格表 这款工具,下文会详细介绍
程序读取关键字
将会用维格表的API读取关键字,传给代码使用。
进行扫描,并输出日志
扫描后,将日志输出到维格表,方便查看。
告警发送
将扫描到的结果发送到钉钉,方便告警负责人员及时发现。
人工查看扫描日志,并做出判断
需要人工查看扫描到的结果是否为敏感信息。
处理发现的问题
如果确实是泄漏了敏感信息,需要找到代码的负责人,并删除仓库或设置为私有
维格表可以自行在网上搜索,注册账号后登录,这里不再介绍
创建扫描关键字表
表的名称为 "git-scan-info",表名称不是强制的,可以自定义
新建四列选项,如下
- 标题 :维格列类型为单行文本
- 类型 :维格列类型为 “单选”,目前仅有一个选项,即关键字
- 提交人 :同样为“单选”,表示是谁提交的关键字
- 提交时间 :维格列类型为“创建时间”,创建关键字时会自动出现创建时间
示例图如下:
创建扫描日志表
表的列名称如下:
- 扫描关键字
单行文本,脚本会将扫描内容时使用的关键字写到该列
- 文件名
单行文本,会展示从哪个文件中扫描到的
- 用户名
单行文本,会展示扫描到文件的所属人
- 仓库
单行文本,会展示扫描到文件的所属仓库
- URL
网址,显示扫描到文件的URL,可以直接点击后访问
- 扫描日期
日期,显示扫描时的时间
- 状态
单选,需要人工查看,如果是不相关的内容,可设置为白名单
示例图如下
需要编写一个配置文件,命名为 config.ini,存放access token等信息,示例如下:
- [GitHub]
- Access_Token = XXXXXXXXXX
-
- [Vika_API]
- api_token = XXXXXXXXXX
- git_scan_info_sheet = XXXXXXXXXX
- git_scan_log_sheet = XXXXXXXXXX
-
-
- [DingTalk]
- webhook = https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXX
- # 钉钉机器人的 secret
- secret = XXXXXXXXXX
- # 告警消息中显示的图片
- github_pic_link = https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fs10.sinaimg.cn%2Fmiddle%2F8d046893hbad7ee850439%26690&refer=http%3A%2F%2Fs10.sinaimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1624937350&t=118aa4b56f3983526c9043779773147d
- mobiles = XXXXXXXXXXX
我们对上面文件中的内容一一解释:
GitHub
- Access_Token
调用Github API时,需要该项,按下图示例,可获取到token
Vika_API
打开 "git-scan-info" 和 "git-scan-log"表,获取的示例图如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。