このガイドでは、お客様は既存または試用のための GitHub Enterprise アカウントでの GitHub Advanced Security の試用を計画して開始しているものとします。「GitHub Advanced Security の試用を計画する」をご覧ください。
はじめに
Code scanning と依存関係分析は、パブリック リポジトリおよび GitHub Advanced Security を有効にしたプライベート リポジトリと内部リポジトリで、同じように機能します。 さらに、GitHub Advanced Security を使うと、セキュリティ スペシャリストと開発者が共同作業して技術的負債を効果的に減らせるセキュリティ キャンペーンを作成できます。
この記事では、これらの機能を Enterprise レベルの制御と組み合わせて、開発プロセスを標準化して適用する方法について説明します。
セキュリティ構成を調整する
1 つのセキュリティ構成をすべてのリポジトリに適用するのが一般的な secret scanning とは異なり、code scanning の構成はリポジトリの種類が異なるとおそらく微調整が必要になります。 たとえば、次のようにするために追加の構成の作成が必要な場合があります。
- Code scanning で、特定のラベルを持つランナーを使って、特殊な環境を必要とするリポジトリまたはプライベート レジスタを使うリポジトリに適用します。
- 高度なセットアップを使う必要があるリポジトリ、またはサード パーティのツールを必要とするリポジトリには、Code scanning の適用を "設定しません"。
試用のためには、Enterprise レベルのプライマリ セキュリティ構成を作成してテスト リポジトリに適用するのが最も簡単です。 その後、必要な追加のセキュリティ構成を作成し、コード言語、カスタム プロパティ、可視性、その他のフィルター オプションを使って、選択したリポジトリのサブセットに適用できます。 詳細については、「試用版 Enterprise でセキュリティ機能を有効にする」および「カスタム セキュリティ構成の適用」を参照してください。
code scanning の結果を表示するためのアクセス権を付与する
既定では、リポジトリ管理者と organization 所有者のみが、自分の領域内のすべての code scanning アラートを表示できます。 試用の間に検出されたアラートにアクセスできるようにする、organization のすべてのチームとユーザーに、定義済みのセキュリティ マネージャー ロールを割り当てる必要があります。 試用に参加している各 organization の Enterprise アカウント所有者にこのロールを付与することもできます。 詳細については、「Organizationでのセキュリティマネージャーの管理」および「組織の役割の使用」を参照してください。
既定のセットアップの結果を評価して調整する
code scanning の既定の設定では、一連の信頼度の高いクエリが実行されます。 これらは、コードベース全体に code scanning をロールアウトするときに、偽陽性の結果をほとんど含まない限られた高品質の結果のセットが開発者に示されるように選ばれます。
試用している Enterprise の organization で見つかった結果の概要は、Enterprise の [Code security] タブで確認できます。 セキュリティ アラートの種類ごとに個別のビューもあります。「セキュリティの分析情報の表示」をご覧ください。
code scanning で予想される結果が表示されない場合は、既定のセットアップを更新して、より多くの結果が見つかると予想されるリポジトリに対して拡張クエリ スイートを実行できます。 これはリポジトリ レベルで制御されます。「既定のセットアップの構成を編集する」をご覧ください。
Tip
code scanning のリポジトリ設定の編集がブロックされる場合は、設定が適用されないように、リポジトリで使われるセキュリティ構成を編集します。
それでも拡張スイートで予想される結果が見つからない場合は、分析を完全にカスタマイズできるように、高度なセットアップを有効にすることが必要な場合があります。 詳細については、「コード スキャンのツール状態ページについて」および「コード スキャンの高度なセットアップの構成」を参照してください。
pull request の自動分析を適用する
GitHub に組み込まれている pull request の自動分析は、次の 3 種類です。
- Code scanning 分析は、クエリを使って、既知の不適切なコーディング パターンとセキュリティの脆弱性を明示します。 Copilot Autofix は、code scanning によって識別された問題の修正を提案します。
- 依存関係レビューは、pull request によって行われた依存関係の変更を要約し、既知の脆弱性がある依存関係、または開発標準を満たしていない依存関係を明示します。
- Copilot コード レビューは、AI を使って、ユーザーによる変更に対するフィードバックと、可能な場合は修正案を提供します。
これらの自動レビューは、自己レビューに対する重要な拡張機能であり、開発者がピア レビューのためにより完全で安全な pull request を提示しやすくします。 さらに、code scanning と依存関係レビューを適用して、コードのセキュリティとコンプライアンスを保護できます。
Note
GitHub Copilot Autofix は、GitHub Advanced Security のライセンスに含まれています。 Copilot コード レビューには、有料の Copilot プランが必要です。
Code scanning 分析
code scanning が有効になっているときは、Enterprise または organization のためのコード ルールセットを作成して、pull request が要件を満たしていない場合に、重要なブランチへのマージをブロックできます。 通常は、code scanning からの結果が存在し、重要なアラートが解決されている必要があります。
- Type of ruleset: ブランチ。
- Require code scanning results: pull request の対象のコミットと参照に対して結果が正常に生成されるまでマージをブロックするには、有効にします。
- Required tools and alert thresholds: 使用する各 code scanning ツールについて、pull request をマージする前に解決する必要があるアラートのレベルを定義します。
他のすべてのルールセットと同様に、対象の organization (Enterprise レベル)、リポジトリ、ブランチを正確に制御でき、ルールをバイパスできるロールまたはチームを定義することもできます。 詳しくは、「ルールセットについて」をご覧ください。
依存関係の確認
リポジトリに対して GitHub Advanced Security と依存関係グラフが有効になっている場合、マニフェスト ファイルには、追加または更新する依存関係の概要を示す豊富な差分ビューがあります。 これは、pull request の人間のレビュー担当者にとっては便利な概要ですが、コードベースに追加される依存関係を制御することはできません。
ほとんどの Enterprise では、自動チェックを実施して、既知の脆弱性またはサポートされていないライセンス条項を含む依存関係の使用をブロックします。
- Enterprise の再利用可能なワークフローを格納できる中央のホームとして機能するプライベート リポジトリを作成します。
- リポジトリのアクション設定を編集して、Enterprise 内のすべてのプライベート リポジトリがこの中央リポジトリ内のワークフローにアクセスできるようにします。「プライベート リポジトリ内のコンポーネントへのアクセスを許可する」をご覧ください。
- 中央リポジトリで、依存関係レビュー アクションを実行する再利用可能なワークフローを作成し、ビジネス ニーズに合わせてアクションを構成します。「依存関係レビュー アクションの構成」をご覧ください。
- 各 organization で、ブランチ ルールセットを作成または更新して、新しいワークフローを必要なステータス チェックに追加します。「組織全体で依存関係レビューを実施する」をご覧ください。
これにより、構成の更新を 1 か所で行いながら、多くのリポジトリでワークフローを使用できます。 この中央リポジトリを使って、他のワークフローを維持することもできます。 詳しくは、「ワークフローの再利用」をご覧ください。
Copilot レビュー
Note
- GitHub Copilot コード レビュー is in パブリック プレビュー and subject to change.
- To participate in the パブリック プレビュー, an administrator of your enterprise or organization must opt in to the use of previews of Copilot features. See 企業内の Copilot のポリシーと機能を管理する and organization 内での Copilot のポリシーの管理.
- Some functionality is available to all enabled Copilot subscribers, but other functionality is only available to a limited number of users. To join the waitlist for additional functionality, see Join the Copilot コード レビュー waitlist.
- The GitHub プレリリース ライセンス条項 apply to your use of this product.
既定では、ユーザーは人間のレビュー担当者に対する場合と同じ方法で、Copilot にレビューを要求します。 ただし、organization レベルのブランチ ルールセットを更新または作成し、すべてまたは一部のリポジトリ内の選択したブランチに対して行われたすべての pull request に、Copilot をレビュー担当者として自動的に追加できます。 詳しくは、「GitHub Copilot コード レビューの使用」をご覧ください。
Copilot は、pull request を承認したり変更を要求したりせず、レビューした各 pull request にレビュー コメントを残します。 これにより、そのレビューはアドバイスとなり、開発作業をブロックすることはありません。 同様に、AI の提案には既知の制限があるため、Copilot によって行われた提案の解決を強制しないでください。「GitHub Copilot コード レビューの責任ある使用」をご覧ください。
Copilot Autofix を許可して有効にする場所を定義する
Copilot Autofix は、pull request で見つかった code scanning アラートを開発者が理解して修正するのに役立ちます。 開発者がアラートを効率的に解決し、安全なコーディングに対する理解を深めるのを助けるため、すべてのリポジトリでこの機能を有効にすることをお勧めします。
制御には次の 2 つのレベルがあります。
- Enterprise では、"コード セキュリティ" ポリシーを使って、Enterprise 全体での Copilot Autofix の使用を許可またはブロックできます。「エンタープライズのコード セキュリティと分析のためのポリシーの適用」をご覧ください。
- Organization では、organization の "グローバル設定" で、organization が所有するすべてのリポジトリに対して Copilot Autofix を有効または無効にできます。「組織のグローバル セキュリティ設定の構成」をご覧ください。
開発者をセキュリティの修復に参加させる
セキュリティ キャンペーンは、セキュリティ チームが開発者と連携してセキュリティの技術的負債を修復する方法を提供します。 また、安全なコーディングでの教育と、開発者が使い慣れたコードでの脆弱なコードの例を組み合わせる実用的な方法も提供します。 詳細については、「セキュリティ キャンペーンについて」および「セキュリティ アラートの大規模な修正に関するベスト プラクティス」を参照してください。
セキュリティで保護された開発環境を提供する
開発環境には多くのコンポーネントがあります。 GitHub のセキュリティ保護された開発環境のスケーリングと標準化に最も役立つ機能としては、次のようなものがあります。
- セキュリティ構成: Enterprise、organization、organization リポジトリのサブセット、または新しいリポジトリの、セキュリティ機能のセットアップを定義します。「セキュリティ構成を調整する」をご覧ください。
- ポリシー: Enterprise または organization のリソースの使用を保護および制御します。「Enterprise にポリシーを適用する」をご覧ください。
- ルールセット: organization、organization リポジトリのサブセット、またはリポジトリのブランチ、タグ、プッシュを保護および制御します。「組織内のリポジトリのルールセットを作成する」をご覧ください。
- リポジトリ テンプレート: 環境の種類ごとに必要なセキュリティ ワークフローとプロセスを定義します。「テンプレートリポジトリを作成する」をご覧ください。 たとえば、各テンプレートには特殊化された次のものが含まれる場合があります。
- 会社のセキュリティに対する取り組みとセキュリティに関する懸念を報告する方法を定義するセキュリティ ポリシー ファイル。
- 会社が使用するパッケージ マネージャーに対して Dependabot version updates を有効にするためのワークフロー。
- 既定のセットアップの結果では十分でない、サポートされている開発言語に対する code scanning の高度なセットアップを定義するワークフロー。
さらに、開発者がテンプレートからリポジトリを作成するときに、必要なカスタム プロパティの値を定義する必要があります。 カスタム プロパティは、構成、ポリシー、またはルールセットを適用するリポジトリのサブセットを選ぶ場合に非常に便利です。「Enterprise 内リポジトリのカスタム プロパティの管理」をご覧ください。
次のステップ
これらのオプションと secret scanning の機能の調査を終えたら、これまでにわかったことを実際のビジネス ニーズに対してテストし、さらに詳しく調べることができます。