エディタ拡張機能のセキュリティに関する考慮事項
ローカルでエージェントを実行するGitLabエディタ拡張機能(ソフトウェア開発フローなど)を使用する場合は、セキュリティ上の影響を理解し、開発環境を保護するためのベストプラクティスに従ってください。
ローカルでのエージェント実行のリスク
GitLabエディタ拡張機能は、デベロッパーのワークステーションでエージェントをローカルに実行できます。これらのエージェントはコンテナによる分離なしで実行されるため、システムリソースに直接アクセスできます。
ファイルシステムへのアクセス
エージェントのファイルアクセスレベルは、操作の種類によって異なります。
ファイル操作
エージェントは、次のものに対するファイル操作(読み取り、書き込み、編集、検索、リスト表示)を実行できます:
- GitLabプロジェクトのGitリポジトリにあるファイル。
.gitignoreルールによって除外されていないファイル。- Gitリポジトリ内のファイルを指す、有効または解決可能なシンボリックリンク。
ファイルに対するShell操作
エージェントが実行するShellコマンドは、Gitリポジトリの外部にあるファイルや、.gitignoreパターンに一致するファイルなど、すべてのファイルにアクセスできます。
環境変数へのアクセス
エージェントは、Shellセッション内のすべての環境変数にアクセスできます。ただし、次の変数を除きます:
CI_JOB_TOKENGITLAB_OAUTH_TOKENDUO_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で拡張機能を使用するを参照してください。