正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

エディタ拡張機能のセキュリティに関する考慮事項

ローカルでエージェントを実行するGitLabエディタ拡張機能(ソフトウェア開発フローなど)を使用する場合は、セキュリティ上の影響を理解し、開発環境を保護するためのベストプラクティスに従ってください。

ローカルでのエージェント実行のリスク

GitLabエディタ拡張機能は、デベロッパーのワークステーションでエージェントをローカルに実行できます。これらのエージェントはコンテナによる分離なしで実行されるため、システムリソースに直接アクセスできます。

ファイルシステムへのアクセス

エージェントのファイルアクセスレベルは、操作の種類によって異なります。

ファイル操作

エージェントは、次のものに対するファイル操作(読み取り、書き込み、編集、検索、リスト表示)を実行できます:

  • GitLabプロジェクトのGitリポジトリにあるファイル。
  • .gitignoreルールによって除外されていないファイル。
  • Gitリポジトリ内のファイルを指す、有効または解決可能なシンボリックリンク。

ファイルに対するShell操作

エージェントが実行するShellコマンドは、Gitリポジトリの外部にあるファイルや、.gitignoreパターンに一致するファイルなど、すべてのファイルにアクセスできます。

環境変数へのアクセス

エージェントは、Shellセッション内のすべての環境変数にアクセスできます。ただし、次の変数を除きます:

  • CI_JOB_TOKEN
  • GITLAB_OAUTH_TOKEN
  • DUO_WORKFLOW_SERVICE_TOKEN

システムリソース

エージェントは、次のシステムリソースにアクセスできます:

  • ネットワークリクエスト: エージェントは、ワークステーションからネットワークリクエストを送信できます。
  • プロセス実行: エージェントは、Shell環境でコマンドを実行できます。

セキュリティ上の脅威

分離が行われていないため、次のような脅威が生じる可能性があります:

  • プロンプトインジェクション: 悪意のあるプロンプトによってエージェントの動作が操作され、意図しないアクションが実行されます。
  • エージェントの侵害: 侵害されたエージェントにより、ワークステーションのリソースへのアクセスが可能になります。
  • データの流出: パスワード、コード、個人ファイルなどの機密データを含む、ワークステーション上のあらゆるデータが盗まれる可能性があります。
  • ラテラルムーブメント: 漏洩した認証情報により、他のシステムやサービスへのアクセスが可能になります。

開発環境を保護するには、次のセキュリティのベストプラクティスに従ってください。

承認前にツール呼び出しを確認する

エージェントがアクションの実行にあたって承認を求めてきた場合は、承認する前に各ツール呼び出しを慎重に確認してください。

次の点を確認します。

  • コマンドおよびファイル操作が、意図しているタスクと一致していること。
  • シンボリックリンクのターゲットファイルを含め、ファイルパスが想定されるディレクトリ内にあること。
  • コマンド引数に、想定外のフラグまたはパラメータが含まれていないこと。
  • 機密ファイルへのアクセスやネットワークリクエストが、そのタスクに必要であること。

MCPサーバーのソースと権限を確認する

GitLab DuoでModel Context Protocol(MCP)サーバーを安全に使用するには、次のようにします:

  • 信頼できるソースのMCPサーバーのみを有効にする。
  • 各MCPサーバーがリクエストする権限と機能を確認する。
  • 有効にする前に、MCPサーバーがアクセスできるデータを確認する。
  • 環境内で有効になっているMCPサーバーを定期的に監査する。

分離のために開発コンテナを使用する

ローカル実行に伴うリスクを軽減するために、開発コンテナを使用してください。

開発コンテナには次のメリットがあります:

  • プロセス分離: エージェントをホストマシン上で直接実行するのではなく、分離されたコンテナ環境で実行します。
  • ファイルシステムへのアクセスの制限: 必要なファイルにのみアクセスできるように、コンテナを設定します。
  • 認証情報の分離: 認証情報を別途管理し、必要に応じてコンテナに挿入します。
  • ネットワーク分離: 外部アクセスを制限するために、コンテナのネットワーキングを制限します。

GitLab for VS Code拡張機能は、VS Code Devコンテナと互換性があります。詳細については、Visual Studio Code Dev Containersで拡張機能を使用するを参照してください。