Skip to main content

GitHub Copilot クラウド エージェントのリスクと軽減策

Copilot cloud agentの組み込みのセキュリティ保護は、既知のリスクをどのように軽減しますか?

Copilot cloud agent は、コードにアクセスでき、リポジトリに変更をプッシュできる自律エージェントです。 これには特定のリスクが伴います。

可能であれば、 GitHub は適切な軽減策を適用しています。 これにより、 Copilot cloud agent ベスト プラクティスガイダンスに従って補足できる組み込みのセキュリティ保護の強力な基盤が得られます。

未検証のコードによって脆弱性が発生する可能性があります

既定では、 Copilot cloud agent セキュリティの問題について生成されたコードをチェックし、 Copilot code reviewを使用してコードに関する第二の意見を得ます。 プル要求を完了する前に特定された問題の解決を試みます。 これにより、コードの品質が向上し、ハードコーディングされたシークレット、安全でない依存関係、その他の脆弱性などの問題が発生 Copilot cloud agent によって生成されるコードの可能性が低下します。 Copilot cloud agentのセキュリティ検証はライセンスを必要としません

  • CodeQL は、コードセキュリティの問題を特定するために使用されます。
  • 新しく導入された依存関係は、GitHub Advisory Database を通じてマルウェアの勧告および CVSS によって高いまたは重大と評価された脆弱性についてチェックされます。
  • Secret scanning は、API キー、トークン、その他のシークレットなどの機密情報を検出するために使用されます。
  • 実行された分析と Copilot cloud agent によって実行されたアクションの詳細は、セッション ログで確認できます。 「エージェント セッションの管理」を参照してください。

必要に応じて、 Copilot cloud agentで使用される 1 つ以上のコード品質およびセキュリティ検証ツールを無効にすることができます。 「GitHub Copilotクラウドエージェントの設定を構成する」を参照してください。

Copilot cloud agent コードの変更をリポジトリにプッシュできます

このリスクを軽減するには、次の GitHub。

  • エージェントをトリガーできるユーザーを制限します。 リポジトリへの書き込みアクセス権を持つユーザーのみが、 Copilot cloud agent の動作をトリガーできます。 書き込みaccessのないユーザーからのコメントは、エージェントには表示されません。
  • エージェントがプッシュできるブランチを制限します。 Copilot cloud agent には、単一のブランチにプッシュする機能しかありません。 既存のプル要求で @copilot をメンションすることによってエージェントがトリガーされると、 Copilot は pull request のブランチへの書き込みアクセス権を持っています。 それ以外の場合は、copilot/用に新しいCopilotブランチが作成され、エージェントはそのブランチにのみプッシュできます。 また、エージェントは、ブランチの保護と、作業リポジトリに必要なチェックの対象となります。
  • エージェントの資格情報を制限します。 Copilot cloud agent は、単純なプッシュ操作のみを実行できます。 git push や他の Git コマンドを直接実行することはできません。
  • マージする前に人間によるレビューが必要です。 Copilot cloud agentによって作成された下書きプル要求は、人間がレビューしてマージする必要があります。 Copilot cloud agent では、プル要求を "確認の準備完了" としてマークできず、pull request を承認またはマージすることもできません。
  • ワークフローの実行 GitHub Actions 制限します。 既定では、 Copilot cloud agentのコードが確認され、リポジトリへの書き込みアクセス権を持つユーザーが [ ワークフローの承認と実行 ] ボタンをクリックするまで、ワークフローはトリガーされません。 必要に応じて、ワークフローを自動的に実行できるように Copilot を構成できます。 「Copilot からの出力を確認する」を参照してください。
  • プル要求の作成を Copilot cloud agent に要求したユーザーが、それを承認できないようにします。 これにより、"必須の承認" ルールとブランチ保護での望ましい制御が維持されます。 「ルールセットで使用できるルール」を参照してください。
  • pull request がユーザーに属性付けされていない場合は、追加の承認が必要です。 Copilot cloud agentが独自のアプリ ID でプル要求を開くと、リポジトリに少なくとも 1 つの承認が既に必要である限り、マージする前にもう 1 つの承認が必要になります。 これは、管理者がオフにすることができ、常にブランチ保護ルールに適用されるルールセットで既定で有効になっています。 「ルールセットで使用できるルール」を参照してください。

Copilot cloud agent 機密情報にアクセスできる

Copilot cloud agent はコードやその他の機密情報にアクセスでき、誤って、または悪意のあるユーザー入力が原因で漏洩する可能性があります。

このリスクを軽減するために、GitHubCopilot cloud agentインターネットへのアクセスを制限します。 「GitHub Copilotのファイアウォールのカスタマイズまたは無効化」を参照してください。

AI プロンプトはインジェクションに対して脆弱になる可能性がある

ユーザーは、Copilot cloud agentに割り当てられた問題や、Copilot cloud agentの形式としてに残されたコメントに非表示のメッセージを含めることができます。

このリスクを軽減するために、GitHubユーザー入力をCopilot cloud agentに渡す前に非表示の文字をフィルター処理します。たとえば、問題に HTML コメントとして入力されたテキストや pull request コメントはCopilot cloud agentに渡されません。

管理者はエージェントの作業を見失う可能性があります

このリスクを軽減するために、 Copilot cloud agent は監査可能で追跡可能に設計されています。

  • Copilot cloud agentのコミットはCopilotによって作成され、タスクを割り当てた開発者またはプルリクエストへの変更を要求した開発者が共同作成者としてマークされます。 これにより、 Copilot cloud agent によって生成されたコードと、タスクを開始したユーザーを簡単に識別できます。
  • Copilot cloud agentのコミットは署名されているため、 GitHubでは "検証済み" として表示されます。 これにより、コミットが Copilot cloud agent によって行われ、変更されていないことが確実になります。
  • セッション ログと監査ログ イベントは、管理者が使用できます。
  • 各エージェントが作成したコミットのコミット メッセージには、コード レビューと監査のためのエージェント セッション ログへのリンクが含まれています。 「エージェント セッションの管理」を参照してください。

自動化は、各タスクを開始するユーザーなしで実行されます

Automations Copilot cloud agent自動的に、スケジュールに従って、またはイベントに応答して、ユーザーが各タスクを開始せずに実行します。 「Copilot自動化について」を参照してください。 これにより、いくつかの追加リスクが生じますが、GitHub は次のようにそれらを軽減します。

  • 作業は、自動化を作成したユーザーに帰属します。 開かれたプル要求と automation によってプッシュされたコードは、 automationを作成したユーザーに属性付けされます。 そのユーザーが自分でプル要求を作成したときと同様に、ユーザーはそれを承認できないため、予想される "必要な承認" コントロールが保持されます。
  • 自動化で使用できるツールを制御します。 イベントによって automation がトリガーされると、信頼されていないユーザーからの入力がプロンプトの一部になる可能性があります。 プロンプト挿入の影響を制限するには、 automation が使用できるツールを正確に選択して、タスクに必要なアクションのみを実行できるようにします。
  • 信頼されていないユーザーからのイベントは、既定では無視されます。 Automations 既定では、リポジトリへの書き込みアクセス権を持たないユーザーによってトリガーされたイベントを無視し、オプトインする設定を使用します。
  • ワークフローには引き続き人間による承認が必要です。 automationによって開かれた問題またはプル要求によって、別のautomationがトリガーされる可能性があります。 すべての Copilot cloud agent 作業と同様に、 GitHub Actions ワークフローは、書き込みアクセス権を持つユーザーがプル要求を承認するまで実行されません。これにより、ワークフローがこのようなチェーンの一部として自動的に実行されなくなります。