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