GHAS を利用して最大限の効果を得る方法

完了

このユニットでは、次のことを確認します。

  • 依存関係グラフを理解する
  • GHAS アラートに対処する
  • アラートにアクセスできるユーザー

依存関係グラフから始めて、Dependabot がどのように機能するかを詳しく見てみましょう。

依存関係グラフは、サプライ チェーンのセキュリティの中心です。 依存関係グラフによって、リポジトリまたはパッケージについて、すべてのアップストリーム依存関係とパブリック ダウンストリーム依存関係が識別されます。 リポジトリの依存関係とそのプロパティの一部 (脆弱性情報など) を、そのリポジトリの依存関係グラフで確認できます。

依存関係グラフを生成するために、GitHub はマニフェストとロック ファイルで宣言されたリポジトリの明示的な依存関係を調べます。 有効にすると、依存関係グラフはリポジトリ内のすべての既知のパッケージ マニフェスト ファイルを自動的に解析し、このスキャンを使って既知の依存関係の名前とバージョンを持つグラフを構築します。

依存関係グラフに関する重要なポイントは次のとおりです。

  • 直接的な依存関係と推移的な依存関係に関する情報が含まれます。
  • 依存関係グラフは、サポートされているマニフェストまたはロック ファイルを変更または既定のブランチに追加するコミットを GitHub にプッシュすると、自動的に更新されます。 また、任意のユーザーが依存関係の 1 つのリポジトリに変更をプッシュした場合にも、自動的に更新されます。
  • GitHub でリポジトリのメイン ページを開き、[インサイト] タブに移動すると、依存関係グラフを確認できます。
  • リポジトリへの少なくとも読み取りアクセス権がある場合は、GitHub UI または GitHub REST API を介して、リポジトリの依存関係グラフを SPDX 互換のソフトウェア部品表 (SBOM) としてエクスポートできます。 詳細については、「リポジトリのソフトウェア部品表のエクスポート」を参照してください。

さらに、依存関係送信 API (ベータ) を使うと、エコシステムがマニフェストまたはロック ファイル分析用の依存関係グラフでサポートされていない場合でも、選んだパッケージ マネージャーまたはエコシステムから依存関係を送信できます。 依存関係送信 API (ベータ) を使ってプロジェクトに送信された依存関係には、送信にどの検出機能が使われたか、いつ送信されたかが示されます。

GitHub の他のサプライ チェーン機能は、依存関係グラフによって提供される情報に依存します。これには次が含まれます。

  • 依存関係のレビュー: 依存関係グラフを使って依存関係の変更を特定し、pull request を確認するときにこれらの変更によるセキュリティへの影響を理解するのに役立ちます。
  • Dependabot アラート:Dependabot は、依存関係グラフによって提供される依存関係データを、GitHub Advisory Database で公開されているアドバイザリの一覧と相互参照します。 依存関係グラフは依存関係をスキャンし、潜在的な脆弱性が検出されると、Dependabot アラートを生成します。
  • Dependabot セキュリティ更新:依存関係グラフと Dependabot アラートを使って、リポジトリ内の既知の脆弱性を持つ依存関係を更新するのに役立ちます。

Dependabot のバージョン更新では依存関係グラフは使われませんが、それでも触れておく必要があります。 Dependabot のバージョン更新は、代わりに依存関係のセマンティック バージョン管理に依存しています。 Dependabot のバージョン更新は、依存関係に脆弱性がない場合でも、依存関係を最新の状態に保つのに役立ちます。

GHAS アラートに対処する

GHAS は、その包括的なツール セットにより、組織のセキュリティ態勢を包括的に視覚化し、セキュリティ導入を適用する機能を提供し、セキュリティ リスクの正確かつ効果的な優先順位付けと管理を可能にします。

開発プロセス全体を通じてセキュリティを確保する多くのツールの 1 つは、GHAS が組織に提供するすべてのアラートです。

それらを確認してみましょう。

コード スキャンのアラート:

  • CodeQL 分析アラート:これらのアラートは、GitHub のセマンティック コード分析エンジンである CodeQL によって生成され、コードベース内の潜在的なセキュリティ脆弱性を特定します。 これらは、SQL インジェクション、クロスサイト スクリプティング、その他のコードの脆弱性を含む (ただしこれらに限定されない) 幅広い問題をカバーしています。

シークレット スキャンのアラート:

  • シークレットの漏えいに関するアラート:これらのアラートは、API キーや資格情報などの潜在的な機密情報がリポジトリのソース コード内で特定されたときにトリガーされます。 シークレット スキャンは、機密データが誤って公開されるのを防ぐのに役立ちます。

依存関係のアラート:

  • Dependabot アラート:Dependabot は、プロジェクト内の古い依存関係を自動的に検出し、pull request を作成して最新のセキュリティで保護されたバージョンに更新します。 Dependabot アラートは、プロジェクトの依存関係に使用できる更新について開発者に通知します。

セキュリティの概要アラート:

  • セキュリティの概要は、リポジトリのセキュリティ状態を要約した包括的なダッシュボードを提供します。

サード パーティのアラート:

  • データを SARIF ファイルとしてアップロードすることで、サード パーティのコード分析ツールを GitHub コード スキャンと統合できます。 このトピックの詳細については、モジュールの最後にある「コード スキャンとの統合」へのリンクを参照してください。

アラートを無視した場合の影響

セキュリティ アラートを無視すると、プロジェクトに重大なリスクが生じます。 脆弱性は悪意のあるユーザーによって悪用され、データ侵害、サービスの中断、またはその他のセキュリティ インシデントを引き起こす可能性があります。 アラートを無視すると、修復作業が増加し、プロジェクトのタイムラインやソフトウェア全体の信頼性に影響を与える可能性があります。

アラートを無視した場合の長期的な影響には、評判の低下、法令違反、経済的損失などが含まれる可能性があります。 開発チームにとって、これらのリスクを軽減し、ソフトウェアの整合性を維持するには、セキュリティ アラートに優先順位を付けて迅速に対処することが重要です。

開発者がセキュリティ アラートを検出した場合、当面の役割は、アラートの性質と重大度を調査することです。 これには、コードベースへの影響、潜在的な悪用シナリオ、修復に必要な手順を理解することが含まれます。

GHAS の助けを借りて、開発者はソフトウェア開発ライフ サイクルの早い段階で脆弱性を検出して修正できます。

アラートにアクセスできるユーザー

GHAS にはきめ細かいアクセス制御が用意されており、組織がさまざまなセキュリティ機能のアラートを表示できるユーザーを定義できるようにします。 これにより、セキュリティ チームや関係者などの権限のある担当者のみが機密性の高いセキュリティ情報にアクセスできるようになります。

アクセス管理はロールベースであり、ロールごとに持つ GHAS アラートへのアクセス権のレベルが異なります。 ロールとアラートへのアクセスについてもう少し詳しく見てみましょう。

  • コード スキャンと Dependabot アラートは、Write リポジトリ ロールを持つすべてのユーザーが表示、変更できます
  • シークレット スキャン アラートは、Admin リポジトリ ロールを持つすべてのユーザーが表示、変更できます
  • リポジトリの "アラートへのアクセス" 設定を変更することで、リポジトリのロールに関係なく、すべての個人またはチームにリポジトリ上のすべてのアラートを表示、変更するアクセス権を付与できます

特定のロールがどのアラートを表示できるかを確認しましたが、注目すべき点は、各チーム メンバーに適切なレベルの可視性を提供することで、効果的なアクセス管理によりコラボレーションが強化されることです。 これにより、利害関係者は自分のロールに関連するセキュリティ側面に集中できるようになり、セキュリティ アラートへの合理的かつ効率的な対応が容易になります。

脆弱性の特定、アラートへの対応、何もしないことによる影響の認識、ロールとアクセス制御の定義の複雑な細部を理解することで、開発チームは GitHub Advanced Security を最大限に利用し、より回復性がある安全な開発環境を構築できます。

次のセクションでは、GHAS 全体でどのようにセキュリティ エコシステムを強化できるかを確認します。