Tips & Tricks

Claude Code सुरक्षा सर्वोत्तम प्रथाएं: API कुंजी, अनुमतियां और प्रोडक्शन सुरक्षा

Claude Code को सुरक्षित रूप से उपयोग करने के लिए व्यावहारिक सुरक्षा मार्गदर्शिका। API कुंजी प्रबंधन से लेकर अनुमति सेटिंग्स, Hooks-आधारित स्वचालन और प्रोडक्शन परिवेश सुरक्षा तक — कार्यशील कोड उदाहरणों के साथ।

Claude Code में शक्तिशाली फ़ाइल हेरफेर और कमांड निष्पादन क्षमताएं हैं — लेकिन गलत कॉन्फ़िगरेशन से अपरिवर्तनीय दुर्घटनाएं हो सकती हैं.env फ़ाइल को commit करना, प्रोडक्शन डेटाबेस को गलती से डिलीट करना, API कुंजी को logs में प्रिंट करना — ये सभी वास्तविक घटनाएं हैं जो Claude Code को उचित सुरक्षा के बिना उपयोग करने के कारण हुईं।

यह लेख Claude Code के लिए सुरक्षा सर्वोत्तम प्रथाओं की कार्यान्वयन-स्तर की व्याख्या प्रदान करता है। सिद्धांत के बजाय, ध्यान उपयोग के लिए तैयार कॉन्फ़िगरेशन और निवारक कोड पर है जिसे आप तुरंत कॉपी और लागू कर सकते हैं।

Claude Code को सुरक्षा उपायों की आवश्यकता क्यों है

एक सामान्य टेक्स्ट एडिटर के विपरीत, Claude Code में निम्नलिखित क्षमताएं हैं:

  • किसी भी फ़ाइल को पढ़ना, लिखना और हटाना (Read / Write / Edit / Bash(rm))
  • Shell कमांड निष्पादित करना (Bash)
  • नेटवर्क एक्सेस (WebFetch / API कॉल)
  • बाहरी सेवाओं पर पोस्ट करना (GitHub, Slack, आदि)

ये सभी उपयोगकर्ता की मंजूरी से निष्पादित हो सकते हैं। समस्या यह है कि हर prompt को यांत्रिक रूप से मंजूर करने से अनपेक्षित संचालन छूट जाते हैं। सुरक्षा उपायों का अर्थ है संरचनात्मक रूप से त्रुटि की गुंजाइश को समाप्त करना

उपाय 1: API कुंजी प्रबंधन — .env + .gitignore आधार के रूप में

क्या नहीं करना चाहिए

// ❌ सोर्स कोड में सीधे लिखा
const client = new Anthropic({ apiKey: "sk-ant-api03-..." });

// ❌ CLAUDE.md या कॉन्फ़िग फ़ाइलों में लिखा
// ANTHROPIC_API_KEY=sk-ant-api03-...

// ❌ claude -p prompt में शामिल
// QIITA_TOKEN=abc123 का उपयोग करके पोस्ट करें

सही दृष्टिकोण

# .env (git से बाहर, केवल स्थानीय मशीन पर संग्रहीत)
ANTHROPIC_API_KEY=sk-ant-api03-...
QIITA_TOKEN=06b4441b...
SLACK_BOT_TOKEN=xoxb-...
DATABASE_URL=postgresql://...
# हमेशा .gitignore में जोड़ें
.env
.env.*
.env.local
!.env.example   # ← उदाहरण फ़ाइल commit की जा सकती है
*.pem
*.key
credentials.json
*-service-account.json
# .env.example (commit करना सुरक्षित, मान खाली छोड़ें)
ANTHROPIC_API_KEY=
QIITA_TOKEN=
SLACK_BOT_TOKEN=
DATABASE_URL=

कोड में वेरिएबल पढ़ना

// ✅ Environment variables से पढ़ें
import { config } from "dotenv";
config();

const token = process.env.QIITA_TOKEN;
if (!token) throw new Error("QIITA_TOKEN सेट नहीं है। कृपया अपनी .env फ़ाइल जांचें।");

CLAUDE.md में निषेध दस्तावेज़ करें

## सुरक्षा निषेध
- prompts में API कुंजियां या tokens कभी न शामिल करें
- .env फ़ाइलों की सामग्री कभी न पढ़ें और आउटपुट न करें
- logs या comments में environment variable मान कभी न लिखें
- process.env की सामग्री को कभी console.log न करें

उपाय 2: Commit से पहले Secret स्कैनिंग

.env को .gitignore में रखने के बाद भी, अन्य फ़ाइलों में गलती से प्रविष्टियां या copy-paste त्रुटियां हो सकती हैं। एक स्वचालित pre-commit स्कैन जोड़ें।

Hooks के साथ Pre-Commit जांच

.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(git commit*)",
        "hooks": [
          {
            "type": "command",
            "command": "node scripts/secret-scan.mjs"
          }
        ]
      }
    ]
  }
}

scripts/secret-scan.mjs:

import { execSync } from "child_process";

// Staged परिवर्तन प्राप्त करें
const diff = execSync("git diff --cached").toString();

const PATTERNS = [
  { name: "Anthropic API कुंजी", re: /sk-ant-api\d+-[A-Za-z0-9_-]{80,}/ },
  { name: "OpenAI API कुंजी", re: /sk-[A-Za-z0-9]{48}/ },
  { name: "AWS Access Key", re: /AKIA[0-9A-Z]{16}/ },
  { name: "Slack Token", re: /xox[baprs]-[0-9A-Za-z-]{10,}/ },
  { name: "Generic Secret", re: /[Ss]ecret[_-]?[Kk]ey\s*[:=]\s*['"][^'"]{10,}['"]/ },
];

const found = PATTERNS.filter(({ re }) => re.test(diff));

if (found.length > 0) {
  console.error("🚨 Secret मिला! Commit रोका जा रहा है:");
  found.forEach(({ name }) => console.error(`  - ${name}`));
  console.error("\nसमाधान: फ़ाइल को unstage करने के लिए `git reset HEAD <file>` चलाएं");
  process.exit(1);  // Exit code 1 → Hook कमांड को ब्लॉक करता है
}

console.log("✓ Secret स्कैन: कोई समस्या नहीं मिली");
process.exit(0);

इसका मतलब है कि जैसे ही Claude Code git commit चलाने की कोशिश करता है, स्वचालित स्कैन शुरू होता है और किसी भी रिसाव का पता चलने पर उसे ब्लॉक कर दिया जाता है।

उपाय 3: Permission Mode कॉन्फ़िगरेशन

Claude Code की अनुमति/अस्वीकार सेटिंग्स को फ़ाइल स्तर पर विस्तृत रूप से नियंत्रित किया जा सकता है।

.claude/settings.json में Permission सेटिंग्स

{
  "permissions": {
    "allow": [
      "Read(**)",
      "Glob(**)",
      "Grep(**)"
    ],
    "deny": [
      "Bash(rm -rf*)",
      "Bash(git push --force*)",
      "Bash(git reset --hard*)",
      "Bash(DROP TABLE*)",
      "Bash(truncate*)",
      "Bash(curl * | bash)",
      "Bash(wget * | sh)"
    ],
    "ask": [
      "Write(**)",
      "Edit(**)",
      "Bash(git commit*)",
      "Bash(git push*)",
      "Bash(npm publish*)",
      "Bash(wrangler pages deploy*)"
    ]
  }
}
सेटिंगअर्थ
allowबिना पुष्टि के निष्पादित करें
denyकभी निष्पादित न करें (पूरी तरह ब्लॉक)
askहर बार अनुमोदन आवश्यक

मुख्य सिद्धांत: विनाशकारी कमांड deny में, लेखन संचालन ask में, पढ़ने के संचालन allow में।

Production-विशिष्ट कॉन्फ़िगरेशन फ़ाइल

Production परिवेशों के लिए, केवल-पढ़ने तक सीमित करना सबसे सुरक्षित दृष्टिकोण है।

// .claude/settings.production.json
{
  "permissions": {
    "allow": ["Read(**)", "Glob(**)", "Grep(**)", "Bash(git log*)", "Bash(git diff*)"],
    "deny": ["Write(**)", "Edit(**)", "Bash(git push*)", "Bash(rm*)", "Bash(*deploy*)"],
    "ask": []
  }
}
# Production में काम करते समय स्पष्ट रूप से निर्दिष्ट करें
CLAUDE_SETTINGS=.claude/settings.production.json claude

उपाय 4: Production परिवेश सुरक्षा

कनेक्शन लक्ष्यों को स्पष्ट रूप से अलग करें

## CLAUDE.md — Production परिवेश नियम

## परिवेश पहचान
- यदि DATABASE_URL में 'prod' या 'production' है, तो यह **production परिवेश** है
- Production में कभी निष्पादित न करें:
  - DROP / TRUNCATE / DELETE (बिना WHERE clause के)
  - Migrations (पूर्व पुष्टि आवश्यक)
  - बल्क फ़ाइल हटाना

## पुष्टि प्रवाह
सभी Production परिवर्तनों के लिए:
1. पहले Staging परिवेश में परीक्षण करें
2. उपयोगकर्ता की पुष्टि प्राप्त करें
3. निष्पादन के बाद परिणाम रिपोर्ट करें

Environment Variables से कनेक्शन नियंत्रित करें

// scripts/db-query.mjs
const env = process.env.NODE_ENV ?? "development";
const dbUrl = process.env.DATABASE_URL;

if (env === "production" && process.argv.includes("--write")) {
  console.error("❌ Production में लिखने के लिए --force-production flag आवश्यक है");
  process.exit(1);
}

उपाय 5: File Operation Safety Guards

हटाने से पहले Backup स्वचालित करें

// .claude/settings.json में Hooks
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(rm *)",
        "hooks": [
          {
            "type": "command",
            "command": "echo '⚠️  एक डिलीट कमांड चलने वाला है। रद्द करने के लिए Ctrl+C दबाएं।' && sleep 3"
          }
        ]
      }
    ]
  }
}

महत्वपूर्ण फ़ाइलों को गलती से संपादन से बचाएं

## CLAUDE.md — फ़ाइलें जो संशोधित नहीं की जानी चाहिए

निम्नलिखित फ़ाइलें **कभी संपादित नहीं** की जानी चाहिए:
- .env (environment variables और secret keys शामिल हैं)
- wrangler.toml (Cloudflare production कॉन्फ़िगरेशन)
- scripts/deploy.sh (deployment script)
- .github/workflows/*.yml (CI/CD कॉन्फ़िगरेशन)

यदि परिवर्तन आवश्यक हैं, तो पहले उपयोगकर्ता से पुष्टि करें।

5 सामान्य गलतियां

1. बाद में .gitignore जोड़ना बहुत देर हो जाती है पहले से commit की गई .env फ़ाइल git history में रहती है, भले ही बाद में .gitignore में जोड़ दी जाए।

# History से पूर्ण हटाना (सावधानी: force push आवश्यक)
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch .env" \
  --prune-empty --tag-name-filter cat -- --all

# या BFG Repo Cleaner का उपयोग करें

यदि फ़ाइल पहले से GitHub पर push हो चुकी है, तो history को साफ करने से पहले हमेशा अपनी API कुंजियां rotate करें

2. Repository में Service Account JSON फ़ाइलें संग्रहीत करना Google Cloud या AWS की service account keys अक्सर .json फ़ाइलों के रूप में वितरित की जाती हैं, लेकिन उन्हें repository में संग्रहीत करना खतरनाक है। उन्हें environment variables में बदलें या Secret Manager (AWS Secrets Manager / GCP Secret Manager) पर migrate करें।

3. Bash tool के साथ interactive commands चलाना claude -p के साथ headless निष्पादन के दौरान, sudo या vim जैसे interactive input की आवश्यकता वाले commands प्रक्रिया को hang कर देते हैं। केवल non-interactive commands का उपयोग करें।

4. Error messages में credentials शामिल करना

// ❌ खतरनाक: API कुंजी logs में दिखती है
throw new Error(`Authentication विफल: token=${process.env.TOKEN}`);

// ✅ सुरक्षित: मान उजागर न करें
throw new Error(`Authentication विफल: कृपया TOKEN environment variable जांचें`);

5. सभी Projects में एक ही Permission सेटिंग्स का पुनः उपयोग व्यक्तिगत और कार्य Projects के लिए एक ही settings.json का उपयोग करने से व्यक्तिगत Project की ढीली सेटिंग्स कार्य Project की सख्त आवश्यकताओं को override कर सकती हैं। प्रत्येक Project के लिए .claude/settings.json अलग से प्रबंधित करें

सुरक्षा चेकलिस्ट

Claude Code Project सेट अप करने के लिए एक चेकलिस्ट:

### बुनियादी सेटअप
- [ ] .env बनाया और .gitignore में जोड़ा
- [ ] .env.example बनाया और Team के साथ साझा किया
- [ ] git log के माध्यम से सत्यापित किया कि मौजूदा commits में कोई secret नहीं है

### Permission सेटिंग्स
- [ ] .claude/settings.json में deny list कॉन्फ़िगर किया
- [ ] विनाशकारी commands (rm -rf, DROP TABLE, आदि) को deny में जोड़ा
- [ ] Production deploy commands को ask पर सेट किया

### Automation
- [ ] Pre-commit secret scan Hook कॉन्फ़िगर किया
- [ ] CLAUDE.md में सुरक्षा निषेध दस्तावेज़ीकृत किए

### संचालन
- [ ] API कुंजी rotation शेड्यूल स्थापित किया (अनुशंसित: हर 90 दिन)
- [ ] Production के लिए समर्पित settings.production.json का उपयोग
- [ ] Incident response प्रवाह दस्तावेज़ीकृत किया

सारांश

Claude Code सुरक्षा “प्रतिबंध लगाने” के बारे में नहीं है — यह एक ऐसी संरचना बनाने के बारे में है जहां दुर्घटनाएं संरचनात्मक रूप से नहीं हो सकतीं।

खतराप्रतिउपाय
API कुंजी रिसाव.env + .gitignore + Secret scan Hook
अनपेक्षित हटानाDeny list + Pre-deletion Hook
Production गलतियांProduction-विशिष्ट सेटिंग्स + CLAUDE.md निषेध
Commit contaminationPre-commit स्कैन के लिए PreToolUse Hook

एक बार कॉन्फ़िगर होने के बाद, ये सेटिंग्स व्यावहारिक रूप से maintenance-free हैं। आज 30 मिनट खर्च करने से भविष्य में एक बड़ी घटना को रोका जा सकता है।

संबंधित लेख

संदर्भ

#claude-code #security #api-key #permissions #devops #best-practices

अपने Claude Code वर्कफ़्लो को अगले स्तर पर ले जाएँ

Claude Code में तुरंत कॉपी-पेस्ट करने योग्य 50 आज़माए हुए प्रॉम्प्ट टेम्पलेट।

मुफ़्त

मुफ़्त PDF: 5 मिनट में Claude Code चीटशीट

बस अपना ईमेल दर्ज करें और हम तुरंत A4 एक-पृष्ठ चीटशीट PDF भेज देंगे।

हम आपकी व्यक्तिगत जानकारी की सुरक्षा करते हैं और स्पैम नहीं भेजते।

Masa

लेखक के बारे में

Masa

Claude Code का गहराई से उपयोग करने वाले इंजीनियर। claudecode-lab.com चलाते हैं, जो 10 भाषाओं में 2,000 से अधिक पेजों वाला टेक मीडिया है।

संबंधित लेख

Claude Code के 7 सुरक्षा विफलता मामले | वास्तविक घटनाएं और बचाव
Tips & Tricks

Claude Code के 7 सुरक्षा विफलता मामले | वास्तविक घटनाएं और बचाव

Claude Code के साथ हुई सात वास्तविक सुरक्षा घटनाएं: .env लीक, प्रोडक्शन DB डिलीट, बिलिंग विस्फोट और अधिक — कारण विश्लेषण और रोकथाम कोड के साथ।

Claude Code परमिशन की सम्पूर्ण गाइड | settings.json, Hooks और Allowlist की विस्तृत व्याख्या
Tips & Tricks

Claude Code परमिशन की सम्पूर्ण गाइड | settings.json, Hooks और Allowlist की विस्तृत व्याख्या

Claude Code की परमिशन सेटिंग्स की पूरी जानकारी। allow/deny/ask का सही उपयोग, Hooks से ऑटोमेशन, एनवायरनमेंट के अनुसार settings.json और व्यावहारिक पैटर्न — काम करने वाले कोड के साथ।

हार्नेस इंजीनियरिंग की संपूर्ण गाइड | Claude Code से सीखें AI एजेंट बनाना
Tips & Tricks

हार्नेस इंजीनियरिंग की संपूर्ण गाइड | Claude Code से सीखें AI एजेंट बनाना

सिर्फ़ प्रॉम्प्ट से LLM नहीं संभलता। टूल, कॉन्टेक्स्ट और कंट्रोल लूप को जोड़ने वाले 'हार्नेस' को चलते कोड और Claude Code की वास्तुकला के सहारे समझें।