CI/CD with GitHub Actions & DevOps Pipelines · レッスン

依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)

Software Composition Analysis、Dependabot、依存関係レビュー、アクションのバージョン固定を使い、脆弱なサードパーティーパッケージからパイプラインを保護します。

レッスン 4/413 ステップ

「依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)」はCoddyKit上の無料CI/CD with GitHub Actions & DevOps Pipelinesレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCI/CD with GitHub Actions & DevOps Pipelines学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。

ソフトウェアサプライチェーンのリスク

現代のアプリケーションは、ほとんどがサードパーティの依存関係で構築されています。依存関係ツリーの奥深くにある脆弱なパッケージ1つによって、アプリ全体が危険にさらされる可能性があります。

これがソフトウェアサプライチェーンのリスクであり、そのセキュリティ確保はDevSecOpsの重要な要素です。

SCAとは

ソフトウェア構成分析(SCA)は、プロジェクトの依存関係をスキャンし、既知の脆弱性(CVE)のデータベースと照合します。

あなたのコードを調べるSASTとは異なり、SCAはインポートするライブラリに焦点を当てます。

  • 既知の脆弱性があるバージョンを検出します
  • リスクのあるライセンスや互換性のないライセンスを警告します
  • 安全なアップグレード先のバージョンを提案します

Dependabotアラート

GitHubはDependabotを提供しています。Dependabotはマニフェストファイルを継続的にスキャンし、依存関係に既知の脆弱性があるとアラートを発生させます。

設定 > コードのセキュリティと分析で有効にします。アラートは重大度の評価とともにSecurityタブに表示されます。

依存関係の自動更新

Dependabotは、脆弱な依存関係を自動的に更新するプルリクエストを作成することもできます。dependabot.ymlファイルで設定します。

version: 2
updates:
  - package-ecosystem: npm
    directory: /
    schedule:
      interval: weekly

プルリクエストでの依存関係レビュー

dependency-review-actionはプルリクエストで実行され、既知の脆弱性がある依存関係をプルリクエストが追加した場合にマージをブロックします。

これによりセキュリティ対策を左に移行し、リスクのあるパッケージがmainブランチに到達する前に検出できます。

  - name: Dependency Review
    uses: actions/dependency-review-action@v4
    with:
      fail-on-severity: high

アクションのバージョンを固定する

ワークフローで呼び出すアクション自体も依存関係です。@v4を参照すると、そのタグを管理する人を信頼することになります。

最大限のセキュリティを確保するには、変更できない完全なコミットSHAにアクションを固定します。

  - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

ロックファイルの重要性

ロックファイル(package-lock.jsonやpoetry.lockなど)は、依存関係の正確なバージョンとハッシュを固定します。

CIでは決定論的なインストールコマンドを使用し、ビルドを再現可能にするとともに、改ざんされたバージョンがひそかに取得されるのを防ぎます。

  - name: Install (locked)
    run: npm ci

SBOMの生成

ソフトウェア部品表(SBOM)は、ビルドに含まれるすべてのコンポーネントの完全な一覧です。コンプライアンスのために求められるケースが増えています。

GitHubではSPDX形式でSBOMをエクスポートでき、SyftなどのツールをCI内で実行して生成することもできます。

  - name: Generate SBOM
    uses: anchore/sbom-action@v0
    with:
      format: spdx-json

ライセンスコンプライアンス

SCAはライセンスのリスクも対象とします。GPLライセンスのライブラリをプロプライエタリ製品に取り込むと、法的な義務が生じる可能性があります。

スキャナーを設定して、許可されていないライセンスを警告または拒否するようにすれば、監査ではなくCIで問題を発見できます。

ビルドを失敗させる

検出するだけでは、不適切なコードを止められる場合にのみ役立ちます。重大な脆弱性が見つかったときにパイプラインを失敗させるよう、SCAゲートを設定します。

重大度のしきい値を設定し、リスクの低い検出結果では警告にとどめ、重大な検出結果ではマージまたはデプロイをブロックします。

    with:
      fail-on-severity: critical

継続的な監視

新しい脆弱性は毎日公開されるため、1回限りのスキャンでは不十分です。すべてのプルリクエストで実行するだけでなく、スケジュールでもSCAを実行します。

これにより、マージ時には安全だったものの、後から脆弱になったパッケージを検出できます。

on:
  schedule:
    - cron: '0 6 * * 1'

理解度チェック

サプライチェーンセキュリティについての理解度を確認しましょう。

まとめ

ソフトウェアサプライチェーンを保護する方法を学びました。

  • SCAは依存関係をスキャンし、既知の脆弱性を検出します
  • Dependabotはリスクのあるパッケージを警告し、自動更新します
  • 依存関係レビューはリスクのあるプルリクエストをブロックします
  • アクションをSHAに固定し、ロックファイルを使用してSBOMを生成します

SASTやシークレット管理と組み合わせることで、安全なパイプラインに必要な要素がそろいます。

無料で開始

AI チューターと学ぶ CI/CD with GitHub Actions & DevOps Pipelines — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
12
レッスン
48

よくある質問

「依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)」レッスンは無料ですか?

はい。「依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CI/CD with GitHub Actions & DevOps Pipelinesコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。

「依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)」で何を学びますか?

Software Composition Analysis、Dependabot、依存関係レビュー、アクションのバージョン固定を使い、脆弱なサードパーティーパッケージからパイプラインを保護します。 ブラウザで直接実行するハンズオンコードでCI/CD with GitHub Actions & DevOps Pipelinesを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CI/CD with GitHub Actions & DevOps Pipelinesを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCI/CD with GitHub Actions & DevOps Pipelinesは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCI/CD with GitHub Actions & DevOps Pipelinesレッスンでコードを書いて実行できますか?

はい。すべてのCI/CD with GitHub Actions & DevOps Pipelinesレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. CI/CD のセキュリティベストプラクティス
  2. GitHub によるシークレット管理
  3. 静的アプリケーションセキュリティテスト(SAST)
  4. 依存関係とソフトウェアサプライチェーンのセキュリティ(SCA)
← CI/CD with GitHub Actions & DevOps Pipelinesに戻る