GitHub のコード スキャンを使用してサードパーティ ツールによるテストを拡張する
GitHub は、ワークフローはすべて違った特色を持つことを理解しています。私たちはユーザーをサポートするため、17,000 種を超えるアプリケーション インテグレーションの広範なエコシステムを含み伸張性のあるプラットフォームと、ソフトウェア開発ライフサイクル全体で事前構築された GitHub Actions テンプレートを用意しています。これは、オープン ソースと商用セキュリティ アプリケーションのセキュリティ ツール向けとして、動的分析、コンプライアンス、コンテナ スキャンなどのカテゴリを網羅した 70 種をこえるアクションを含んでおり、GitHub Advanced Security のネイティブ ソリューションを超えたテストの拡張に使用できます。セキュリティ問題が発生した場合、ワークフロー内でこのインテグレーションを介し即座に通知が行われ、GitHub で結果を配信するのと同じ形式で修復のためのインサイトが提供されるので、生産性を犠牲にするコンテキスト切り替えを回避することができます。
このガイドでは、インテグレーション例の設定手順について説明し、KPMG にいくつかのインサイトを再度紹介してもらいます。
KPMG では、クラウド インフラストラクチャ設定用の Checkov、コンテナー用の Trivy、コード品質用の ESLint など、さまざまな静的分析ツールを使用しています。パイプラインに複数のツールを追加しても、その結果をチェックしないというのは、よくある話です。しかし、全てをひとつの場所に集めれば、コード スキャンによって、使用する全てのツールをより簡単に活用できるようになります。 結果を見過ごすことがなくなります。GHAS のこの機能はかなり過小評価されています。
GitHub Actions を使用して、サードパーティのアプリケーション セキュリティ ツールを自動的に実行し、結果をアップロードしてコード スキャンで表示する方法を見てみましょう。
このガイドの学習内容
サードパーティ ツールが GitHub コード スキャンに役立つ理由
GitHub Actions を使用してサードパーティ ツールをコード スキャンに統合する方法
サードパーティのコード スキャン ツールの結果をコード スキャンで表示する方法
1.コンテナー スキャンを設定する。
まずは、組織がコンテナーをスキャンできるようにする包括的なセキュリティ機能である Trivy から始めましょう。このセクション内のロジックは全て、他のタイプのアプリケーション セキュリティや品質ツールにも適用できます。
次のファイルを .github/workflows
ディレクトリにドロップします。このファイルには好きな名前を付けることができますが、次のような適切な名前を付けることをお勧めします: trivy.yml
name: "trivy"
on:
workflow_dispatch:
push:
pull_request:
jobs:
trivy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
architecture: x64
- name: Cache Maven packages
uses: actions/cache@v3.3.1
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
- name: Build with Maven
run: mvn --no-transfer-progress verify
- name: "Set up QEMU"
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v2.2.0
- name: "Set up Docker Buildx"
if: runner.os == 'Linux'
uses: docker/setup-buildx-action@v2
- name: "Verify Docker WebGoat build"
if: runner.os == 'Linux'
uses: docker/build-push-action@v4.1.1
with:
tags: localbuild/testimage:latest
push: false
load: true
context: ./
file: ./Dockerfile
build-args: |
webgoat_version=${{ env.WEBGOAT_MAVEN_VERSION }}
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: 'localbuild/testimage:latest'
format: 'sarif'
output: 'trivy-results.sarif'
timeout: 20m0s
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v2
if: always()
with:
sarif_file: 'trivy-results.sarif'
このワークフローでは次のことを実行します。
Maven をインストールして Maven プロジェクトを構築する
Docker を設定し、アクション ワークフローでローカルに Docker ビルドを実行する
Trivy コンテナー スキャンを実行する
結果を GitHub コード スキャンにアップロードする
上記のファイルを ディレクトリにコミットしたら、[GitHub Actions] タブを選択します。Trivy ジョブが実行されています。
2. SARIF の結果を表示する。
Web Goat リポジトリで [セキュリティ] タブを選択します。
サイドバーから [コード スキャン] を選択します。
ツール フィルターをクリックし、[Trivy] を選択します。
Trivy の結果が表示されます。
次の項目: シークレット スキャンのスコープをカスタマイズする
Trivy は、コード スキャンで使用できる数多くのアプリケーション セキュリティ ツールの 1 つにすぎません。GitHub Marketplace を確認して、使用している全てのツールから SARIF ファイルを自動的にアップロードするのに役立つアクションを見つけてください。また、GitHub Actions の詳細については、自動化ラーニング パスを確認してください。
その前に、シークレット スキャンについてと、スキャンのスコープを調整する方法について説明しましょう。