クイックスタート: セキュリティ スキャンの GitHub ワークフローを作成する
このクイックスタートでは、CodeQL の GitHub ワークフローを作成し、.NET コードベースの脆弱性の検出を自動化する方法について説明します。
CodeQL では、コードがデータとして扱われます。 セキュリティの脆弱性、バグ、その他のエラーは、コードから抽出されたデータベースに対して実行できるクエリとしてモデル化されています。
前提条件
- GitHub アカウント。
- .NET ソース コード リポジトリ。
ワークフロー ファイルを作成する
GitHub リポジトリで、 .github/workflows ディレクトリに新しい YAML ファイルを追加します。 ワークフローの目的を明確に示す、わかりやすいファイル名を選択します。 詳細については、「ワークフロー ファイル」を参照してください。
重要
GitHub では、ワークフロー構成ファイルを .github/workflows ディレクトリ内に配置する必要があります。
ワークフロー ファイルにより、通常、jobs.<job_id>/steps[*]
を介して 1 つ以上の GitHub Action の構成が定義されます。 詳細については、「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@v3
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'
- .cs または .csproj ファイル拡張子で終わるいずれかのファイルが変更されている
main
ブランチでpush
またはpull_request
が発生するとトリガーされます。 - cron ジョブは、(スケジュールに従って) 毎週木曜日の 8:00 UTC に実行されます。
- .cs または .csproj ファイル拡張子で終わるいずれかのファイルが変更されている
jobs
ノードにより、ワークフローの手順が構築されます。jobs: analyze: name: analyze runs-on: ubuntu-latest strategy: fail-fast: false matrix: language: ['csharp'] steps: - name: Checkout repository uses: actions/checkout@v3 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
- 最新バージョンの Ubuntu 上で実行する
analyze
という名前のジョブが 1 つあります。 strategy
は C# をlanguage
として定義します。github/codeql-action/init@v1
GitHub Action は、CodeQL を初期化するために使用されます。github/codeql-action/autobuild@v1
GitHub Action は、.NET プロジェクトをビルドします。github/codeql-action/analyze@v1
GitHub Action は、CodeQL 分析を実行します。
- 最新バージョンの Ubuntu 上で実行する
詳細については、コード スキャンの構成に関する GitHub Actions の記事を参照してください。
ワークフロー状態バッジを作成する
GitHub リポジトリでは、通常、リポジトリ ディレクトリのルートに README.md ファイルを含めます。 同様に、さまざまなワークフローの最新の状態を報告することもお勧めします。 すべてのワークフローでは、README.md ファイル内で視覚に訴える状態バッジを生成できます。 ワークフロー状態バッジを追加するには、次の手順に従います。
GitHub リポジトリで、 [アクション] ナビゲーション オプションを選択します。
すべてのリポジトリ ワークフローが左側に表示されます。目的のワークフローと省略記号 ( [...] ) ボタンを選択します。
- 省略記号 ( [...] ) ボタンをクリックすると、選択したワークフローのメニュー オプションが展開されます。
[Create status badge](状態バッジの作成) メニュー オプションを選択します。
[Copy status badge Markdown](状態バッジ Markdown のコピー) ボタンを選択します。
Markdown を README.md ファイルに貼り付け、ファイルを保存して、変更をコミットしてプッシュします。
詳細については、「ワークフロー状態バッジを追加する」を参照してください。
CodeQL ワークフローの状態バッジの例
成功 | Failing | 状態なし |
---|---|---|
関連項目
次のステップ
.NET