🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

![スクリーンショット 2026-03-14 22.03.47.png]()

晚上好,我是 miruky。
各位,有在使用 Claude Code 嗎?
Claude Code 是非常強大的 AI 程式碼代理人,但因為它能夠執行終端機指令與讀寫檔案,若忽略安全性設定可能會帶來意想不到的風險。

本文彙整了為安全使用 Claude Code 需要立即設定的 10 項設定,與大家分享。

本文基於 2026 年 3 月時點的 Claude Code 官方文件。

① 啟用沙箱(Sandbox)

這是最重要的設定。
啟用沙箱後,Claude Code 執行的 Bash 指令會在作業系統層級被隔離,對檔案系統與網路的存取將會受到限制。

// .claude/settings.json
{
  "sandbox": {
    "enabled": true
  }
}

macOS 使用 Seatbelt,Linux 使用 Bubble Wrap 的沙箱。啟用後可透過 /sandbox 指令檢查狀態。

沙箱是 2025 年後半引入的比較新功能,尚未啟用者請優先設定。

② 封堵沙箱的逃脫出口

沙箱預設提供「逃脫出口(escape hatch)」,某些指令可能會在沙箱外執行。請完全封堵此機制。

{
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false
  }
}

將 allowUnsandboxedCommands 設為 false,可將透過 dangerouslyDisableSandbox 參數繞過沙箱的行為完全停用。

③ 以 deny 規則阻擋危險指令

可使用 permissions.deny 明確阻擋不希望 Claude Code 執行的指令。

{
  "permissions": {
    "deny": [
      "Bash(rm -rf *)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(git push *)",
      "Bash(chmod 777 *)"
    ]
  }
}

curl 與 wget 雖然預設就已被阻擋,但明確將它們加入 deny 規則可避免被非預期的允許設定覆寫。

規則的評估順序為 deny → ask → allow,deny 規則具有最高優先權。

④ 拒絕存取機密檔案

阻擋對包含 .env、機密或認證資訊的檔案的存取。

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(./config/credentials.json)",
      "Read(**/*.pem)",
      "Read(**/*.key)"
    ]
  }
}

搭配沙箱的 denyRead,可以同時阻擋 Claude Code 的檔案工具以及經由 Bash 指令的讀取:

{
  "sandbox": {
    "filesystem": {
      "denyRead": ["~/.aws/credentials", "~/.ssh"]
    }
  }
}

⑤ 限制網路存取

利用沙箱的網路控制,以白名單方式指定允許的網域。

{
  "sandbox": {
    "network": {
      "allowedDomains": [
        "github.com",
        "*.githubusercontent.com",
        "*.npmjs.org",
        "registry.yarnpkg.com",
        "pypi.org"
      ]
    }
  }
}

如此可大幅降低 Claude Code 向非預期外部伺服器傳送資料的風險。特別有效於防範透過提示注入(prompt injection)進行的資料外洩(exfiltration)攻擊。

⑥ 停用 bypassPermissions 模式

--dangerously-skip-permissions 參數會跳過所有權限檢查。在團隊開發情境下,建議完全停用此參數。

{
  "permissions": {
    "disableBypassPermissionsMode": "disable"
  }
}

若將此設定放在 Managed Settings(託管設定),使用者端無法覆寫。

⑦ 透過 PreToolUse hook 新增自訂安全檢查

Hooks 是一個強大的功能,能在 Claude Code 的生命週期各階段執行自製腳本。藉由 PreToolUse hook,可以在工具執行前加入自訂檢查。

# .claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/validate-command.sh"
          }
        ]
      }
    ]
  }
}

Hook 腳本範例(阻擋危險指令):

#!/bin/bash
# .claude/hooks/validate-command.sh
COMMAND=$(jq -r '.tool_input.command' < /dev/stdin)

# 阻擋 rm -rf
if echo "$COMMAND" | grep -q 'rm -rf'; then
  echo "Blocked: rm -rf commands are not allowed" >&2
  exit 2  # exit 2 可阻止工具執行
fi

# 阻擋連線到正式環境(production)
if echo "$COMMAND" | grep -q 'prod'; then
  echo "Blocked: production access is not allowed" >&2
  exit 2
fi

exit 0

Hooks 類型除了 command 外,還有 HTTP webhook、LLM 提示評估、以及 agent 型等 4 種。

⑧ 使用 /permissions 指令定期檢視權限

Claude Code 提供 /permissions 指令來列出目前的權限設定。建議定期檢查,例如:

  • 檢查是否有在會話中累積了過多的「Always allow」規則
  • 是否有不必要的允許規則尚未移除
  • deny 規則是否已依預期設定

此外可使用 /status 指令檢查目前讀取了哪些設定檔;若設定檔有錯誤,也能在此處偵測出來。

⑨ 使用 devcontainer 建置完全隔離環境

最安全的做法是將 Claude Code 放在容器中執行。Anthropic 官方提供了 devcontainer 的參考實作。

主要特點:

  • 具備防火牆的網路控制(預設 deny 策略)
  • 與主機完全隔離
  • 可透過 VS Code 的 Remote Containers 擴充功能輕鬆設定
# 方法1: 使用 Claude Code 倉庫的 devcontainer 參考實作
git clone https://github.com/anthropics/claude-code.git
# 在 VS Code 中開啟專案後選擇「Reopen in Container」

# 方法2: 使用 devcontainer features 將其加入現有專案
# 參考: https://github.com/anthropics/devcontainer-features

在 devcontainer 環境中,若是受信任的倉庫,自動化流程中使用 --dangerously-skip-permissions 亦相對較安全(但僅限可信來源)。

⑩ 團隊導向:以 Managed Settings 強制組織政策

若在團隊或組織中使用 Claude Code,建議透過 Managed Settings 集中管理政策。Managed Settings 擁有最高優先權,使用者或專案端無法覆寫。

Managed Settings 有兩種方式:

  • Server-managed settings(public beta):由 Claude.ai 的管理控制台下發設定,無需 MDM,適用於遠端工作 / BYOD 環境
  • Endpoint-managed settings:透過 MDM(Jamf、Intune 等)將設定直接部署到裝置,適合注重安全性的組織

Server-managed settings 可在 Claude for Teams / Enterprise 方案中使用,使用者登入時會自動下發設定。即使組織沒有 MDM 基礎設施,也能集中管理。

Endpoint-managed settings 的部署位置:

  • macOS: /Library/Application Support/ClaudeCode/managed-settings.json
  • Linux: /etc/claude-code/managed-settings.json
  • Windows: C:\Program Files\ClaudeCode\managed-settings.json

組織管理者的主要設定範例:

{
  "permissions": {
    "disableBypassPermissionsMode": "disable"
  },
  "allowManagedPermissionRulesOnly": true,
  "allowManagedHooksOnly": true,
  "allowManagedMcpServersOnly": true,
  "sandbox": {
    "enabled": true,
    "allowUnsandboxedCommands": false,
    "network": {
      "allowManagedDomainsOnly": true,
      "allowedDomains": ["github.com", "*.npmjs.org"]
    }
  }
}

設定鍵與效果:

  • disableBypassPermissionsMode:禁止使用 --dangerously-skip-permissions
  • allowManagedPermissionRulesOnly:只允許 Managed 的 allow/deny/ask 規則
  • allowManagedHooksOnly:停用使用者或專案的 hooks,只允許管理者設定的 hooks
  • allowManagedMcpServersOnly:只允許管理者核可的 MCP 伺服器
  • allowManagedDomainsOnly:只允許管理者指定的網域進行網路存取

結語

Claude Code 是個非常方便的工具,但「便利性」與「安全性」是權衡取捨。特別在團隊開發時,建議先執行 ①~④ 的基本設定,再逐步導入 ⑤ 之後的項目。

下次再見。

參考連結


原文出處:https://qiita.com/miruky/items/51db293a7a7d0d277a5d


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝23   💬8   ❤️1
581
🥈
我愛JS
📝1   💬6  
36
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付