在Azur中使用GitHub高级安全性对GitHub存储库进行代码扫描

2020-10-28 07:17:13

GitHub Advanced Security现在支持从第三方CI管道中分析代码的语义漏洞。以前,此功能仅在GitHub操作中可用。在这篇文章中,我将通过使用YAML编辑器的节点应用程序,向您介绍Azure DevOps CI管道中GitHub高级安全代码扫描的简单实现。扫描后,代码扫描结果将重新出现在您的GitHub存储库中的Security选项卡下,供您的开发人员查看和修复。

如果您的组织没有启用GitHub高级安全,您将不会看到“代码扫描警报”或“检测到的秘密”。

我们将使用Azure DevOps管道,而不是将原生GitHub操作工作流与标准的“设置工作流”体验相结合。

我使用的Azure管道代理是短暂的,所以我在每次管道执行时都会安装CodeQl包。使用自托管代理时,请考虑预安装软件包,以节省时间和计算资源。

使用wget并瞄准最新的Linux发行版,我可以将所有必要的文件下载到一个新的codeql目录。我还会在运行下载的文件之前更改其权限。

-脚本:|wgetCodeQLchmod+x https://github.com/github/codeql-action/releases/latest/download/codeql-runner-linux-runner-linux displayName:';获取最新的CodeQL包。安装在代理上。';

创建个人访问令牌或使用GitHub应用程序进行身份验证。我正在使用PAT,并将其另存为$GitHub_PAT作为管道变量。

-脚本:|./codeql-runner-linux init--存储库octodemo/ghas-azure-devops-code-sccanning--gihub-url https://github.com--gihub-auth$gihub_PAT显示名称:';初始化代码QL可执行文件并创建代码QL数据库';

现在我想填充CodeQL运行器数据库,分析它们,并将结果上传到GitHub。

-script:|./codeql-runner-linux Analyze--pository octodemo/ghas-azure-devops-code-sccanning--gihub-url https://github.com--gihub-auth$gihub_PAT--Commit 92065de8b22bbfeda511d12571b66c9969ff593b--ref refs/head/master displayName:';填充CodeQL Runner数据库,分析它们,并将结果上传到GitHub.';

#使用GitHub代码扫描功能扫描我的节点应用中的语义漏洞#将任何漏洞上传回我的GitHub回忆录,供开发人员审核。触发器:-主池:VMImage:';ubuntu-最新';步骤:-任务:节点工具@0输入:版本规范:';10.x';显示名称:';安装节点.js';-脚本:|npm install npm test displayName:';npm安装和测试';-脚本:|wget https://github.com/github/codeql-action/releases/download/codeql-bundle-20200826/codeql-runner-linux chmod+x codeql-runner-linux displayName:';获取最新的CodeQL包。安装在代理上。';-脚本:|./codeql-runner-linux init--存储库octodemo/ghas-azure-devops-code-sccanning--gihub-url https://github.com--gihub-auth$gihub_pat displayName:';初始化CodeQ可执行文件并创建一个CodeQL数据库';-script:|./codeql-runner-linux Analyze--pository octodemo/ghas-azure-devops-code-sccanning--gihub-url https://github.com--gihub-auth$gihub_PAT--Commit 92065de8b22bbfeda511d12571b66c9969ff593b--ref refs/head/master displayName:';填充CodeQL Runner数据库,分析它们,并将结果上传到GitHub.';

如果成功,您应该能够导航回代码扫描下的存储库安全选项卡,以查看扫描结果。

如果您想要扩展要在扫描中包含的查询数量,请考虑向init添加一个config-file参数,并引用.github目录中的自定义配置文件。

-脚本:|./codeql-runner-linux init--存储库octodemo/ghas-azure-devops-code-sccanning--gihub-url https://github.com--gihub-auth$gihub_PAT--config-file.github/codeql/codeql-config.yml displayName:';初始化CodeQ可执行文件并创建CodeQL数据库';

祝贺您将GitHub高级安全代码扫描功能集成到您的Azure DevOps管道中!当您继续探索您的集成故事和可能的迁移路径时,请考虑利用本地GitHub操作来定义您的管道。

如果您有任何问题或建议,请在Twitter、LinkedIn上与我们联系,或联系销售部门寻求企业支持。