返回列表

部落格

遠端 AI 程式開發安全最佳實踐

當 AI 智慧代理擁有程式碼庫的寫入權限,而你透過網路控制它時,安全決策至關重要。以下是做出正確決策的方法。

發布於 標籤: security / guide / best-practices / seo
部落格

繼續查看該欄目下的產品與工程更新。

瀏覽此分類

遠端執行 AI 程式開發智慧代理會引入桌面使用時不存在的安全考量。智慧代理可以存取你的程式碼庫、執行命令、修改檔案。手機到 Mac 之間的網路路徑可能跨越不受信任的區域。

這不是避免遠端 AI 程式開發的理由,而是理解威脅模型並做出明智決策的理由。大多數風險都可以透過簡單直接的實踐來管理。

威脅模型

在深入了解緩解措施之前,先明確你要保護什麼:

資產:

  • 你的原始碼(智慧財產權、設定檔中的金鑰)
  • 你的開發環境(執行命令的能力)
  • Mac 上的 git 憑證和 SSH 金鑰
  • 你的程式碼使用的服務 API Key

威脅來源:

  • 掃描網際網路尋找暴露服務的機會主義攻擊者
  • 共享 WiFi 上的網路竊聽者
  • 撿到或偷走你手機的人
  • 你使用的工具的供應鏈攻擊

攻擊面:

  • 手機與 Mac 之間的網路連線
  • 認證機制
  • AI 智慧代理在檔案系統上的權限
  • Mac 上執行的伺服器程序

第 1 層:網路安全

使用加密連線

區域網路模式(ws://): 流量未加密。在你的家庭 WiFi 上這是可以接受的,因為流量不會離開本地網路。在共享或公共網路上則不可接受。

Cloudflare Tunnel(wss://): 流量使用 TLS 加密。任何跨越網際網路的連線都應使用此方式。隧道在你的手機和 Cloudflare 邊緣之間加密,也在 Cloudflare 和你的 Mac 之間加密。

經驗法則: 如果你在自己控制的網路上(家庭、辦公室),區域網路模式就夠了。其他任何地方,使用 Cloudflare Tunnel。

不要暴露原始連接埠

永遠不要在路由器上將連接埠 8765(或任何連接埠)轉發到你的 Mac 來進行 Tactic Remote 存取。這會將你的伺服器直接暴露在網際網路上,沒有任何中間保護。

Cloudflare Tunnel 完全避免了這個問題——Mac 主動向 Cloudflare 發起出站連線,無需入站連接埠。

Mac 應用程式包含防火牆偵測功能,會警告你防火牆設定問題。保持 Mac 防火牆啟用並開啟隱身模式。

第 2 層:認證

API Key 設定

Tactic Remote 使用 API Key 認證 WebSocket 連線:

  • 區域網路連線: API Key 可選。你的本地網路充當信任邊界。
  • Cloudflare Tunnel 連線: API Key 必須設定。伺服器會拒絕未認證的連線。

API Key 在 WebSocket 交握期間透過 Sec-WebSocket-Protocol 標頭傳輸。在 wss:// 下,此過程是加密的。

API Key 最佳實踐

  1. 使用產生的金鑰。 Mac 應用程式會產生一個 32 字元的隨機金鑰。這比你手動選擇的任何密碼都更強。
  2. 安全傳輸。 使用 QR 碼功能將金鑰當面傳輸到你的 iPhone。不要透過電子郵件、Slack 或簡訊發送。
  3. 定期輪換。 如果你懷疑金鑰可能已洩露,在 Mac 應用程式中產生新金鑰並更新你的 iPhone。
  4. 不要重複使用。 不要將 Tactic Remote 的 API Key 用於其他服務。它是單一用途的憑證。

速率限制

伺服器包含速率限制中介軟體,會減慢重複的認證失敗嘗試。這可以防止對 API Key 的暴力破解攻擊。使用 32 字元的隨機金鑰,暴力破解在運算上是不可行的,但速率限制增加了縱深防禦。

第 3 層:存取控制

路徑限制

Tactic Remote 支援 CLAUDE_REMOTE_ALLOWED_PATH 環境變數,用於限制 Claude Code 可以存取的目錄。將其設定為你的程式碼目錄:

export CLAUDE_REMOTE_ALLOWED_PATH=/Users/you/code

如果不設定,Claude Code 可以存取你的整個主目錄(其預設行為)。路徑限制可以在出現問題時縮小影響範圍。

Claude Code 權限

Claude Code 本身有權限系統。Tactic Remote 中有兩種模式可用:

  1. 標準模式: claude —— Claude Code 在執行危險操作前會請求審批(檔案刪除、執行不熟悉的命令)
  2. 跳過權限模式: claude --dangerously-skip-permissions —— Claude Code 無需詢問直接執行。更快,但沒有安全網。

遠端使用建議: 始終使用標準模式。審批提示在遠端使用時尤其有價值,因為你可以從手機上查看建議的操作並點擊 Y/N。跳過權限意味著 Claude 可以在你不知情的情況下做任何事——在你不在旁邊時很危險。

伺服端驗證

Tactic Remote 伺服器會驗證所有傳入的命令。lib/validators.js 模組檢查:

  • 命令格式正確性
  • 路徑穿越嘗試
  • 輸入長度限制

lib/execSafe.js 模組用安全檢查包裝命令執行。這些不能替代 Claude Code 自身的權限系統,但在伺服器層面增加了一道防禦。

第 4 層:實體和裝置安全

Mac 安全

你的 Mac 是執行引擎。如果有人取得實體存取權限:

  • 他們可以存取你所有的程式碼
  • 他們可以直接控制 Claude Code
  • 他們可以從 Mac 應用程式中讀取 API Key

緩解措施:

  • 啟用 FileVault(全磁碟加密)
  • 使用強登入密碼
  • 啟用自動鎖定螢幕(5 分鐘或更短)
  • 如果在離開 Mac 時執行伺服器,確保 Mac 位於實體安全的位置

iPhone 安全

你的 iPhone 是控制介面。如果有人存取了你解鎖的手機:

  • 他們可以透過 Tactic Remote 向你的 Mac 發送命令
  • 他們可以讀取你的連線設定,包括 API Key

緩解措施:

  • 啟用 Face ID 或強密碼
  • 保持 iOS 更新
  • 不要將手機解鎖後放在無人看管的地方

第 5 層:操作安全

提示中不要包含什麼

從手機向 Claude Code 發送指令時,請記住你的提示會成為對話上下文的一部分。不要包含:

  • 提示中的密碼或 API Key(「使用 API Key abc123 來...」)
  • 資料庫憑證
  • 使用者或客戶的個人資訊

改為透過環境變數名稱引用金鑰:「使用 STRIPE_SECRET_KEY 環境變數中的 API Key。」

審批前先審查

當 Claude Code 請求審批(Y/N 提示)時,在點擊 Y 之前先閱讀它想要做什麼。這在遠端使用時尤為重要,因為你可能正在分心。常見的審批請求:

  • 檔案刪除
  • 執行 shell 命令
  • 安裝套件
  • 修改設定檔

快速審查只需幾秒鐘,就能防止意外操作。

監控事件日誌

Mac 應用程式維護著所有 hook 事件的事件日誌。定期查看它,確認只有你的工作階段和命令出現在日誌中。意外的活動可能表示未授權的存取。

威脅情境與回應

情境:手機遺失或被竊

風險: 攻擊者使用你儲存的連線設定存取 Tactic Remote。

回應:

  1. 從你的 Mac 上立即產生新的 API Key(這會使舊金鑰失效)
  2. 可選擇停止伺服器,直到情況解決
  3. 如果無法找回手機,遠端清除手機

情境:API Key 洩露

風險: 有人取得了你的隧道 URL 和 API Key。

回應:

  1. 在 Mac 應用程式中產生新的 API Key
  2. 如果隧道 URL 也暴露了,重新啟動 cloudflared(它會取得一個新的隨機 URL)
  3. 檢查事件日誌中是否有未授權的工作階段活動
  4. 查看最近的 git 歷史是否有意外的提交

情境:不受信任的 WiFi 網路

風險: 網路竊聽、中間人攻擊。

回應: 這在設計上已被處理。Cloudflare Tunnel 使用 TLS,因此流量是加密的。即使在被攻破的網路上,攻擊者看到的也是加密的 WebSocket 框架,而不是你的終端內容。

情境:Claude Code 進行了意外修改

風險: AI 智慧代理修改了你沒有預期的內容。

回應:

  1. 從手機上使用 Ctrl+C 中斷 Claude
  2. 查看變更:在工作階段中執行 git diff
  3. 如需回復:git checkout . 或 git reset
  4. 這就是 git 版本控制存在的意義——它是你的安全網

安全檢查清單

出發遠端工作前:

  • Cloudflare Tunnel 已啟用(用於網際網路存取)
  • API Key 已設定(32+ 字元隨機字串)
  • API Key 透過 QR 碼傳輸(不透過網際網路)
  • Mac 防火牆已啟用
  • Mac FileVault 已啟用
  • Mac 已設定自動鎖定螢幕
  • iPhone 密碼/Face ID 已啟用
  • Claude Code 執行在標準模式(非 --dangerously-skip-permissions)
  • CLAUDE_REMOTE_ALLOWED_PATH 已設定以限制檔案系統存取
  • 開始工作前有近期的 git commit 作為復原點

立即體驗 Tactic Remote

用手機遠端操作程式開發 Agent

連線到 Mac、Windows 或 Linux 電腦上的 Claude Code、Codex 等 Agent,在 iPhone 或 iPad 上查看進度並傳送下一個請求。