Bagikan melalui


Mulai cepat: Membuat alur kerja GitHub pemindaian keamanan

Dalam mulai cepat ini, Anda akan mempelajari cara membuat alur kerja CodeQL GitHub untuk mengotomatiskan penemuan kerentanan di basis kode .NET Anda.

Di CodeQL, kode diperlakukan sebagai data. Kerentanan keamanan, bug, dan kesalahan lainnya dimodelkan sebagai kueri yang dapat dieksekusi terhadap database yang diekstraksi dari kode.

Prasyarat

  • Akun GitHub.
  • Repositori kode sumber .NET.

Membuat file alur kerja

Di repositori GitHub, tambahkan file YAML baru ke direktori .github/workflows . Pilih nama file yang bermakna, sesuatu yang akan dengan jelas menunjukkan apa yang dimaksudkan alur kerja. Untuk informasi selengkapnya, lihat File alur kerja.

Penting

GitHub mengharuskan file komposisi alur kerja ditempatkan dalam direktori .github/workflows .

File alur kerja biasanya menentukan komposisi satu atau beberapa GitHub Action melalui jobs.<job_id>/steps[*]. Untuk informasi selengkapnya, lihat Sintaks alur kerja untuk Tindakan GitHub.

Buat file baru bernama codeql-analysis.yml, salin dan tempel konten YML berikut ke dalamnya:

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

Dalam komposisi alur kerja sebelumnya:

  • menentukan name: CodeQL nama, "CodeQL" akan muncul dalam lencana status alur kerja.

    name: "CodeQL"
    
  • Simpul on menandakan peristiwa yang memicu alur kerja:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Dipicu ketika push atau pull_request terjadi pada main cabang di mana setiap file berubah berakhir dengan ekstensi file .cs atau .csproj .
    • Sebagai pekerjaan cron (sesuai jadwal)—untuk berjalan pada pukul 08.00 UTC setiap hari Kamis.
  • Simpul jobs menyusun langkah-langkah untuk diambil alur kerja.

    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
    
    • Ada satu pekerjaan, bernama analyze yang akan berjalan pada versi terbaru Ubuntu.
    • mendefinisikan strategy C# sebagai language.
    • github/codeql-action/init@v1 Tindakan GitHub digunakan untuk menginisialisasi CodeQL.
    • github/codeql-action/autobuild@v1 GitHub Action membangun proyek .NET.
    • github/codeql-action/analyze@v1 Tindakan GitHub melakukan analisis CodeQL.

Untuk informasi selengkapnya, lihat Tindakan GitHub: Mengonfigurasi pemindaian kode.

Membuat lencana status alur kerja

Nomenklatur umum bagi repositori GitHub untuk memiliki file README.md di akar direktori repositori. Demikian juga, ada baiknya untuk melaporkan status terbaru untuk berbagai alur kerja. Semua alur kerja dapat menghasilkan lencana status, yang menarik secara visual dalam file README.md . Untuk menambahkan lencana status alur kerja:

  1. Dari repositori GitHub pilih opsi navigasi Tindakan .

  2. Semua alur kerja repositori ditampilkan di sisi kiri, pilih alur kerja yang diinginkan dan tombol elipsis (...).

    • Tombol elipsis (...) memperluas opsi menu untuk alur kerja yang dipilih.
  3. Pilih opsi menu Buat lencana status.

    GitHub: Create status badge

  4. Pilih tombol Salin markdown lencana status.

    GitHub: Copy status badge Markdown

  5. Tempelkan Markdown ke dalam file README.md , simpan file, terapkan, dan dorong perubahan.

Untuk informasi selengkapnya, lihat Menambahkan lencana status alur kerja.

Contoh lencana status alur kerja CodeQL

Lulus Gagal Tidak ada status
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Lihat juga

Langkah berikutnya