Skip to main content

GitHub Copilot を使用して会社のセキュリティ負債を削減する

機能を理解し、開発者を支援し、Copilot の影響を測定します。

この機能を使用できるユーザーについて

GitHub Copilot Business or GitHub Copilot Enterprise

このガイドは、エンジニアリング システムの改善を推進するための戦略とメトリックを推奨する GitHub の「Engineering System Success Playbook (エンジニアリング システム サクセス プレイブック)」(ESSP) からヒントを得ています。

Copilot のロールアウトを開始する場合は、目標を定義し、それに応じてロールアウトを計画し、スタッフに目標を明確に伝えることをお勧めします。 「GitHub Copilot を使って会社のエンジニアリング目標を達成する」をご覧ください。

1. 成功への障壁を特定する

ESSP が推奨する最初の手順は、会社の改善を妨げている障害を明確に理解することです。 現在のベースライン、目的とする将来の状態、進歩を妨げる障壁を理解することで、的を絞った効果的な変更を行うことができます。

開発チームは、多くの場合、新しい機能を提供し、アプリケーションをスムーズに実行し続けるために、速度と機能に重点を置きます。 時間が経つにつれて、次のような小さな問題が蓄積される可能性があります。

  • 固定されていない既知のセキュリティ上の弱点
  • 潜在的な欠陥がある前のソフトウェア コンポーネントへの依存
  • 検出された問題への対処の遅延

これにより、 セキュリティ負債が発生し、問題の重大なバックログが発生します。

セキュリティ負債は実際のリスクを伴います。 対応されずに放置されるほど、その問題は大きくなり、コストが増大します。 大規模なセキュリティ負債により、システムは攻撃に対して脆弱になり、機密データが公開され、顧客の信頼が損なわれます。

課題は、迅速な開発と、セキュリティで保護された安定したソフトウェア環境の維持のバランスを取することです。

2. オプションを評価する

次の手順では、手順 1 で特定した障壁に対処するための解決策を評価し、同意します。 このガイドでは、特定した目標に対して GitHub Copilot がどのような影響を与え得るかに焦点を当てます。 新しいツールのロールアウトを成功させるには、カルチャとプロセスを変更する必要もあります。

パイロット グループを使用して新しいツールとプロセスの試用版を実行し、フィードバックを収集し、成功を測定します。 試用中に使用するトレーニング リソースとメトリックについては、3 を参照してください。セクションを監視するための変更とメトリックを実装します。

          <a href="https://github.com/github-copilot/purchase?ref_product=copilot&ref_type=trial&ref_style=button&ref_plan=enterprise" target="_blank" class="btn btn-primary mt-3 mr-3 no-underline">              <span>Copilot にサインアップする</span> <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-link-external" aria-label="link external icon" role="img"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a>

Copilot の活用方法

Copilot は、セキュリティに関する考慮事項を開発ライフサイクルに直接統合します。 これにより、開発者はプロジェクトを最新の状態に保ちながら、潜在的な脆弱性を事前に特定して対処することができます。

Copilot は、ソフトウェア開発ライフサイクル全体にわたってセキュリティの脆弱性を軽減します。

開発中

Copilotでは、記述時にコードが見直されます。 一般的なセキュリティ上の欠陥を理解して、悪用に対して脆弱な可能性がある領域にフラグを設定します。 このリアルタイム分析では、標準的な開発または初期のセキュリティ レビュー中に見逃される可能性がある非表示の脆弱性が表示されます。

Copilot が問題を特定すると、脆弱性を修正するためにコード変更が提案されます。 これにより、早期に弱点に対処し、セキュリティ負債の蓄積を防ぐことができます。

継続的なメンテナンス

Copilot とh GitHub のコード スキャン機能を統合し、既存のコードベースを安全に保ちます。 コード スキャンによってセキュリティ アラートが識別されると、Copilotの自動修正 によってそのアラートが分析され、それを解決するための対象となる推奨事項が提供されます。

これらの推奨される修正により、脆弱性の調査とそれらに対処する方法の決定に費やす時間が短縮されます。 これにより、セキュリティ アラートをより効率的に解決し、継続的なセキュリティ負債を防ぐことができます。

文化に関する考慮事項

GitHub Copilot のロールアウトに加えて、自分の目的の達成を妨げる可能性がある社会的な要因や文化的な要因に対処します。

次の例は、ESSP の "アンチパターン" セクションから抜粋したものです。

  • Teams は 、セキュリティ負債を無視または延期する可能性があります。 これにより、非効率的で脆弱なシステムを維持できます。 これは、期限に基づいて機能に焦点を当てたり、セキュリティ負債の長期的な影響に関する教育の欠如が原因である可能性があります。
  • Teams は、単純な問題に対して 過度に複雑なソリューションを構築 する可能性があります。 これにより、コードの保守が困難になり、セキュリティの問題の検出が困難になります。 これは、不必要に将来の証拠を望むか、複雑さを通じて価値を追加する圧力によって引き起こされる可能性があります。

3. 変更を実装する

障壁を克服するための適切なアプローチを特定したら、特定したソリューションをスケーリングします。 新しいツールまたはプロセスのロールアウトを成功させるには、ロールアウトの各部分に所有権を割り当て、目標について透過的に伝え、効果的なトレーニングを提供し、結果を測定します。

このセクションでは、開発者向けのシナリオ例、ベスト プラクティス、リソースについて説明します。 このセクションでは、従業員が Copilot を目標に沿った方法で使用できるように 、コミュニケーションとトレーニング セッションを計画 します。

  •           [セキュリティの脆弱性に関するコードを分析する](#analyze-your-code-for-security-vulnerabilities)
    
  •           [code scanning アラート用の Copilotの自動修正 を使用する](#use-copilot-autofix-for-code-scanning-alerts)
    
  •           [開発者向けのベスト プラクティス](#best-practices-for-developers)
    
  •           [開発者用リソース](#resources-for-developers)
    

セキュリティの脆弱性に関するコードを分析する

コードベースのサイズによっては、Copilot は、コード記述時にプロジェクト全体を分析できない場合があります。 これはコンテキストの制約によるものです。 ただし、セキュリティで保護されていないコード プラクティスについて、特定のファイルを分析するように要求できます。

  1. 分析対象のファイルを Visual Studio Code で開きます。

  2. Copilot チャット で、Analyze this code for potential security vulnerabilities and suggest fixes と指示します

           `#file` チャット変数を使用して、プロンプトにファイルのコンテンツを具体的に含めます。 また、プロンプトファイルやカスタムインストラクションを活用して、Copilotのレスポンスを導くこともできます。
    
  3. Copilot チャット は、コードを分析し、セキュリティの脆弱性を識別し、修正プログラムを提案します。

  4. 提案された変更を検討し、必要に応じて適用します。

プロンプトのその他の例:

  • Are there any security vulnerabilities in my code? If so, can you explain them and suggest fixes?
  • Does this code follow secure code best practices? If not, what specific improvements can I make?
  • What are the potential security risks in this code if it were deployed to production? How can I mitigate them?

code scanning アラート用の Copilotの自動修正 を使用する

Copilotの自動修正 は、GitHub Code Security の一部であり、code scanning アラートに対する潜在的な修正を提案します。 パブリックリポジトリおよびGitHub Code Securityのライセンスを持つリポジトリで利用可能です。

リポジトリでコードスキャンを実行すると、潜在的な問題がcode scanningアラートとして提示されます。 次の手順に従ってアラートを解決します。

  1. GitHub でアラートを開きます。
  2. [ 修正の生成] をクリックします。 これは、Copilot がアラートを解決できる場合に表示されます。
  3. Copilotの自動修正 は、可能性のある修正を生成し、アラート内でコード変更を表示します。 このコード変更は、新しいブランチまたは既存のブランチにコミットできます。
  4. コードをテストします。 次に、プル要求を開いて、変更をメイン ブランチに移動します。
  5. 変更をメインブランチに移動して、code scanning が修正を確認すると、アラートは自動的に閉じます。

開発者向けのベスト プラクティス

開発者がすべきこと:

  •           **Copilot チャット を定期的に使用して、脆弱性のコード スニペットを分析します**。 変更をコミットする前に、コードでセキュリティの問題を確認することを習慣にします。
    
  •           **code scanning アラート用の Copilotの自動修正 を使用します**。 アラートが表示されたら、Copilotの自動修正 を最初の手順として使用して、アラートにすばやく対処します。
    
  •         **Copilot チャット に明確で具体的なプロンプトを表示**します。 要求の詳細が多いほど、Copilot がコードを分析し、関連する修正プログラムを提案できます。 たとえば、プログラミング言語と特定の懸念事項を含めます。
    
  •  

既存のセキュリティツールとCopilot を組み合わせる。 Copilot を、専用のセキュリティ スキャナーや慣行としてではなく、セキュリティ分析の追加階層として使用します。

開発者がすべきでないこと:

  •         **自動的にCopilot のセキュリティ提案を受け入れます**。 推奨されるコード変更を常に確認してテストし、適切で効果的であることを確認します。
    
  •           **包括的なセキュリティ監査については、Copilot のみに依存します**。 Copilot は便利なツールですが、セキュリティ レビューと侵入テストを完全に置き換えるべきではありません。
    
  •           **code scanning アラートを無視します**。 セキュリティ負債の蓄積を防ぐために、小さいように見える場合でも、すべてのアラートに迅速に対処します。
    
  •         **Copilot を言い訳として使用して、安全なコーディングプラクティスを学習しないようにします**。 セキュリティのベスト プラクティスに関する自分自身とチームを引き続き教育します。
    
  •         **Copilot がすべての脆弱性を検出すると仮定します**。 セキュリティは継続的なプロセスであり、常に注意が必要です。
    
  •         **Copilot を用いてセキュリティポリシーを回避します**。 組織のセキュリティ プロトコルに準拠します。 Copilot を、回避するためではなく、それを強化する手段として使用します。
    

開発者用リソース

  •           [GitHub の Copilot チャット](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github)
    
  •           [AUTOTITLE](/copilot/copilot-chat-cookbook/security-analysis/finding-existing-vulnerabilities-in-code)
    
  •           [GitHub Skills - GitHub Copilot の概要](https://github.com/skills/getting-started-with-github-copilot)
    

監視対象のメトリック

新しいツールの評価版を評価し、完全なロールアウトで一貫した改善が提供されていることを確認するには、結果を監視し、必要に応じ調整を行います。 品質、速度、開発者の幸福度の重要なゾーンと、これらのゾーンを組み合わせてビジネス成果に貢献する方法を検討することをお勧めします。

この特定の目標に対するCopilotの影響を評価するための指標を以下に示します。

  •         **セキュリティ債務比率**。 セキュリティの概要を使用して、時間の経過と同時にアラートの数が減少するかどうかを確認します。
    
  •         **セキュリティの問題を修復する時間**。 セキュリティの概要を使用して、セキュリティの問題を修復する時間が時間の経過と同時に低下するかどうかを確認します。
    

コードのセキュリティ リスクを評価する」を参照してください。