快速入门:创建安全扫描GitHub工作流
在本快速入门中,你将了解如何创建 CodeQL GitHub工作流,以自动发现 .NET 代码库中的漏洞。
在 CodeQL 中,代码被视为数据。 安全漏洞、bug 和其他错误建模为可针对从代码中提取的数据库执行的查询。
先决条件
- GitHub帐户。
- .NET 源代码存储库。
创建工作流文件
在GitHub存储库中,将新的 YAML 文件添加到 .github/workflows 目录。 选择一个有意义的文件名,这将清楚地指示工作流要执行的操作。 有关详细信息,请参阅 工作流文件。
重要
GitHub要求将工作流组合文件放置在 .github/workflows 目录中。
Workflow files typically define a composition of one or more GitHub Action via the jobs.<job_id>/steps[*]
. 有关详细信息,请参阅GitHub Actions的工作流语法。
创建名为 codeql-analysis.yml 的新文件,将以下 YML 内容复制并粘贴到其中:
name: "CodeQL"
on:
push:
branches: [main]
paths:
- '**.cs'
- '**.csproj'
pull_request:
branches: [main]
paths:
- '**.cs'
- '**.csproj'
schedule:
- cron: '0 8 * * 4'
jobs:
analyze:
name: analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['csharp']
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 2
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
在前面的工作流组合中:
定义
name: CodeQL
名称“CodeQL”将显示在工作流状态锁屏提醒中。name: "CodeQL"
节点
on
表示触发工作流的事件:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- 在分支上
main
触发,pull_request
push
其中任何文件都以 .cs 或 .csproj 文件扩展名结尾。 - 作为 cron 作业 (按计划) - 每周四以 8:00 UTC 运行。
- 在分支上
节点
jobs
会生成工作流要执行的步骤。jobs: analyze: name: analyze runs-on: ubuntu-latest strategy: fail-fast: false matrix: language: ['csharp'] steps: - name: Checkout repository uses: actions/checkout@v2 with: fetch-depth: 2 - run: git checkout HEAD^2 if: ${{ github.event_name == 'pull_request' }} - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} - name: Autobuild uses: github/codeql-action/autobuild@v1 - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1
- 有一个作业,该
analyze
作业将在最新版本的 Ubuntu 上运行。 - 将
strategy
C# 定义为language
. github/codeql-action/init@v1
GitHub操作用于初始化 CodeQL。github/codeql-action/autobuild@v1
GitHub操作生成 .NET 项目。github/codeql-action/analyze@v1
GitHub操作执行 CodeQL 分析。
- 有一个作业,该
有关详细信息,请参阅GitHub Actions:配置代码扫描。
创建工作流状态锁屏提醒
GitHub存储库通常具有存储库目录根目录的 README.md 文件。 同样,最好报告各种工作流的最新状态。 所有工作流都可以生成一个状态锁屏提醒,该锁屏提醒在 README.md 文件中具有视觉吸引力。 若要添加工作流状态锁屏提醒,请执行以下操作:
从GitHub存储库中选择“操作”导航选项。
所有存储库工作流都显示在左侧,选择所需的工作流和省略号 (...) 按钮。
- 省略号 (...) 按钮展开所选工作流的菜单选项。
选择“ 创建状态锁屏提醒 ”菜单选项。
选择 “复制状态徽章 Markdown ”按钮。
将 Markdown 粘贴到 README.md 文件中,保存文件,提交并推送更改。
有关详细信息,请参阅 添加工作流状态锁屏提醒。
代码示例 CodeQL 工作流状态锁屏提醒
通过 | 失败 | 无状态 |
---|---|---|