Claude Code'un Sırlarınızı Sızdırmasını Engelleyen .env Kurulumu (Tam Yapılandırma Dahil)

@zodchiii
İNGILIZCE2 ay önce · 30 Nis 2026
1.7M
1.3K
149
30
5.9K

TL;DR

settings.json reddetme kurallarını yapılandırarak, sahte test ortamları kullanarak ve hassas kimlik bilgisi sızıntılarını önlemek için commit öncesi kancaları (pre-commit hooks) uygulayarak Claude Code'u nasıl güvence altına alacağınızı öğrenin.

Claude Code, projenizi açar açmaz .env dosyalarınızı okur.

API anahtarlarınız, veritabanı şifreleriniz, Stripe token'larınız, .env dosyasındaki her şey belleğe yüklenir ve Anthropic'in sunucularına gönderilen konuşma günlüklerine dahil olabilir.

Erişimi gerçekten engelleyen tek şey, çoğu kişinin sahip olmadığı ve varlığından haberdar olmadığı settings.json dosyasındaki bir satırdır.

İşte tam güvenlik yapılandırması 👇

Detaylara girmeden önce, AI ve vibe coding hakkında günlük notlarımı Telegram kanalımda paylaşıyorum: **https://t.me/zodchixquant**🧠

darkzodchi on X — cover

CLAUDE.md kuralları neden sizi korumaz

Çoğu kişi CLAUDE.md dosyasına ".env dosyalarını asla okuma" ekler ve güvende olduklarını varsayar (değiller).

CLAUDE.md bir öneridir. Claude çoğu zaman buna uyar, ancak baskı altındayken (karmaşık görevler, uzun bağlam, belirsiz talimatlar) tavsiye niteliğindeki kuralları görmezden gelebilir ve görmezden gelir.

Nisan 2026'daki bir GitHub sorunu şunu doğruladı: CLAUDE.md açıkça yasaklasa bile Claude .env içeriğini okur ve konuşmaya yansıtır.

Tek güvenilir koruma, settings.json dosyasındaki bir reddetme kuralıdır. Reddetme kuralları, Claude dosyayı görmeden önce sistem düzeyinde uygulanır.

"Lütfen bunu okuma" ile "Bunu fiziksel olarak okuyamazsın" arasındaki fark budur.

darkzodchi - inline image

Sırlarınızın sızdığı 3 yol

Bu sadece Claude'un .env dosyasını doğrudan okumasıyla ilgili değil. Üç yol vardır:

1. Doğrudan dosya okuma. Claude projenizi tarar, .env dosyasını açar ve içerik konuşma bağlamının bir parçası haline gelir. Bu bariz olandır ve reddetme kurallarıyla engellenmesi en kolay yoldur.

2. Çalışma zamanı çıktısı yakalama. Claude testlerinizi çalıştırır veya uygulamanızı başlatır. Başarısız bir HTTP isteği, Authorization: Bearer sk-live-abc123... başlığının tamamını günlüğe kaydeder. Bir veritabanı zaman aşımı, şifreyi de içeren bağlantı dizesini döküm eder. Claude tüm komut çıktılarını yakalar. Claude hiç .env dosyasını açmamış olsa bile, sırlarınız artık konuşmanın içindedir.

3. Grep ve arama araçları. Claude, kod tabanınızda bir fonksiyon adı aramak için grep kullanır. Arama, kimlik bilgileri içeren bir yapılandırma dosyasına rastlar. Grep çıktısı, sırlarınızın göründüğü eşleşen satırları içerir.

Çoğu kişi yalnızca 1. yola karşı koruma sağlar. Asıl hasar 2. ve 3. yollarda meydana gelir.

Gerçekten işe yarayan reddetme kuralları

Bunları, her projede genel koruma için ~/.claude/settings.json dosyasına ekleyin:

json

json
1{
2 "permissions": {
3 "deny": [
4 "Read(**/.env*)",
5 "Read(**/.dev.vars*)",
6 "Read(**/*.pem)",
7 "Read(**/*.key)",
8 "Read(**/secrets/**)",
9 "Read(**/credentials/**)",
10 "Read(**/.aws/**)",
11 "Read(**/.ssh/**)",
12 "Read(**/config/database.yml)",
13 "Read(**/config/credentials.json)",
14 "Read(**/.npmrc)",
15 "Read(**/.pypirc)",
16 "Write(**/.env*)",
17 "Write(**/secrets/**)",
18 "Write(**/.ssh/**)"
19 ]
20 }
21}

Bu, Claude'un herhangi bir .env dosyasını, PEM anahtarlarını, SSH anahtarlarını, AWS yapılandırmalarını, kimlik bilgisi dosyalarını ve npm/PyPI token'larını okumasını veya yazmasını engeller. \\ joker karakteri, projenizdeki her alt dizin için geçerli olduğu anlamına gelir.

Çalışma zamanı sızıntılarını engelleme

Reddetme kuralları doğrudan dosya okumalarını durdurur ancak çalışma zamanı çıktısını durdurmaz. Bunun için, sahte değerler içeren teste özel .env dosyaları kullanın:

text
1# .env.test — okunması güvenli, sızması güvenli
2STRIPE_SECRET_KEY=sk_test_not_a_real_key
3DATABASE_URL=postgres://test:test@localhost:5432/testdb
4OPENAI_API_KEY=sk-test-dummy-key-for-mocking
5AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
6AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Test framework'ünüzü .env yerine .env.test dosyasına yönlendirin. Artık Claude testlerinizi çalıştırıp çıktıyı yakaladığında, görünen tek anahtarlar sahte olanlardır.

Her şeyi yakalayan pre-commit hook'u

Reddetme kuralları olsa bile hatalar olur. Deponuza herhangi bir commit ulaşmadan önce sırları tarayan bir git pre-commit hook'u ekleyin:

bash

bash
1#!/bin/bash
2# .git/hooks/pre-commit — sır içeren commit'leri engeller
3
4PATTERNS=(
5 'sk-ant-' # Anthropic API anahtarları
6 'sk-live-' # Stripe canlı anahtarları
7 'sk_live_' # Stripe canlı anahtarları (alternatif format)
8 'ghp_' # GitHub kişisel token'ları
9 'gho_' # GitHub OAuth token'ları
10 'AKIA' # AWS erişim anahtarları
11 'xox[bpors]-' # Slack token'ları
12 'SG\.' # SendGrid anahtarları
13 'eyJ' # JWT'ler
14 'BEGIN.*PRIVATE KEY' # Özel anahtar materyali
15)
16
17BLOCKED_FILES=('.env' 'credentials.json' 'id_rsa' '*.pem' '*.key')
18
19for pattern in "${PATTERNS[@]}"; do
20 if git diff --cached --diff-filter=ACM | grep -qE "$pattern"; then
21 echo "ENGELLENDİ: '$pattern' ile eşleşen potansiyel sır bulundu"
22 echo "Sırrı kaldırın ve tekrar deneyin."
23 exit 1
24 fi
25done
26
27for file in "${BLOCKED_FILES[@]}"; do
28 if git diff --cached --name-only | grep -q "$file"; then
29 echo "ENGELLENDİ: Hassas dosya commit'lenmeye çalışıldı: $file"
30 exit 1
31 fi
32done
33
34echo "Pre-commit güvenlik kontrolü başarılı."
35exit 0

Çalıştırılabilir yapın: chmod +x .git/hooks/pre-commit

Bu, Anthropic API anahtarlarını, Stripe anahtarlarını, GitHub token'larını, AWS anahtarlarını, Slack token'larını, SendGrid anahtarlarını, JWT'leri ve özel anahtar materyalini yakalar. Bunlardan herhangi biri aşamalı bir dosyada görünürse, commit engellenir.

Kapsayıcı izolasyonu (nükleer seçenek)

Maksimum güvenlik için, Claude Code'u .env dosyalarının gerçekten var olmadığı bir kapsayıcı içinde çalıştırın:

bash

bash
1# .env üzerine /dev/null bağlayın, böylece Claude onu göremez
2docker run -v /dev/null:/app/.env:ro your-dev-container

Claude'un bakış açısından .env boş bir dosyadır. Sırlarınız asla kapsayıcı dosya sistemine girmez. Bu çoğu proje için aşırıdır ancak üretim kimlik bilgileri içeren müşteri çalışmaları için gereklidir.

Tam güvenlik yapılandırması (kopyala-yapıştır için hazır)

Tüm güvenlik korumalarıyla birlikte eksiksiz ~/.claude/settings.json:

json

json
1{
2 "permissions": {
3 "allow": [
4 "Read",
5 "Glob",
6 "Grep",
7 "LS",
8 "Edit",
9 "MultiEdit",
10 "Write(src/**)",
11 "Write(tests/**)",
12 "Bash(npm run *)",
13 "Bash(npm test *)",
14 "Bash(npx tsc *)",
15 "Bash(git status)",
16 "Bash(git diff *)",
17 "Bash(git log *)",
18 "Bash(git add *)",
19 "Bash(git commit *)"
20 ],
21 "deny": [
22 "Read(**/.env*)",
23 "Read(**/.dev.vars*)",
24 "Read(**/*.pem)",
25 "Read(**/*.key)",
26 "Read(**/secrets/**)",
27 "Read(**/credentials/**)",
28 "Read(**/.aws/**)",
29 "Read(**/.ssh/**)",
30 "Read(**/config/database.yml)",
31 "Read(**/config/credentials.json)",
32 "Read(**/.npmrc)",
33 "Read(**/.pypirc)",
34 "Write(**/.env*)",
35 "Write(**/secrets/**)",
36 "Write(**/.ssh/**)",
37 "Write(.github/workflows/*)",
38 "Bash(rm -rf *)",
39 "Bash(sudo *)",
40 "Bash(git push *)",
41 "Bash(npm publish *)",
42 "Bash(curl * | sh)",
43 "Bash(wget *)",
44 "Bash(chmod *)"
45 ],
46 "defaultMode": "acceptEdits"
47 }
48}

Bu, önceki yazımdaki settings.json dosyası ve bu yazıdaki tüm güvenlik kurallarını içerir. Günlük iş akışı için izin kuralları, sırlar ve tehlikeli işlemler için reddetme kuralları. Tek dosya, tam koruma.

Kontrol listesi

Bir sonraki Claude Code oturumunuzdan önce:

  1. settings.json dosyasında .env dosyaları için reddetme kurallarınız var mı?
  1. Testleriniz sahte değerlerle .env.test kullanıyor mu?
  1. Sır kalıplarını tarayan bir pre-commit hook'unuz var mı?
  1. Üretim kimlik bilgileri bir kasada mı saklanıyor, düz metin dosyalarında değil mi?
  1. .env dosyanız .gitignore'da mı?
  1. Ekstra güvenlik için .env dosyaları proje dizininizin dışında mı?

6'sını da işaretlediyseniz, sırlarınız olabildiğince korunuyor demektir. 0'ını işaretlediyseniz, API anahtarlarınızın Anthropic'in sunucularındaki bir konuşma günlüğünde görünmesine yol açacak belirsiz bir Claude isteminden bir adım uzaktasınız.

AI, finans ve vibe coding hakkında günlük notlarımı Telegram kanalımda paylaşıyorum: **https://t.me/zodchixquant**

Okuduğunuz için teşekkürler🙏🏼

darkzodchi - inline image
Save to YouMind

Use YouMind to read viral articles deeply

Save the source, ask focused questions, summarize the argument, and turn a viral article into reusable notes in one AI workspace.

Explore YouMind

Çözülecek daha fazla kalıp

Son viral makaleler

Daha fazla viral makale keşfet