أفضل ممارسات الأمان

إتقان آليات الأمان في Claude Code بالكامل — التحكم في الأذونات، وحماية الملفات الحساسة، واعتراض الأوامر، وإدارة مفاتيح API

آخر تحديث 2026-11-13

تحتاج مفتاح API؟ أنشئ حسابًا ←نقاط النهاية وعناوين Base URL ←

في هذه الصفحة

أفضل ممارسات الأمان

Claude Code مساعد برمجة قوي بالذكاء الاصطناعي، لكن «قوي» يعني أيضًا أنه يتطلب أذونات نظام عالية — قراءة الملفات وكتابتها، وتنفيذ الأوامر، والوصول إلى الشبكة. هذا أشبه بمنح متدرب صلاحيات مسؤول: قادر، لكن حدود الأمان ضرورية.

ستساعدك هذه الوثيقة على إنشاء منظومة دفاع أمني شاملة، من الاستخدام الشخصي إلى تعاون الفريق، ومن بيئات التطوير إلى أتمتة CI/CD، بما يضمن استمتاعك بكفاءة البرمجة بالذكاء الاصطناعي دون الوقوع في مطبات أمنية.

فهم نموذج الأمان في Claude Code

يعمل Claude Code في طرفيتك

هذا أمر بالغ الأهمية والأساس لفهم جميع تدابير الأمان: لا يعمل Claude Code داخل بيئة معزولة سحابية، بل يعمل مباشرةً في طرفيتك المحلية.

هذا يعني:

  • يمكنه قراءة أي ملف على جهازك (ما دام مستخدمك يملك الإذن)
  • يمكنه تنفيذ أي أمر صدفة
  • يمكنه الوصول إلى متغيرات البيئة لديك (بما في ذلك أي أسرار قد تحتوي عليها)
  • يمكنه إرسال البيانات واستقبالها عبر الشبكة

بالطبع، يملك Claude Code آليات أمان مدمجة لتقييد هذه القدرات. لكن يجب أن تتذكر دائمًا هذه الحقيقة الأساسية: الحد الأقصى لأذوناته هو أذونات المستخدم لديك.

آلية الموافقة على الأذونات

فلسفة الأمان الأساسية في Claude Code هي الإنسان في الحلقة. افتراضيًا، يطلب تأكيدك قبل تنفيذ العمليات التالية:

  • أول استخدام لأداة
  • تنفيذ أوامر الصدفة (خاصة تلك التي لم توافق عليها مسبقًا)
  • كتابة ملفات جديدة أو تعديل ملفات موجودة
  • الوصول إلى موارد الشبكة

تبدو طلبات الأذونات التي تراها على هذا النحو تقريبًا:

Claude wants to run: rm -rf node_modules && npm install

Allow?
  (y) Yes, allow once
  (a) Always allow "npm install" commands
  (n) No, deny

مبدأ أساسي: إذا لم تكن متأكدًا مما إذا كانت العملية آمنة، فاختر «لا». يمكنك دائمًا الموافقة عليها لاحقًا بعد أن تفهم الموقف.

خطوط الدفاع الثلاثة

يتكون نظام الأمان في Claude Code من ثلاثة خطوط دفاع:

First Line: Permission Mode (Global Policy)
  ↓
Second Line: Allow/Deny Rules (Fine-grained Control)
  ↓
Third Line: Hooks (Custom Interception Logic)

سنتناول كلًا منها أدناه.

إعداد الأذونات

مقارنة أوضاع الأذونات

يوفر Claude Code ستة أوضاع للأذونات، من الأعلى إلى الأدنى في مستوى الأمان تقريبًا:

الوضع تحرير الملفات تنفيذ الأوامر حالات الاستخدام مستوى الأمان
plan محظور محظور (قراءة فقط) مراجعة الشيفرة، تحليل البنية الأعلى
default سؤال في المرة الأولى سؤال في كل مرة التطوير اليومي مرتفع
dontAsk المعتمد مسبقًا فقط المعتمد مسبقًا فقط CI/CD، السكربتات (قائمة سماح) مرتفع
acceptEdits موافقة تلقائية سؤال في كل مرة المهام التي تتطلب تعديلات متكررة على الملفات متوسط
auto مراجعة المصنّف مراجعة المصنّف المهام الطويلة، مقاطعات أقل متوسط
bypassPermissions موافقة تلقائية موافقة تلقائية حاويات/أجهزة افتراضية معزولة منخفض

شرح تفصيلي لكل وضع:

وضع plan: يستطيع Claude البحث في الشيفرة وقراءتها فقط، ولا يمكنه إجراء أي تعديلات. مناسب للحالات التي تريد فيها أن يحلل Claude الشيفرة دون أن يمسّ أي شيء. انتقل إلى هذا الوضع عبر Shift+Tab.

وضع default: الوضع اليومي الموصى به. يسأل Claude في المرة الأولى التي يستخدم فيها نوعًا من الأدوات؛ وبعد موافقتك، لن تُسأل مرة أخرى عن العمليات المشابهة. تتطلب أوامر shell التأكيد دائمًا.

وضع acceptEdits: ثق بقدرات Claude على تحرير الملفات مع توخي الحذر بشأن تنفيذ الأوامر. مناسب للحالات التي تحتاج فيها إلى أن يجري Claude تعديلات واسعة على ملفات الشيفرة دون أن ينفذ أوامر عشوائية.

وضع dontAsk: لا يسأل أبدًا؛ ويُرفض أي شيء غير معتمد مسبقًا (عبر --allowedTools أو قواعد السماح). مناسب لـ CI والسكربتات: سلوك ثابت وقابل لإعادة الإنتاج.

وضع auto: تُحال الإجراءات التي تحتاج إلى موافقة إلى مصنّف، فيحظر الإجراءات الخطرة ويسمح بمرور البقية. بدءًا من Claude Code 2.1.283، تبدأ الجلسات التفاعلية في وضع auto؛ وبدءًا من 2.1.285، يبدأ claude -p الذي يعمل عبر QCode أيضًا في وضع auto عند عدم تعيين وضع. تُحتسب طلبات المصنّف (النموذج claude-sonnet-5) ضمن استخدامك. راجع الأذونات.

وضع bypassPermissions: تجاوز جميع فحوص الأذونات. استخدمه فقط داخل حاوية أو جهاز افتراضي معزول؛ وفي CI، فضّل dontAsk مع قائمة سماح.

العرض والتعديل عبر /permissions

يمكنك كتابة /permissions في أي وقت داخل Claude Code لعرض حالة الأذونات الحالية:

/permissions

سيعرض الناتج الوضع الحالي، والأدوات المعتمدة، وقواعد السماح/الرفض، والمزيد.

إعداد الأذونات في settings.json

يُخزَّن إعداد الأذونات في settings.json، ويُقسَّم إلى مستويين:

على مستوى المستخدم (يؤثر في جميع المشاريع): ~/.claude/settings.json على مستوى المشروع (يؤثر في المشروع الحالي فقط): .claude/settings.json

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test:*)",
      "Bash(git status)",
      "Bash(git add:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(node:*)",
      "Bash(python:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)"
    ]
  }
}

شرح صيغة القواعد:

الصيغة المعنى المثال
Bash(cmd) مطابقة الأمر الحرفية Bash(npm run lint)
Bash(cmd:*) مطابقة بادئة الأمر يطابق Bash(git log:*) جميع الأوامر التي تبدأ بـ git log
Read(path) مطابقة قراءة الملف Read(.env)
Write(path) مطابقة كتابة الملف Write(src/**)
** حرف بدل للمجلدات متعددة المستويات يطابق Read(secrets/**) جميع الملفات في كل المستويات ضمن secrets
* حرف بدل لمستوى واحد يطابق Read(.env.*) ملفات مثل .env.local و.env.production وغيرها

مهم: لقواعد الرفض أولوية أعلى من قواعد السماح. حتى إذا وافقت على عملية ضمن قواعد السماح، فسيُرفض مع ذلك إذا طابقت أيضًا قاعدة رفض.

حماية الملفات الحساسة

استخدام .claudeignore لاستبعاد المجلدات الحساسة

صياغة ملف .claudeignore هي نفس صياغة .gitignore. تكون الملفات والمجلدات المدرجة غير مرئية تمامًا لـ Claude Code:

أنشئ ملف .claudeignore في جذر المشروع:

# Environment variables and keys
.env
.env.*
secrets/
*.pem
*.key
*credentials*

# Sensitive configuration
config/production.yml
config/secrets.yml

# Personal data
data/users/
*.sqlite
*.db

# Other sensitive directories
.aws/
.ssh/
.gnupg/

ملاحظة: يجعل .claudeignore Claude غير قادر تمامًا على رؤية هذه الملفات — فهو لا يعرف حتى أن هذه الملفات موجودة. هذا أكثر شمولًا من قواعد المنع.

استخدام Hooks لاعتراض تعديلات الملفات الحساسة

إذا أردت أن يتمكن Claude من قراءة ملفات معينة دون تعديلها، فيمكنك استخدام Hooks للتحكم الدقيق:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "python3 -c \"\nimport sys, json, os\ntool_input = json.loads(os.environ.get('TOOL_INPUT', '{}'))\npath = tool_input.get('file_path', '') or tool_input.get('path', '')\nprotected = ['.env', 'credentials', 'secret', '.pem', '.key']\nfor p in protected:\n    if p in path.lower():\n        print(f'BLOCKED: Modification of files containing {p} is not allowed', file=sys.stderr)\n        sys.exit(2)\n\""
          }
        ]
      }
    ]
  }
}

يفحص هذا Hook مسار الملف قبل أن يحاول Claude كتابة ملف أو تعديله. إذا كان المسار يحتوي على كلمات مفتاحية حساسة، فإنه يحظر العملية (رمز الخروج 2 يعني الحظر).

قالب إعدادات الحماية

في مشاريع الفرق، يُوصى بإنشاء ملف إعدادات أمان قياسي مخزَّن في المستودع:

// .claude/settings.json (committed to Git)
{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)",
      "Read(**/*.pem)",
      "Read(**/*.key)",
      "Write(.git/**)",
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(chmod 777:*)",
      "Bash(curl|wget:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$TOOL_INPUT\" | python3 -c \"import sys,json; cmd=json.load(sys.stdin).get('command',''); blocked=['DROP TABLE','DELETE FROM','TRUNCATE','password','token','secret']; [sys.exit(2) for b in blocked if b.lower() in cmd.lower()]\""
          }
        ]
      }
    ]
  }
}

أمان تنفيذ الأوامر

فهم سلوك أداة Bash

ينفّذ Claude Code أوامر الصدفة عبر أداة Bash. بشكل افتراضي، تتطلب كل عملية تنفيذ تأكيدك، باستثناء الأوامر التي وافقت عليها مسبقًا.

بعض السلوكيات الجديرة بالملاحظة:

  • تُنفَّذ الأوامر في بيئة الصدفة الحالية لديك
  • تكون متغيرات البيئة مرئية للأوامر
  • يمكن للأوامر تعديل نظام الملفات
  • يمكن للأوامر تثبيت البرامج
  • يمكن للأوامر الوصول إلى الشبكة

الأوامر التي تتم الموافقة عليها تلقائيًا

عند إضافة نمط أمر إلى قائمة allow في settings.json، تُنفَّذ الأوامر المطابقة تلقائيًا دون طلب تأكيد.

أوامر آمنة موصى بها وموافَق عليها مسبقًا:

{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(git branch:*)",
      "Bash(ls:*)",
      "Bash(cat:*)",
      "Bash(head:*)",
      "Bash(tail:*)",
      "Bash(wc:*)",
      "Bash(find:*)",
      "Bash(grep:*)",
      "Bash(npm run lint:*)",
      "Bash(npm run test:*)",
      "Bash(python -m pytest:*)"
    ]
  }
}

حظر الأوامر الخطرة

يجب أن تكون الأوامر التالية دائمًا في قائمة Deny وألا يُسمح لها بالتنفيذ تلقائيًا أبدًا:

{
  "permissions": {
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(rm -r /:*)",
      "Bash(git push --force:*)",
      "Bash(git push -f:*)",
      "Bash(git reset --hard:*)",
      "Bash(git checkout -- .:*)",
      "Bash(git clean -f:*)",
      "Bash(chmod 777:*)",
      "Bash(chown:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)",
      "Bash(shutdown:*)",
      "Bash(reboot:*)"
    ]
  }
}

حظر الأوامر بشكل مخصص عبر Hooks

لمنطق حظر أكثر تعقيدًا، استخدم Hooks:

مثال 1: حظر جميع أوامر طلبات الشبكة

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$TOOL_INPUT\" | python3 -c \"\nimport sys, json\ncmd = json.load(sys.stdin).get('command', '')\nnet_cmds = ['curl', 'wget', 'nc ', 'netcat', 'ssh ', 'scp ', 'rsync']\nfor nc in net_cmds:\n    if nc in cmd:\n        print(f'BLOCKED: Network commands are not allowed ({nc})', file=sys.stderr)\n        sys.exit(2)\n\""
          }
        ]
      }
    ]
  }
}

مثال 2: تسجيل جميع الأوامر في سجل التدقيق

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$(date '+%Y-%m-%d %H:%M:%S') [Bash] $TOOL_INPUT\" >> ~/.claude/audit.log"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$(date '+%Y-%m-%d %H:%M:%S') [FileChange] $TOOL_INPUT\" >> ~/.claude/audit.log"
          }
        ]
      }
    ]
  }
}

يمنحك هذا سجل تدقيق كاملًا للعمليات يمكنك الرجوع إليه في أي وقت لمعرفة ما فعله Claude Code.

أمان مفتاح API

لا تُضمّن مفاتيح API بشكل ثابت في CLAUDE.md

يُعد هذا الخطأ الأمني الأكثر شيوعًا. عادةً ما يُودَع ملف CLAUDE.md في مستودع Git، ويقرأه Claude Code في كل مرة يبدأ فيها. إذا كان يحتوي على مفتاح API، فإن:

  1. سيُودَع المفتاح في سجل Git (حتى إذا حُذف لاحقًا)
  2. يكون المفتاح مرئيًا لـ Claude Code وقد يظهر في السجلات أو نتائج التحليل
  3. يمكن لجميع أعضاء الفريق الآخرين رؤية هذا المفتاح

الطريقة الخاطئة:

<!-- CLAUDE.md -->
## API Configuration
Database connection: postgresql://admin:P@ssw0rd@localhost:5432/mydb
OpenAI Key: sk-xxxxxxxxxxxxxxxxxxxx

الطريقة الصحيحة:

<!-- CLAUDE.md -->
## API Configuration

- Database connection and API Keys are managed via .env file
- .env file is not committed to Git (already in .gitignore)
- New developers need to copy .env.example and fill in their own credentials

استخدم متغيرات البيئة لإدارة المفاتيح

النهج الموصى به لإدارة المفاتيح:

# .env (not committed to Git)
DATABASE_URL=postgresql://admin:P@ssw0rd@localhost:5432/mydb
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
REDIS_URL=redis://localhost:6379

# .env.example (committed to Git, without actual values)
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
OPENAI_API_KEY=sk-your-key-here
REDIS_URL=redis://localhost:6379

تأكد من أن .env موجود في كل من .gitignore و.claudeignore:

# .gitignore
.env
.env.local
.env.production

# .claudeignore (if you don't want Claude to read .env)
.env
.env.*

الخطوات الواجب اتخاذها بعد انكشاف مفتاح API

إذا كنت تشك في أن مفتاح API قد انكشف (على سبيل المثال، أُودِع في Git عن طريق الخطأ)، فنفّذ الخطوات التالية فورًا:

1. Rotate the key immediately

   - Go to the corresponding service's console to generate a new API Key
   - Update all environment variables using that Key

2. Remove from Git history
   git filter-branch --force --index-filter \
     "git rm --cached --ignore-unmatch .env" \
     --prune-empty --tag-name-filter cat -- --all

   Or use the safer BFG Repo-Cleaner:
   bfg --delete-files .env
   git reflog expire --expire=now --all
   git gc --prune=now --aggressive

3. Force push the cleaned history
   git push --force --all

4. Check for abnormal usage

   - Review API usage logs for any abnormal calls
   - Check billing records for any abnormal charges

5. Notify the team

   - Inform all developers to re-clone the repository
   - Update keys in all deployment environments

إرشادات أمان الفريق

مشاركة قالب settings.json

أنشئ إعدادًا أساسيًا موحدًا للأمان للفريق، وأودعه في .claude/settings.json الخاص بالمشروع:

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run:*)",
      "Bash(git status)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Bash(python -m pytest:*)"
    ],
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)",
      "Read(**/*.pem)",
      "Read(**/*.key)",
      "Read(**/*credential*)",
      "Write(.git/**)",
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(ssh:*)",
      "Bash(scp:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$(date -Iseconds) TOOL_USE: $TOOL_INPUT\" >> .claude/audit.log"
          }
        ]
      }
    ]
  }
}

يمكن لأعضاء الفريق إضافة إعدادات شخصية في ~/.claude/settings.json (على مستوى المستخدم)، لكن لا يمكن تجاوز قواعد الرفض على مستوى المشروع.

إعدادات الأمان في CI/CD

عند استخدام Claude Code في بيئات CI/CD (الوضع بلا واجهة)، تصبح إعدادات الأمان أكثر أهمية:

# GitHub Actions example
name: AI Code Review
on: [pull_request]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:

      - uses: actions/checkout@v4

      - name: Run Claude Code Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude --print --permission-mode dontAsk \
            --allowedTools "Read,Glob,Grep,Bash(git diff *)" \
            "Please review the code changes in this PR, providing feedback on security and code quality" \
            < /dev/null

اعتبارات الأمان في CI/CD:

البند الوصف
إدارة مفاتيح API استخدم Secrets منصة CI/CD (مثل GitHub Secrets)، ولا تُضمّن القيم مباشرة في الشيفرة.
أقل صلاحية يجب أن يمتلك Claude Code في بيئات CI صلاحيات قراءة فقط، وألا يعدّل الشيفرة.
عزل الشبكة قيّد الوصول إلى الشبكة الصادرة لبيئات CI.
إعدادات المهلة عيّن حدودًا زمنية معقولة للتنفيذ لمنع فترات التشغيل الطويلة غير الطبيعية.
تنظيف السجلات تأكد من عدم تضمين معلومات حساسة في سجلات CI.

اعتبارات الأمان في الوضع بلا واجهة

يُستخدم الوضع بلا واجهة (--print أو -p) في السيناريوهات غير التفاعلية حيث لا يوجد إنسان في الحلقة لتأكيد العمليات. يلزم توخي حذر إضافي عند استخدامه:

# Set the permission mode explicitly: without one (since 2.1.285) it defaults to auto
# Read-only analysis: in dontAsk, anything not approved is denied
claude --print --permission-mode dontAsk "Analyze the code structure in the src/ directory"

# For write operations, pre-approve only the tools you need (naming a file in the prompt is not a security boundary)
claude --print --permission-mode dontAsk --allowedTools "Read,Edit" "Fix the type error in src/utils.py"

# Be clearly aware of the risks when using --dangerously-skip-permissions; use it only in an isolated container
claude --print --dangerously-skip-permissions "Run npm test"

سبب امتلاك --dangerously-skip-permissions لهذا الاسم الطويل هو تذكيرك: تجاوز فحوص الأذونات خطير. لا تستخدمه إلا عندما تتحكم تحكمًا كاملًا في prompt الإدخال وتفهم تمامًا العمليات المحتملة.

أمن المؤسسات

التحكم في الوصول إلى الشبكة

إذا كانت مؤسستك تتبع سياسات صارمة لأمن الشبكة، فيمكنك التحكم في وصول Claude Code إلى الشبكة بالطرق التالية:

1. إعداد الوكيل

عيّن وكيل HTTP عبر متغيرات البيئة، بحيث تمر جميع طلبات الشبكة عبر الوكيل لتسهيل التدقيق والتحكم:

# Set in .bashrc or .zshrc
export HTTP_PROXY=http://proxy.company.com:8080
export HTTPS_PROXY=http://proxy.company.com:8080
export NO_PROXY=localhost,127.0.0.1,.company.com

2. قواعد جدار الحماية

على جدار الحماية الخاص بالمؤسسة، يمكنك السماح لـ Claude Code بالوصول إلى النطاقات الضرورية فقط:

# Domains that must be allowed
api.anthropic.com         # Anthropic API
*.claude.ai               # Claude services

# Optional allows (based on features used)
registry.npmjs.org         # npm package installation
pypi.org                   # Python package installation
github.com                 # Git operations

3. تعطيل أوامر الشبكة في settings.json

كطبقة أمان إضافية، احظر أدوات الشبكة الشائعة في قواعد الحظر:

{
  "permissions": {
    "deny": [
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(nc:*)",
      "Bash(ssh:*)",
      "Bash(scp:*)",
      "Bash(rsync:*)",
      "Bash(ftp:*)",
      "Bash(telnet:*)"
    ]
  }
}

تدقيق السجلات

بالنسبة إلى المؤسسات ذات متطلبات الامتثال الأعلى، يُوصى بإنشاء نظام كامل لتسجيل التدقيق:

1. سجلات العمليات

سجّل جميع عمليات استدعاء الأدوات عبر Hooks:

{
  "hooks": {
    "PreToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 -c \"\nimport json, os, datetime\nlog_entry = {\n    'timestamp': datetime.datetime.now().isoformat(),\n    'user': os.environ.get('USER', 'unknown'),\n    'tool': os.environ.get('TOOL_NAME', 'unknown'),\n    'input': os.environ.get('TOOL_INPUT', '')[:500]\n}\nwith open(os.path.expanduser('~/.claude/audit.jsonl'), 'a') as f:\n    f.write(json.dumps(log_entry, ensure_ascii=False) + '\\n')\n\""
          }
        ]
      }
    ]
  }
}

2. سجلات الجلسات

يحتفظ Claude Code نفسه بسجل الجلسات، المخزّن في الدليل ~/.claude/. ويمكن للمؤسسات نسخ هذه السجلات احتياطيًا بشكل دوري.

3. تتبّع التغييرات

بالاقتران مع Git، تحظى جميع تغييرات الملفات بسجلات تتبّع كاملة. يُوصى بإجراء تعديلات Claude Code على فروع منفصلة ودمجها عبر عملية PR.

اعتبارات الامتثال

قد ينطوي استخدام أدوات البرمجة بالذكاء الاصطناعي على مسائل الامتثال التالية:

أمن البيانات

الخطر إجراءات التخفيف
رفع الشيفرة إلى السحابة لا يرفع Claude Code الشيفرة الخاصة بك إلى خوادم Anthropic (باستثناء السياق في طلبات API)
تسريب البيانات الحساسة استخدم .claudeignore لاستبعاد الملفات الحساسة؛ واحظر قراءة .env وملفات المفاتيح في قواعد الحظر
المعلومات الحساسة في طلبات API تجنّب لصق كلمات المرور وtokens وغيرها من المعلومات الحساسة في المحادثات

الملكية الفكرية

  • تعود مخرجات Claude Code (الشيفرة المولّدة) إلى المستخدم
  • ضع في اعتبارك أن الشيفرة المولّدة قد تحتوي على محتوى محمي بحقوق النشر
  • بالنسبة إلى شيفرة الأعمال الحرجة، يُوصى بمراجعة بشرية قبل الاستخدام

امتثال القطاعات

  • قد يكون لدى القطاعات الخاضعة للتنظيم، مثل المالية والرعاية الصحية، قيود إضافية على استخدام الذكاء الاصطناعي
  • تأكّد مما إذا كانت مؤسستك لديها سياسات بشأن استخدام أدوات الذكاء الاصطناعي
  • حافظ على سجلات التدقيق لتلبية متطلبات مراجعة الامتثال

مرجع سريع لإعدادات الأمان

أخيرًا، إليك قائمة مرجعية سريعة لإعدادات الأمان:

الحد الأدنى من إعدادات الأمان للمطورين الأفراد

{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)"
    ]
  }
}

الإعدادات الموصى بها لمشاريع الفرق

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run:*)",
      "Bash(git status)",
      "Bash(git diff:*)",
      "Bash(git log:*)"
    ],
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)",
      "Read(**/*.pem)",
      "Write(.git/**)",
      "Bash(rm -rf:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Bash(curl:*)",
      "Bash(wget:*)"
    ]
  }
}

إعدادات الأمان العالية للمؤسسات

{
  "permissions": {
    "defaultMode": "default",
    "allow": [
      "Bash(npm run lint)",
      "Bash(npm run test)",
      "Bash(git status)",
      "Bash(git diff)"
    ],
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(secrets/**)",
      "Read(**/*.pem)",
      "Read(**/*.key)",
      "Read(**/*credential*)",
      "Read(**/*password*)",
      "Write(.git/**)",
      "Write(.github/**)",
      "Bash(rm:*)",
      "Bash(git push:*)",
      "Bash(git reset:*)",
      "Bash(git checkout -- :*)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(ssh:*)",
      "Bash(scp:*)",
      "Bash(nc:*)",
      "Bash(python -c:*)",
      "Bash(node -e:*)",
      "Bash(eval:*)",
      "Bash(exec:*)",
      "Bash(sudo:*)",
      "Bash(chmod:*)",
      "Bash(chown:*)"
    ]
  },
  "hooks": {
    "PreToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 -c \"import json,os,datetime; f=open(os.path.expanduser('~/.claude/audit.jsonl'),'a'); f.write(json.dumps({'ts':datetime.datetime.now().isoformat(),'user':os.environ.get('USER','?'),'tool':os.environ.get('TOOL_NAME','?'),'input':os.environ.get('TOOL_INPUT','')[:500]},ensure_ascii=False)+'\\n'); f.close()\""
          }
        ]
      }
    ]
  }
}

الأسئلة الشائعة

س: هل يرسل Claude Code الشيفرة الخاصة بي إلى خوادم Anthropic؟

ج: يتواصل Claude Code مع Anthropic عبر API، ويُرسَل سياق المحادثة (بما في ذلك مقتطفات الشيفرة التي تشير إليها) ضمن طلبات API. ومع ذلك، لا تستخدم Anthropic البيانات المُرسلة عبر API لتدريب النماذج (وفقًا لشروط الخدمة الخاصة بـ Anthropic). إذا كنت تستخدم Claude Code عبر خدمة وسيطة مثل QCode، فيُرجى الرجوع إلى سياسة الخصوصية الخاصة بتلك الخدمة.

س: هل يمكن لـ Claude تجاوز قواعد الرفض في settings.json؟

ج: في الاستخدام العادي، لا. تُنفَّذ قواعد الرفض على مستوى النظام، ولا يمكن لـ Claude تجاوزها عبر هندسة الـ prompt أو وسائل أخرى. ومع ذلك، إذا اخترت يدويًا وضع bypassPermissions أو استخدمت المعامل --dangerously-skip-permissions، فلم تعد هذه القواعد تنطبق.

س: ما الفرق بين .claudeignore وقواعد الرفض؟

ج: يجعل .claudeignore Claude غير مدرك تمامًا لوجود الملفات (على غرار طريقة عمل .gitignore مع Git)، بينما ترفض قواعد الرفض الوصول عندما يحاول Claude الوصول إلى الملفات. استخدم .claudeignore إذا كنت لا تريد أن يعرف Claude بوجود ملفات معينة؛ واستخدم قواعد الرفض إذا كنت تريد فقط منعه من تعديلها.

س: في التعاون بين عدة أشخاص، ماذا لو كان لكل شخص settings.json مختلف؟

ج: يُثبَّت ملف .claude/settings.json على مستوى المشروع في Git، مما يضمن أن الفريق يشترك في خط أساس أمني موحّد. يمكن للأفراد إضافة إعدادات إضافية في ملفهم الشخصي ~/.claude/settings.json، لكن لا يمكنهم تجاوز قواعد الرفض على مستوى المشروع.

س: هل يكون استخدام Claude Code داخل حاوية Docker أكثر أمانًا؟

ج: نعم. يوفر Docker طبقة إضافية من العزل، لذا حتى إذا نفّذ Claude Code عمليات غير متوقعة، يبقى التأثير محصورًا داخل الحاوية. الممارسات الموصى بها في الحاويات: استخدام نقاط تثبيت للقراءة فقط لمجلدات الشيفرة المصدرية، وتقييد الوصول إلى الشبكة، والتشغيل بصفة مستخدم غير جذر.

أمن MCP والعزل الرملي

يتيح MCP (Model Context Protocol) لـ Claude Code الاتصال بأدوات ومصادر بيانات خارجية — قواعد البيانات وواجهات API وأنظمة الملفات وخدمات الجهات الخارجية وغيرها. يوسّع هذا قدراته كثيرًا، لكنه يقدّم أيضًا فئة جديدة من مخاطر الأمن: فكل خادم MCP تضيفه يجلب معه جزءًا من كود جهة خارجية وأذونات الأدوات التي يعلنها إلى نطاق الثقة لديك. لمعرفة كيفية إعداد MCP واستخدامه، راجع إعداد خادم MCP؛ يركز هذا القسم على الأمن.

المخاطر الرئيسية التي يقدّمها MCP

  • تسريب البيانات: يمكن لخادم MCP ضار أو مخترق أن يقرأ ما تسلّمه إليه (الكود والملفات وسياق المحادثة) ويرسله بهدوء إلى وجهة خارجية.
  • تسميم الأدوات: يُضمّن الخادم تعليمات خفية في وصف الأداة/بياناتها الوصفية لإغواء النموذج باتخاذ إجراءات غير مقصودة — وهو شكل من حقن الـ prompt يستهدف استدعاءات الأدوات بالذكاء الاصطناعي.
  • تسريب بيانات الاعتماد: إذا كان بإمكان خادم الوصول إلى متغيرات البيئة أو ملفات الأسرار، فقد يسرق مفاتيح API وtokens وغيرها من بيانات الاعتماد الحساسة.
  • قوة الأدوات المفرطة في الاتساع: يمكن لخادم يعلن أدوات مدمّرة مثل «الحذف» أو «الكتابة» أو «تنفيذ الأوامر» أن يتسبب في ضرر لا يمكن عكسه إذا خرج عن السيطرة.

تدابير التخفيف

  • ثبّت من مصادر موثوقة فقط: ثبّت خوادم MCP من مصادر رسمية أو مدققة فقط، وقيّم مدى موثوقيتها كما تفعل مع أي تبعية من جهة خارجية.
  • راجع نطاقات أدوات كل خادم: قبل الاتصال، افحص كل أداة يعلنها الخادم وما يمكن لكل منها فعله، وتعامل مع «القراءة» و«الكتابة» و«التنفيذ» بمستويات مختلفة من الحذر.
  • أبقِ بوابات الموافقة البشرية: يطلب Claude Code تأكيدك قبل استدعاء أي أداة. بالنسبة إلى العمليات المدمّرة والأدوات التي تلامس بيانات الاعتماد، لا توافق موافقة شاملة — أبقِ الموافقة لكل استخدام.
  • احجب الوصول إلى الأسرار عبر العزل الرملي: استخدم إعداد sandbox.credentials لمنع الأوامر المعزولة من قراءة متغيرات البيئة وملفات الأسرار، حتى لا تتمكن أداة مسمومة من الحصول على بيانات الاعتماد.
  • أقل قدر من الصلاحيات: امنح كل خادم MCP فقط الحد الأدنى من الأدوات ونطاق الوصول الذي يحتاجه لأداء مهمته — لا تفتح كل شيء من أجل الراحة.
  • التدقيق والتسجيل: سجّل استدعاءات الأدوات وراجع دوريًا أي الخوادم يجري استدعاؤها وما فعلته، حتى يظهر السلوك الشاذ مبكرًا.

تعامل مع كل خادم MCP كأنه مقاول خارجي يدخل ومعه صندوق أدواته — تحقق من هويته أولًا، ثم حدّد ما يمكنه لمسه، واحتفظ بحق تأكيد كل إجراء. بهذه الطريقة تستمتع بقدرات MCP الموسّعة مع الحفاظ على حدود الأمن لديك.

ابدأ مع QCode

مفتاح API واحد لـ Claude Code وCodex وغيرها — تُحسب حسب التوكن، وأسعار كل نموذج على qcode.cc/models

المؤسسات ←