GitHub Advanced Security とは
GitHub には、コードの品質の向上と維持に役立つ多くの機能があります。 これらの機能の一部は、依存関係グラフや Dependabot アラートなど、すべてのプランに含まれています。 他のものは、パブリックリポジトリ上で制限された機能モードでのみ動作します。 プライベート リポジトリで実行するために GitHub Advanced Security ライセンスを必要とするその他もあります。
このユニットでは、GitHub Advanced Security の詳細を学習し、GitHub Advanced Security を使用したプロジェクトの外観を確認します。
GitHub の高度なセキュリティ機能
次の表は、パブリック リポジトリとプライベート リポジトリでの GitHub Advanced Security 機能の可用性をまとめたものです。
| 特徴 | パブリック リポジトリ | セキュリティが強化されていないプライベート リポジトリ | セキュリティが強化されたプライベート リポジトリ |
|---|---|---|---|
| コード スキャン | イエス | いいえ | イエス |
| シークレット スキャン | はい (制限付き機能のみ) | いいえ | イエス |
| 依存関係の確認 | イエス | いいえ | イエス |
| セキュリティの概要 | いいえ | いいえ | イエス |
前の表で説明したように、セキュリティの概要を除くすべての GitHub Advanced Security 機能は、GitHub.com 上のすべてのパブリック リポジトリに対して既定で有効になっています。 プライベート リポジトリと内部リポジトリでこれらの機能にアクセスするには、GitHub Advanced Security ライセンスを持つ GitHub エンタープライズ アカウントが必要です。
GitHub Advanced Security ライセンスは、プライベート リポジトリと内部リポジトリに対して次の機能を提供します。
- コード スキャン: 一般的な脆弱性とコーディング エラーを自動的に検出します。
- シークレット スキャン: シークレットまたはキーがチェックインされたときにアラートを受信し、スキャンからファイルを除外し、最大 100 個のカスタム パターンを定義します。
- 依存関係の確認: プル要求をマージする前に、依存関係に対する変更の完全な効果を示し、脆弱なバージョンの詳細を確認します。
- セキュリティの概要: 組織のセキュリティ構成とアラートを確認し、最もリスクの高いリポジトリを特定します。
ソフトウェア開発ライフサイクルにおける GitHub Advanced Security
では、GitHub の高度なセキュリティ機能は、ソフトウェア開発ライフサイクルにどのような違いがありますか? まず、基本的なセキュリティ シナリオを見てみましょう。
この例では、従来の セキュリティをゲート アプローチとして 示します。このアプローチでは、品質保証フェーズ中に 1 つのセキュリティ テストまたは一連のセキュリティ テストが行われます。 このシナリオでは、通常、セキュリティがソフトウェアの出荷のボトルネックになります。 この状況は、会社がセキュリティを左にシフトして修正したいと考えています。
次に、GitHub Advanced Security と同じソフトウェア開発ライフサイクルを見てみましょう。
このシナリオでは、プロジェクト構成ステージで最初からセキュリティ ポリシーまでセキュリティが設定されます。 開発者は、開発プロセスのすべてのステップで潜在的なセキュリティの問題に関するアラートを受け取ります。
- コード スキャン: コミットのたびにスキャンし、潜在的な脆弱性とコーディング エラーをマージします。
- シークレット スキャン: コミットのたびにスキャンし、誤ってコミットされたトークンと秘密キーをマージします。
- 依存関係の確認: プロジェクトの依存関係の変更とそのプロジェクトのセキュリティへの影響を追跡します。 リポジトリ マニフェスト ファイルは、すべてのプル要求で既知の脆弱性のデータベースと比較されます。
さらに、 セキュリティの概要 では、管理者はプロジェクトのセキュリティ状態の概要を確認できます。 このビューを使用すると、管理者は介入を必要とする問題のあるリポジトリを特定できます。
コードのセキュリティは、品質保証の段階に到達する前に複数回レビューされるため、出荷直前にボトルネックが発生する可能性が少なくなり、技術的負債も少なくなります。