GitHub Advanced Security - 程序码扫描 (Code Scanning)

在前一篇文章GitHub Security - 基本安全相关功能介绍 内文中我们有对於 Repo 内相依功能进行扫描与警告进行说明,在这一篇文章,我们将介绍较为进阶的功能 - Code Scanning Alert。一般来说,我们常见多数软件在进行交付前(甚至交付後)才进行程序码扫描,因为多数的团队会认为安全工具的导入会影响开发速度,导致时程延宕,但管理者没有发现的是在软件开发流程中,越接近交付前发现安全漏洞并进行修复,耗损的成本越高,更不用说是已经上线的系统,如果安全漏洞被有心人士利用,其损失更是难以估计。倘若能在每一次修改中侦测出漏洞,即时让开发人员了解可能风险,在开发过程中遵循正确的撰写方式,即可避免资安问题发生,这也是我们在这系列文章前期提到的安全测试左移。

程序码扫描是用於分析 GitHub Repo 内程序码,进而找出安全漏洞与程序码错误,并产生结果在 GitHub 内。你可以设定在 GitHub Action 内,防止开发人员引进新问题;你也可以设定排程,也可以在触发特定事件时进行扫描。一旦发现安全漏洞,程序码扫描功能即会提出警告,直到问题修复程序码为止。

程序码扫描计费是透过 GitHub Action,执行期间会以分钟计算,你可以参考 GitHub Actions 基本介绍 - 开始自动化 workflow 的第一步

程序码扫描提供 CodeQL 与其他第三方扫描工具,可以依据需求选择

CodeQL 为 GitHub 提供的程序码分析引擎服务,你可以透过:
CLI: 在外部 CI 系统中运行 CodeQL CLI 并将结果上传到 GitHub
Action: 在 Repo 内加入 CodeQL Action 至 workflow

Code Scanning 可以对任何 Public Repo 进行设定,若为 Private Repo,则需要启用 GitHub Advanced Security (Enterprise 版本)


程序码扫描设定步骤

在 Repo 内点选 Security > Code Scanning Alert > 找到 CodeQL Analysis,点选 Set up this workflow

https://ithelp.ithome.com.tw/upload/images/20210920/200914943SJgtrnnl2.png

我们可以看见自动产生了 CodeQL 范本,若您对於 GitHub Aciton YAML 不熟,可以先阅读先前的文章:GitHub Action YAML - 语意解析与指令说明。这里我们专注於 strategy语法设定

fast-fast: 发生错误即停止
language: 支援语言,请依据 Repo 内的语言进行设定

    strategy:
      fail-fast: false
      matrix:
        language: [ 'csharp', 'javascript' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
        # Learn more:
        # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed

完成後,点选右上角 Start Commit,输入标题与描述後,点选 Commit new file 即可
https://ithelp.ithome.com.tw/upload/images/20210921/20091494l2WQTY3x6z.png

在 Repo 内点选 Actions > CodeQL,可以看进正在执行分析中
https://ithelp.ithome.com.tw/upload/images/20210921/20091494Bjz0cvv8SM.png

https://ithelp.ithome.com.tw/upload/images/20210921/20091494OFmHS1C4K0.png

执行完成後,你可以看到执行过程 Log
https://ithelp.ithome.com.tw/upload/images/20210921/200914945egl6GGc39.png

回到 Repo > Scurity,可以看见 Code Scanning 有相关报告可以检视。你可点选任一警告,会详细告诉您哪一行程序码有什麽问题。当你修复後,警告讯息即会消失。
https://ithelp.ithome.com.tw/upload/images/20210921/20091494uZTz36GZx8.png

https://ithelp.ithome.com.tw/upload/images/20210921/20091494lCxcif2RBF.png


阅读完本篇文章,你应该对於 GitHub Advanced Security 内的 Code Scanning 有初步的了解,并且知道其费用、如何设定、执行与检视报告。比较起其他安全扫描服务,个人觉得设定 GitHub 的 Code Scanning 较为容易也好维护。

若喜欢我的文章,欢迎点 like、分享与订阅,谢谢


<<:  【Day05】Data Flow 与 State

>>:  Day05【Web】Websocket、Polling 与 SSE

EP 3: Use Shell to layout TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

Kotlin Android 第20天,从 0 到 ML - RecyclerView - GradView

前言: RecyclerView 的 ListView 完成了,但我想要用GradView怎麽辨? ...

[Day14] 补充说明 – Cookie、Session和Token之Part1

哈罗大家好,我们今天来简单补充一下cookie、Session和Token,这里我会分成两天来介绍,...

img图片标签基本语法

img标签语法使用在html的加入图片的语法 需要注意地方是,img不需要做闭合标签的动作 常见不用...

目前的命题 | ML#Day11

根据前面作业做个检讨,决定新的题目需要有这些条件: 简单、明确,即使团队未参与ml研究的同仁,对於我...