この記事は、GitHub Advanced Security の大規模な導入に関するシリーズの一部です。 このシリーズの前の記事については「フェーズ 1: ロールアウト戦略と目標に合わせる」を参照してください。
code scanning の有効化の準備
Code scanning は、GitHub リポジトリ内のコードを分析して、セキュリティの脆弱性とコーディング エラーを見つけることができる機能です。 分析によって特定された問題は、リポジトリに表示されます。詳しくは「コード スキャンについて」をご覧ください。
数百のリポジトリに code scanning をロールアウトすることは、特に非効率に行われる場合、困難なことがあります。 これらの手順に従うと、ロールアウトが効率的で成功することが保証されます。
Code scanning は、GitHub のすべてのパブリック リポジトリでも GitHub Advanced Security のライセンスなしで使用できます。
code scanning のためのチームの準備
最初に、code scanning を使用するためのチームの準備を行います。 code scanning を使用するチームが多いほど、修復計画を推進してロールアウトの進行状況を監視するために必要なデータが増えます。
code scanning の概要については、次を参照してください。
主な目的として、できるかぎり多くのチームが code scanning を使用できるように準備する必要があります。 修復を適切に行うことをチームに促すこともできますが、このフェーズでは、イシューの修復よりも code scanning の有効化と使用を優先することをお勧めします。
secret scanning を有効にするための準備
注: secret scanning を有効にしたリポジトリでシークレットが検出されると、GitHub はリポジトリのセキュリティ アラートにアクセスできるすべてのユーザーに警告します。
パートナーに対するシークレット スキャンニング アラート を使用してパブリック リポジトリで検出されたシークレットは、GitHub Enterprise Cloud でアラートが作成されることなく、パートナーに直接報告されます。 サポート対象のパートナー パターンの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。
プロジェクトで外部サービスと通信する場合、認証にトークンまたは秘密キーを使用できます。 リポジトリにシークレットをチェックインする場合、リポジトリへの読み取りアクセスを持つすべてのユーザがシークレットを使用して、自分の権限で外部サービスにアクセスできます。 Secret scanning では、GitHub リポジトリ内に存在するすべてのブランチで Git 履歴全体をスキャンしてシークレットを確認し、プッシュにシークレットが含まれていることを警告するか、そのプッシュをブロックします。 詳しくは、「シークレット スキャンについて」を参照してください。
パートナーに対するシークレット スキャンニング アラート はパブリック リポジトリとパブリック npm パッケージで自動的に実行され、GitHub で漏洩したシークレットについてサービス プロバイダーに通知します。
ユーザーに対するシークレット スキャンニング アラート は、すべてのパブリック リポジトリで無料で利用できます。
secret scanning を有効にする際の考慮事項
有効化 secret scanning を有効にするのは簡単ですが、組織レベルで [すべて有効にする ] をクリックし、 [新しいリポジトリごとに secret scanning を自動的に有効にする] オプションをオンにすると、明らかなダウンストリーム効果が得られます。
ライセンスの消費
すべてのリポジトリで secret scanning を有効にすると、GitHub Advanced Security ライセンスの使用が最大化されます。 これは、すべてのリポジトリに対する現在のコミッターに十分なライセンスがある場合、問題にはなりません。 アクティブな開発者の数が今後数か月間に増加する可能性がある場合は、ライセンス制限を超え、新しく作成されたリポジトリで GitHub Advanced Security を使用できなくなる可能性があります。
最初に大量のシークレットが検出される可能性がある
大規模な組織で secret scanning を有効にする場合、多数のシークレットが検出されたときに備えて準備を行う必要があります。 場合によっては、これは組織に衝撃を与え、警告が発生します。 一度にすべてのリポジトリで secret scanning を有効にする場合は、組織全体での複数のアラートに対応する方法を計画します。
Secret scanning は、個々のリポジトリに対して有効にすることができます。 詳しくは、「リポジトリのシークレット スキャンの有効化」を参照してください。 また、前述のとおり、Secret scanning は、組織内のすべてのリポジトリに対して有効にすることもできます。 すべてのリポジトリの有効化の詳細については、「組織のセキュリティおよび分析設定を管理する」を参照してください。
secret scanning のカスタム パターン
Secret scanning では、多数の既定のパターンが検出されますが、インフラストラクチャ固有のシークレット形式や、GitHub Enterprise Cloud の secret scanning では現在検出されないがインテグレーターによって使用されるシークレット形式などのカスタム パターンを検出するように構成することもできます。 パートナー パターンでサポートされるシークレットの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。
リポジトリを監査し、セキュリティ チームおよび開発者チームに説明する際には、後で secret scanning のカスタム パターンを構成するために使用するシークレットの種類の一覧を作成します。 詳しくは、「シークレット スキャンのカスタム パターンの定義」を参照してください。
secret scanningのプッシュ保護
組織とリポジトリのプッシュ保護は、シークレットがコードベースにコミットされる_前に_、サポートされているシークレットのプッシュをチェックするように secret scanning に指示します。 サポートされているシークレットの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。
プッシュでシークレットが検出された場合、そのプッシュはブロックされます。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。 Secret scanning は、カスタム パターンのプッシュもチェックできます。
開発者は、シークレットが誤検知であるか、テストで使用されているか、後で修正されることを報告することにより、プッシュ保護をバイパスするオプションがあります。
共同作成者がシークレットのプッシュ保護ブロックをバイパスする場合、GitHub では次のことが行われます。
- リポジトリの [セキュリティ] タブでアラートを作成する。
- バイパス イベントを監査ログに追加する。
- リポジトリを監視している Organization または個人アカウントの所有者、セキュリティ マネージャー、リポジトリ管理者に、シークレットへのリンクとそれが許可された理由を含むメール アラートを送信する。
プッシュ保護を有効にする前に、プッシュ保護をバイパスするための許容条件に関するガイダンスを開発者チームに作成する必要があるかどうかを検討してください。 開発者がブロックされたシークレットをプッシュしようとしたときに表示されるメッセージで、このリソースへのリンクを構成できます。
次に、共同作成者がプッシュ保護をバイパスした結果であるアラートを管理および監視するためのさまざまなオプションについて理解します。
詳しくは、「プッシュ保護について」を参照してください。
このシリーズの次の記事については「フェーズ 3: パイロット プログラム」を参照してください。