はじめに

CursorはAI駆動開発を強力に支援するツールですが、その便利さの裏にはセキュリティリスクが潜んでいます。コードがサーバーに送信される仕組み、外部MCPサーバーとの連携、ターミナルコマンドの自動実行など、適切に設定しなければ機密情報の漏洩や意図しない操作につながる可能性があります。

本記事では、Cursorを安全に使用するためのセキュリティ設定とベストプラクティスを解説します。この記事を読むことで、以下のことができるようになります。

  • プライバシーモードを理解し、データ保護の設定を適切に行える
  • MCPサーバーの信頼性を評価し、安全に導入できる
  • APIキーと機密情報を安全に管理できる
  • Auto-run設定のリスクを理解し、適切に制御できる
  • 組織でCursorを安全に展開するための方針を策定できる

実行環境と前提条件

実行環境

項目 要件
オペレーティングシステム Windows 10以上、macOS 10.15以上、Ubuntu 20.04以上
Cursor バージョン 2.3以降(2026年1月時点の安定版)
インターネット接続 必須(AIモデル利用に必要)

前提条件

  • Cursorがインストールされ、アカウントでログイン済みであること
  • Cursor Agentの基本操作を理解していること
  • セキュリティに関する基本的な知識があること

期待される結果

本記事の内容を実践することで、以下の状態を達成できます。

  • Cursorのセキュリティアーキテクチャを理解し、リスクを把握している
  • 適切なプライバシー設定が有効化されている
  • 機密情報が適切に保護されている
  • 組織のセキュリティポリシーに準拠したCursor運用ができる

Cursorのセキュリティアーキテクチャ

Cursorのセキュリティを理解するには、まずデータがどのように処理されるかを把握する必要があります。

データフローの概要

Cursorを使用する際、以下のデータがサーバーに送信されます。

flowchart TD
    A[Cursorクライアント] --> B[Cursorサーバー]
    B --> C[AIモデルプロバイダー]
    
    subgraph "送信されるデータ"
        D[コードコンテキスト]
        E[会話履歴]
        F[ファイル構造]
    end
    
    D --> A
    E --> A
    F --> A
    
    subgraph "AIプロバイダー"
        G[OpenAI]
        H[Anthropic]
        I[Google]
        J[Fireworks]
    end
    
    C --> G
    C --> H
    C --> I
    C --> J

AIリクエストには通常、以下の情報が含まれます。

  • 直近で閲覧したファイルの内容
  • 会話履歴
  • Language Serverの情報に基づく関連コード
  • コードベースインデックスからの検索結果

インフラストラクチャの構成

Cursorのインフラは主に以下のサービスで構成されています。

プロバイダー 役割 データの扱い
AWS メインインフラ(米国) コードデータを処理・保存
Cloudflare リバースプロキシ コードデータを通過
Turbopuffer ベクトルDB 難読化されたコード埋め込みを保存
Fireworks/Baseten/Together カスタムモデルホスト コードデータを処理
OpenAI/Anthropic/Google AIモデル コードデータを処理

重要な点として、Cursorのインフラは中国国内には存在せず、中国企業をサブプロセッサーとして直接利用していません。

SOC 2 Type II認証

CursorはSOC 2 Type II認証を取得しています。これは、セキュリティ、可用性、処理の完全性、機密性、プライバシーに関する厳格な基準を満たしていることを示します。認証レポートは trust.cursor.com で確認できます。

プライバシーモードの設定

プライバシーモードは、Cursorのセキュリティにおける最も重要な設定です。

プライバシーモードとは

プライバシーモードを有効にすると、以下の保証が得られます。

  • コードデータがモデルプロバイダーによって保存されない
  • コードデータがAIモデルの学習に使用されない
  • すべてのモデルプロバイダーとの間でゼロデータ保持契約が適用される

Cursorユーザーの50%以上がプライバシーモードを有効にしています。

プライバシーモードの有効化

個人アカウントでプライバシーモードを有効にする手順は以下のとおりです。

  1. Cursor Settingsを開く(Ctrl + Shift + J / Cmd + Shift + J
  2. 「Privacy」セクションに移動
  3. 「Privacy Mode」をオンにする

プライバシーモードの種類

Cursorには複数のプライバシー設定があります。

モード 説明 推奨対象
Privacy Mode コードが保存・学習に使用されない 機密性の高いプロジェクト
Privacy Mode (Legacy) 従来のプライバシーモード 既存ユーザー
Share Data データ共有を許可(デフォルト) 個人プロジェクト

チームでのプライバシーモード強制

Business/Enterpriseプランでは、チーム管理者がプライバシーモードを強制できます。

  1. Cursor管理ダッシュボードにアクセス
  2. チーム設定を開く
  3. 「Enforce Privacy Mode」を有効化

チームに所属するユーザーは、デフォルトでプライバシーモードが強制的に有効化されます。クライアントは5分ごとにサーバーに確認し、チームのプライバシー設定を同期します。

プライバシーモードの技術的実装

Cursorは、プライバシーモードの保証を技術的に実現するために、以下の仕組みを採用しています。

  • 各リクエストに x-ghost-mode ヘッダーを付与
  • プライバシーモード専用のサーバーレプリカでリクエストを処理
  • プライバシーモード用レプリカではログ出力がデフォルトで無効化

コードベースインデックスのセキュリティ

コードベースインデックスは、セマンティック検索を可能にする強力な機能ですが、セキュリティ面での考慮も必要です。

インデックスの仕組み

コードベースインデックスが有効な場合、以下の処理が行われます。

  1. ワークスペースのファイルがCursorサーバーと同期
  2. ファイルがチャンクに分割され、埋め込み(ベクトル)に変換
  3. 埋め込みがTurbopufferに保存
  4. ファイルパスは暗号化して保存

ファイルパスの難読化

ファイルパスは以下の方法で難読化されます。

  • パスは /. で分割
  • 各セグメントはクライアントに保存された秘密鍵で暗号化
  • 決定的な短い6バイトのnonceを使用

この方法では、ディレクトリ階層の一部情報は漏洩する可能性がありますが、多くの情報は保護されます。

埋め込みからの情報復元リスク

学術研究では、場合によっては埋め込みから元のテキストを復元できることが示されています。ただし、現在の攻撃手法は特定の条件下でのみ有効であり、Cursorのケースでは実行が困難です。

それでも、攻撃者がベクトルデータベースに侵入した場合、インデックスされたコードベースについて何らかの情報を得る可能性はあります。

インデックス対象の制御

機密性の高いファイルをインデックスから除外するには、.cursorignore ファイルを使用します。

# 機密設定ファイル
.env
.env.*
*.pem
*.key
secrets/

# 認証情報
credentials/
auth/tokens/

# 内部ドキュメント
internal-docs/
confidential/

# 大きなデータファイル
data/
*.sql
*.dump

.cursorignore に指定されたファイルは、インデックスだけでなく、すべてのAIリクエストからも除外されます。

インデックスの無効化

コードベースインデックス自体を無効化することも可能です。

  1. Cursor Settingsを開く
  2. 「Indexing & Docs」セクションに移動
  3. インデックス機能をオフにする

ただし、インデックスを無効化すると、セマンティック検索が利用できなくなり、AIの回答精度が低下する可能性があります。

MCPサーバーの信頼性確認

Model Context Protocol(MCP)は、Cursorを外部サービスと連携させる強力な機能ですが、セキュリティリスクも伴います。

MCPサーバーのリスク

MCPサーバーは以下の操作が可能です。

  • 外部APIへのアクセス
  • ファイルシステムの操作
  • コマンドの実行
  • ユーザーに代わってのデータ送信

信頼できないMCPサーバーをインストールすると、機密情報の漏洩やシステムの侵害につながる可能性があります。

MCPサーバーの評価基準

MCPサーバーを導入する前に、以下の基準で評価してください。

基準 確認項目
提供元 信頼できる開発者・組織か
ソースコード 公開されているか、監査可能か
権限 必要最小限の権限か
更新頻度 定期的にメンテナンスされているか
コミュニティ ユーザーからのフィードバックはあるか

安全なMCPサーバーの選定

以下の提供元からのMCPサーバーは、一般的に信頼性が高いと考えられます。

  • Anthropic公式(@anthropic/mcp-server-*)
  • Model Context Protocol公式リポジトリ
  • 著名なオープンソースプロジェクト

MCPサーバーの権限制限

MCPサーバーには必要最小限の権限のみを付与します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "${env:GITHUB_TOKEN_READONLY}"
      }
    }
  }
}

上記の例では、読み取り専用のGitHubトークンを使用しています。フルアクセスのトークンではなく、必要な権限のみを持つトークンを使用してください。

MCPツールの有効化・無効化

Agentパネルから、MCPツールを個別に有効・無効にできます。

  1. Agentパネルの「Available Tools」を確認
  2. 使用しないツールは無効化
  3. セッションごとに必要なツールのみを有効化

APIキーの安全な管理

APIキーやシークレットの管理は、セキュリティの基本です。

環境変数の使用

APIキーは直接設定ファイルにハードコードせず、環境変数を使用します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["-y", "mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "${env:DATABASE_URL}",
        "DATABASE_PASSWORD": "${env:DB_PASSWORD}"
      }
    }
  }
}

環境変数の設定方法

OSごとの環境変数設定方法は以下のとおりです。

Windows(PowerShell)

1
2
3
$env:GITHUB_TOKEN = "your-token-here"
# または永続化する場合
[System.Environment]::SetEnvironmentVariable("GITHUB_TOKEN", "your-token", "User")

macOS/Linux

1
2
3
export GITHUB_TOKEN="your-token-here"
# または ~/.bashrc や ~/.zshrc に追加
echo 'export GITHUB_TOKEN="your-token-here"' >> ~/.zshrc

シークレット管理ツールの活用

より安全な管理には、シークレット管理ツールを使用します。

ツール 特徴
1Password CLI チーム間でのシークレット共有
HashiCorp Vault エンタープライズ向け
AWS Secrets Manager AWS環境との統合
Azure Key Vault Azure環境との統合

.cursorignoreによる除外

機密情報を含むファイルをAIリクエストから除外します。

# 環境変数ファイル
.env
.env.local
.env.production
.env.*.local

# 認証情報
*.pem
*.key
*.p12
*.pfx

# 設定ファイル
config/secrets.yml
config/credentials.yml.enc

機密情報の誤送信防止

コードに機密情報が含まれていないか、定期的にチェックします。

1
2
3
4
5
チェック項目:
- APIキーがハードコードされていないか
- パスワードが平文で記載されていないか
- 内部URLやIPアドレスが含まれていないか
- 顧客データが含まれていないか

Auto-run設定のリスクと制御

Auto-run設定は生産性を向上させますが、セキュリティリスクも伴います。

Auto-runのリスク

Auto-runを有効にすると、Agentが以下の操作を自動的に実行する可能性があります。

  • ファイルの作成・変更・削除
  • ターミナルコマンドの実行
  • 外部APIへのリクエスト

悪意のある指示や誤った指示により、意図しない操作が実行されるリスクがあります。

Auto-run設定レベル

Auto-runには3つの設定レベルがあります。

レベル 説明 リスク 推奨シーン
Off すべての操作に確認が必要 最低 機密プロジェクト
Safe 安全な操作のみ自動実行 一般的な開発
All すべての操作を自動実行 最高 信頼できる環境のみ

Safeモードの動作

Safeモードでは、以下の操作が自動実行されます。

  • ファイルの読み取り
  • コードベース検索
  • Grep検索
  • 安全なターミナルコマンド(lint、format等)

以下の操作は確認が必要です。

  • ファイルの書き込み
  • 破壊的なターミナルコマンド
  • 外部APIへのリクエスト

許可リストと拒否リストの設定

Auto-runの動作をカスタマイズできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "cursor.agent.autoRun": {
    "level": "safe",
    "autoApplyEdits": false,
    "autoRunTerminal": true,
    "terminalAllowList": [
      "npm test",
      "npm run lint",
      "npm run format",
      "git status",
      "git diff"
    ],
    "terminalDenyList": [
      "rm -rf",
      "sudo",
      "chmod 777",
      "curl",
      "wget"
    ]
  }
}

サンドボックス化されたターミナル

Cursor 2.0以降、macOSとLinuxでは、Agentのコマンドがデフォルトでサンドボックス内で実行されます。

サンドボックスの特徴は以下のとおりです。

  • ワークスペースへの読み書きは可能
  • インターネットアクセスは制限(設定で変更可能)
  • ファイルシステムへの不正アクセスをブロック

Enterpriseでの管理者コントロール

Enterpriseプランでは、管理者が以下の設定を強制できます。

  • サンドボックスの有効/無効
  • Auto-runレベルの上限
  • 許可/拒否リストの強制適用

機密情報の取り扱いベストプラクティス

機密情報を安全に取り扱うためのベストプラクティスを紹介します。

機密情報の分類

まず、プロジェクト内の機密情報を分類します。

分類 推奨対策
最高機密 本番DBパスワード、暗号化キー .cursorignore、別リポジトリ
機密 APIキー、認証トークン 環境変数、シークレット管理
内部 内部URL、設計ドキュメント プライバシーモード
公開可 オープンソースコード 通常設定

プロジェクト構成の工夫

機密情報を含むファイルを分離した構成にします。

project/
├── src/                    # AIリクエストに含める
├── tests/                  # AIリクエストに含める
├── docs/                   # AIリクエストに含める
├── config/
│   ├── default.json        # AIリクエストに含める
│   └── production.json     # .cursorignoreで除外
├── secrets/                # .cursorignoreで除外
│   ├── .env.production
│   └── certificates/
└── .cursorignore

Rulesによるセキュリティ指示

Project Rulesを使って、Agentにセキュリティ方針を指示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Security Rules

## 機密情報の取り扱い

- APIキー、パスワード、トークンは絶対にコードにハードコードしない
- 機密情報は必ず環境変数または secrets manager から取得する
- ログに機密情報を出力しない

## セキュリティ対策

- SQLクエリはパラメータ化クエリを使用する
- ユーザー入力は必ずバリデーションする
- 認証・認可のチェックを省略しない

## 禁止事項

- eval() の使用
- 動的なコード実行
- 信頼できないソースからのデータの直接使用

コードレビューでのセキュリティチェック

AIが生成したコードは、以下の観点でレビューします。

1
2
3
4
5
6
7
8
セキュリティレビューチェックリスト:
[ ] 機密情報がハードコードされていないか
[ ] 入力値のバリデーションが適切か
[ ] SQLインジェクション対策が施されているか
[ ] XSS対策が施されているか
[ ] 認証・認可が適切に実装されているか
[ ] エラーメッセージに機密情報が含まれていないか
[ ] ログに機密情報が出力されていないか

アカウントの削除とデータ消去

Cursorを使用しなくなった場合や、データの完全消去が必要な場合の手順です。

アカウント削除の手順

  1. Settings dashboard にアクセス
  2. 「Advanced」をクリック
  3. 「Delete Account」をクリック
  4. 確認ダイアログで削除を実行

削除されるデータ

アカウント削除により、以下のデータが削除されます。

  • アカウント情報
  • インデックスされたコードベース
  • チャット履歴
  • 設定情報

データは30日以内に完全に削除されることが保証されています(バックアップからの削除を含む)。

注意事項

プライバシーモードが有効でない期間にデータがモデル学習に使用されていた場合、既存の学習済みモデルがすぐに再学習されるわけではありません。ただし、その後に学習される新しいモデルでは、削除済みのデータは使用されません。

組織でのセキュリティポリシー策定

組織でCursorを導入する際のセキュリティポリシー策定のポイントを紹介します。

ポリシーに含めるべき項目

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Cursor利用セキュリティポリシー(例)

1. 利用資格
   - 承認されたプロジェクトでのみ使用
   - 機密レベルに応じた使用制限

2. プライバシー設定
   - 全ユーザーにプライバシーモードを強制
   - コードベースインデックスの有効/無効

3. MCPサーバー
   - 承認されたMCPサーバーのみ使用
   - 新規MCPサーバーは審査後に導入

4. Auto-run設定
   - Safeモード以下を強制
   - 拒否リストの標準設定

5. 機密情報
   - .cursorignoreの標準テンプレート
   - 禁止ファイルパターンの定義

6. インシデント対応
   - 機密情報漏洩時の報告手順
   - 緊急連絡先

チーム設定の展開

Business/Enterpriseプランでは、以下の設定をチーム全体に強制できます。

  • プライバシーモード
  • Team Rules
  • 許可されたAIモデル
  • Auto-run設定の上限

脆弱性報告

Cursorに脆弱性を発見した場合は、以下の連絡先に報告してください。

Cursorは脆弱性報告を5営業日以内に受領確認し、可能な限り速やかに対応することを約束しています。

まとめ

Cursorを安全に使用するためのポイントを振り返ります。

  • プライバシーモード: 機密性の高いプロジェクトでは必ず有効化
  • コードベースインデックス: .cursorignoreで機密ファイルを除外
  • MCPサーバー: 信頼できる提供元のみから導入し、必要最小限の権限を付与
  • APIキー管理: 環境変数またはシークレット管理ツールを使用
  • Auto-run設定: Safeモード以下で運用し、許可/拒否リストを設定
  • 組織ポリシー: Business/Enterpriseプランでセキュリティ設定を強制

AI駆動開発は生産性を大幅に向上させますが、セキュリティを軽視すると重大なリスクにつながります。本記事で紹介した設定とベストプラクティスを実践し、安全にCursorを活用してください。

参考リンク