Hızlı Başlangıç: Güvenlik taraması GitHub iş akışı oluşturma

Bu hızlı başlangıçta, .NET kod tabanınızdaki güvenlik açıklarını bulmayı otomatikleştirmek için bir CodeQL GitHub iş akışı oluşturmayı öğreneceksiniz.

CodeQL'de kod veri olarak değerlendirilir. Güvenlik açıkları, hatalar ve diğer hatalar, koddan ayıklanan veritabanlarında yürütülebilecek sorgular olarak modellenir.

Önkoşullar

  • Bir GitHub hesabı.
  • .NET kaynak kodu deposu.

İş akışı dosyası oluşturma

GitHub deposunda,.github/workflows dizinine yeni bir YAML dosyası ekleyin. İş akışının amacını açıkça gösterecek anlamlı bir dosya adı seçin. Daha fazla bilgi için bkz . İş akışı dosyası.

Önemli

GitHub, iş akışı oluşturma dosyalarının .github/workflows dizinine yerleştirilmesini gerektirir.

İş akışı dosyaları genellikle aracılığıyla bir veya daha fazla GitHub Eyleminin bileşimini jobs.<job_id>/steps[*]tanımlar. Daha fazla bilgi için bkz . GitHub Actions için iş akışı söz dizimi.

codeql-analysis.yml adlı yeni bir dosya oluşturun, aşağıdaki YML içeriğini kopyalayıp içine yapıştırın:

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

Önceki iş akışı bileşiminde:

  • name: CodeQL, iş akışı durumu rozetlerinde "CodeQL" ifadesinin görüneceği adı tanımlar.

    name: "CodeQL"
    
  • Düğüm, on iş akışını tetikleyen olayları gösterir:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • .cs veya .csproj dosya uzantılarıylabiten dosyaların değiştiği dalda main veya pusholuştuğunda tetiklenen.pull_request
    • Her Perşembe saat 8:00 UTC'de çalıştırılacak cron işi olarak (zamanlamaya göre).
  • Düğüm, jobs iş akışının atılması gereken adımları oluşturur.

    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'nun en son sürümünde çalıştırılacak adlı analyze tek bir iş vardır.
    • C strategy # öğesini olarak languagetanımlar.
    • github/codeql-action/init@v1 CodeQL'i başlatmak için GitHub Eylemi kullanılır.
    • github/codeql-action/autobuild@v1 GitHub Eylemi .NET projesini oluşturur.
    • github/codeql-action/analyze@v1 GitHub Eylemi CodeQL analizini gerçekleştirir.

Daha fazla bilgi için bkz . GitHub Actions: Kod taramasını yapılandırma.

İş akışı durumu oluşturma rozeti

GitHub depolarının, depo dizininin kökünde bir README.md dosyası olması yaygın bir sıfattır. Benzer şekilde, çeşitli iş akışları için en son durumu bildirmek de güzeldir. Tüm iş akışları, README.md dosyasında görsel olarak çekici olan bir durum rozeti oluşturabilir. İş akışı durumu rozetini eklemek için:

  1. GitHub deposundan Eylemler gezinti seçeneğini belirleyin.

  2. Tüm depo iş akışları sol tarafta görüntülenir, istediğiniz iş akışını ve üç nokta (...) düğmesini seçin.

    • Üç nokta (...) düğmesi, seçili iş akışı için menü seçeneklerini genişletir.
  3. Durum oluştur rozet menü seçeneğini belirleyin.

    GitHub: Create status badge

  4. Durumu kopyala rozeti Markdown düğmesini seçin.

    GitHub: Copy status badge Markdown

  5. Markdown'ı README.md dosyasına yapıştırın, dosyayı kaydedin, işleyin ve değişiklikleri gönderin.

Daha fazla bilgi için bkz . İş akışı durumu ekleme rozeti.

Örnek CodeQL iş akışı durumu rozeti

Geçir -erek Başarısız Durum yok
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Ayrıca bkz.

Sonraki adımlar