自動化されたセキュリティ
ここでは、GitHub リポジトリ管理者が使用できるリポジトリのセキュリティ チェックを自動化する方法について説明します。
セキュリティの脆弱性を使用して古い依存関係を検出して修正する
最近のほぼすべてのプロジェクトは、外部パッケージに依存します。 これらのコンポーネントは生産性に大きな利点を提供できますが、他のセキュリティ リスクが発生する可能性があります。 特に、各依存関係に独自の依存関係があり、追跡と保守が困難になる可能性がある場合は、これらのパッケージとその脆弱性の状態を把握し、時間がかかる場合があります。 さいわい、GitHub には、このワークロードを削減する機能が用意されています。
リポジトリの依存関係グラフ
すべてのリポジトリに含まれる既定の機能の 1 つは、依存関係グラフです。 GitHub は、 package.json、 requirements.txtなどの一般的なパッケージ マニフェストをスキャンします。 これらのグラフを使用すると、プロジェクト所有者は、プロジェクトが依存しているすべての依存関係を再帰的に追跡できます。
サポートされている依存関係マニフェストの一覧については、「 依存関係グラフについて」を参照してください。
Dependabot アラート
視覚的な依存関係グラフを使用する場合でも、プロジェクトが持つすべての依存関係に関する最新のセキュリティに関する考慮事項を確認することは、依然として圧倒的な可能性があります。 このオーバーヘッドを減らすために、GitHub には依存関係グラフを監視する Dependabot アラート が用意されています。 次に、既知の脆弱性リストのバージョンを含むターゲット バージョンを相互参照します。 リスクが検出されると、プロジェクトに警告が表示されます。 分析の入力は、 GitHub セキュリティ アドバイザリから取得されます。
Dependabot を使用した依存関係の自動更新
依存関係アラートにより、プロジェクトの共同作成者が問題のあるパッケージ参照を推奨バージョンにバンプし、検証のためのプル要求を作成する可能性があります。 この作業を自動化する方法があれば、すばらしいと思いませんか? さて、良いニュース! Dependabot は、まさにそのことを行います。 依存関係アラートをスキャンし、プル要求を作成して、共同作成者が更新を検証し、要求をマージできるようにします。
Dependabot の柔軟性の詳細については、「 Dependabot セキュリティ更新プログラムの構成」を参照してください。
自動コード スキャン
Dependabot がリポジトリをスキャンして依存関係アラートを検出する方法と同様に、コード スキャンを使用して、GitHub リポジトリ内のコード内のセキュリティの脆弱性とエラーを分析して見つけることができます。 コード スキャンには、いくつかの利点があります。 これを使用して、既存の問題や潜在的なセキュリティの脆弱性に対する修正プログラムの検索、トリアージ、優先順位付けを行うことができます。 また、開発者がコードに新しいセキュリティの問題を導入するのを防ぐのにも役立ちます。
コード スキャンのもう 1 つの利点は、CodeQL を使用できることです。 CodeQL を使用すると、データとしてコードにクエリを実行できます。これにより、カスタム クエリを作成したり、オープンソース コミュニティによって管理されているクエリを使用したりできます。 コード スキャンを使用すると、リポジトリ内のコードのスキャン方法を自由にカスタマイズして維持できます。
GitHub リポジトリのセキュリティ タブで、コード スキャンアラートとワークフローを有効にすることができます。
コード スキャンと CodeQL の詳細を確認します。
シークレット スキャン
GitHub リポジトリ内のもう 1 つの自動スキャン機能は、シークレット スキャンです。 以前のセキュリティ スキャン機能と同様に、シークレット スキャンでは、リポジトリ内でコミットされた既知のシークレットまたは資格情報が検索されます。 このスキャンは、不正な動作の使用を防ぎ、機密データの整合性を確保するために行われます。 既定では、シークレット スキャンはパブリック リポジトリで行われ、リポジトリ管理者または組織の所有者がプライベート リポジトリでシークレット スキャンを有効にすることができます。
シークレット スキャンで資格情報のセットが検出されると、GitHub はシークレットを発行したサービス プロバイダーに通知します。 サービス プロバイダーが資格情報を検証します。 次に、シークレットを取り消すか、新しいシークレットを発行するか、直接連絡するかを決定します。 アクションは、ユーザーまたはサービス プロバイダーに関連付けられているリスクによって異なります。
パブリック リポジトリとプライベート リポジトリのシークレット スキャンの詳細について説明します。