1. 5 dakikada başla
SealBox bir komut satırı aracı. Kurduktan sonra proje klasöründe birkaç komut çalıştırman yeterli.
Kur
$ pip install sealbox # ya da: pipx install sealbox $ sealbox -V # sürümü göster: sealbox 0.3.0
Projeni kontrol et
init hiçbir dosyayı değiştirmez. Projeye bakar ve sıradaki adımları sırayla söyler:
$ cd projem $ sealbox init sealbox 0.3.0 · proje: C:\projem ✓ Kasa: henüz yok · Ekip kurulmamış (tek kişi) → sealbox team init --github <ad> ⚠ 3 dosyada açık sır var → sealbox seal Sıradaki adımlar: 1) sealbox seal 2) sealbox recovery setup
Mühürle, yedekle, çalıştır
$ sealbox seal # sırları kasaya taşı $ sealbox recovery setup # kurtarma kodu (bir kez) $ sealbox exec -- python app.py # programı sırlarla çalıştır $ git add .sealbox $ git commit -m "kasa"
İpucu: Takıldığın her yerde sealbox status yaz. Sorunlu her satırın yanında çözüm komutu yazar. Bir komutun ayrıntısı için sealbox help seal. Yanlış yazarsan (sealbox sael) "Bunu mu demek istediniz: seal?" diye düzeltir.
2. Temel kavramlar
SealBox'ı anlamak için beş kavram yeter. Hepsini evden bir benzetmeyle anlatıyoruz.
Büyük resim: Evine temizlikçi çağırdığını düşün (ajan). İşini yapması için her odaya girmesi gerekiyor. Mücevherleri masada bırakmazsın, kasaya koyarsın. Masaya da "mücevher kasada" diye not bırakırsın. Temizlikçi notu görür ama mücevheri göremez. SealBox bunu kodun için yapıyor.
🔐 Kasa (vault)
.sealbox/project.vault. Bütün sırlar burada AES-256-GCM ile şifreli durur. Şifreli olduğu için repoya girebilir.
🗝 Kasa anahtarı (DEK)
Kasayı açan tek anahtar. Diskte durmaz. Windows Kimlik Bilgisi Yöneticisi'nde, macOS Anahtar Zinciri'nde ya da Linux Secret Service'te saklanır.
Benzetme: kasanın anahtarı. Cebinde, masada değil.🏷 Etiket (yer tutucu)
__SECURE_TCKN_103d…__ gibi rastgele bir ad. E-posta, TCKN ve IBAN gibi kişisel verilerin yerine yazılır.
🌱 Ortam değişkeni
Kodda parola yerine os.environ["DB_PASSWORD"] yazar. Değer, program çalışırken dışarıdan verilir.
✅ Onay penceresi
Bir program sırları istediğinde hangi değerlerin verileceğini gösteren pencere. Onu atlatan bir ayar yok.
Benzetme: kasayı her açışta sana sorulması.🧯 Kurtarma kodu
Anahtar kaybolursa kasayı açan yedek kod. İstersen 3 parçaya böl, herhangi 2'si yeter.
Benzetme: anneannedeki yedek anahtar.Ne nereye gider?
| Ne bulundu | Ne olur |
|---|---|
| Kodda parola, token, API anahtarı (tam bir metin) | Kasaya taşınır, kodda os.environ["X"] / process.env.X / System.getenv("X") olur |
| Aynı değerin yorumdaki tekrarı | Etiketle karalanır |
| E-posta, TCKN, telefon, IBAN, isim | Etiketle karalanır (gerekirse vault expose) |
.env dosyası | Gizli satırlar kasaya, .env silinir, .env.sealed kalır |
| JSON / YAML / TOML ayarı | Karalanır, hangi ortam değişkenini okuman gerektiği raporlanır |
| URL içindeki parça ya da desteklenmeyen dil | Dokunulmaz, [!] uyarısı verilir, elle taşıman gerekir |
3. İlk projeni mühürle
Önce sadece bak
--check hiçbir şeye dokunmaz. Açık sır varsa çıkış kodu 1 döner, böylece CI'da da kullanılabilir.
$ sealbox seal --check .env → .env.sealed: 1 değer kasaya taşındı (DB_PASSWORD) 3 dosya tarandı (0.0 sn). Diskte karalanmamış sır var. 'sealbox seal' çalıştırın.
Mühürle
$ sealbox seal # tüm proje $ sealbox seal src/config.py # yalnızca bir dosya
Proje kökünden çalıştır. src gibi bir alt klasörden çalıştırırsan ve üstte .env, .git ya da kasa varsa SealBox durur, çünkü üstteki .env açıkta kalırdı. O klasörü bilerek seçiyorsan -w . ver.
Dosyalarına ne olur?
Her dil, sırrı kendi standart yoluyla okur. Kodun mantığı değişmez:
# önce KEY = "sk_live_51N…" # sonra KEY = os.environ["KEY"]
// önce const key = "sk_live_51N…" // sonra const key = process.env.KEY
// önce String key = "sk_live_51N…"; // sonra String key = System.getenv("KEY");
Aynı dosyayı geri alıp tekrar mühürlemek kasada kopya oluşturmaz, çünkü aynı değer her zaman aynı kayda bağlanır.
Java notu: static final sabit artık derleme anında değil çalışırken dolar. Sabiti switch case ya da anotasyon içinde kullanan kod taşımadan sonra derlenmez. Sırlar için bu pek olmaz.
4. Programı kasayla çalıştır
Benzetme: exec, kapıdaki görevli gibi çalışır. Programın "parolaya ihtiyacım var" der. Görevli sana "şu 4 değeri vereyim mi?" diye sorar. Sen evet dersen değerler yalnızca o çalıştırma boyunca verilir, iş bitince geri alınır.
$ sealbox exec -- python app.py # Python $ sealbox exec -- npm start # Node.js $ sealbox exec -- java Main.java # Java $ sealbox exec -- mvn spring-boot:run # Maven / Gradle
--işaretinden sonraki her şey senin normal komutun.- Önce onay penceresi açılır. Onayı atlatan bir bayrak ya da ortam değişkeni bilerek yok.
- Programın çıktısında bilinen bir sır geçerse
[GİZLİ:..]olarak basılır.
Not: Çıktı bir borudan geçtiği için etkileşimli ya da renkli terminal programları biraz farklı davranabilir. Süzgeç ters çevrilmiş ya da parçalanmış yazdırmayı yakalamaz. Asıl koruma onay penceresidir.
Karalanmış veriyi program kullanıyorsa
E-posta ya da TCKN gibi veriler etiketle karalanır, çünkü çoğu zaman çalışma anında gerekmez. Program gerçekten kullanıyorsa onu ortam değişkenine çevir:
$ sealbox vault expose __SECURE_EMAIL_8f2c…__ $ sealbox vault expose __SECURE_EMAIL_8f2c…__ --as ADMIN_EMAIL
5. Kasadaki değerleri yönet
Değerler hiçbir zaman terminale kendiliğinden yazılmaz. Göstermek ve silmek onay ister.
$ sealbox vault list # adlar ve etiketler (değer yok) $ sealbox vault reveal DB_PASSWORD # onay penceresinde göster $ sealbox vault reveal __SECURE_TCKN_…__ # karalanmış veriye bak $ sealbox vault set DB_PASSWORD # değiştir ya da ekle $ sealbox vault remove --unused # kullanılmayanları sil
Geri almak kasadan silmez. Değer değiştiyse eskisi sahipsiz kalır, vault remove --unused temizler. Bir dosya etiketi ya da değişken adını hâlâ kullanıyorsa kayıt silinmez (zorlamak için --force).
6. Ekip arkadaşını ekle
Benzetme: Kasanın anahtarını kopyalayıp her arkadaşına kendi asma kilidiyle kilitli bir kutuda veriyorsun. Kutuları herkes görebilir, çünkü repoda duruyorlar. Ama her kutuyu yalnızca sahibinin anahtarı açar. O anahtar da GitHub'daki SSH anahtarı.
Ön hazırlık (herkes, bir kez)
Bilgisayarında şifreli bir SSH anahtarı olmalı ve açık kısmı GitHub hesabına eklenmiş olmalı. Şifresiz anahtar reddedilir, çünkü bilgisayardaki herhangi bir program (ajanlar dahil) onu okuyabilir.
$ ssh-keygen -t ed25519 # sorulunca şifre koy $ ssh-keygen -p -f ~/.ssh/id_ed25519 # var olan anahtara sonradan şifre ekle # ~/.ssh/id_ed25519.pub içeriğini GitHub → Settings → SSH keys'e ekle
Sen (sahip)
$ sealbox team init --github benim-adim # ekibi kur, sahip sensin $ sealbox team add arkadasim # github.com/arkadasim.keys $ sealbox team add ayse --owner # o da kişi ekleyip çıkarabilsin $ git add .sealbox $ git commit -m "ekibe arkadasim eklendi" $ git push
Arkadaşın
$ git pull $ sealbox exec -- python app.py # ilk açılışta SSH şifresi pencerede sorulur
İlk açılıştan sonra anahtar Windows deposunda önbelleğe alınır, bir daha sorulmaz.
Birini çıkarmak
$ sealbox team remove arkadasim # kasa anahtarı yenilenir $ sealbox team list # üyeler ve SSH parmak izleri
Unutma: Çıkarılan kişi git geçmişindeki eski kasayı eski anahtarla açabilir. team remove bu yüzden görmüş olabileceği değerleri listeler. O parolaları kendi servislerinden (veritabanı, API paneli) yenile.
.gitignore kontrolü: Kök .gitignore bütün .sealbox/ klasörünü dışlıyorsa kasa repoya girmez. team komutları ve status bu durumda uyarır.
7. Anahtarı kaybedersen
Benzetme: Ev anahtarını kaybetmek için her zaman bir sebep vardır: Windows sıfırlanır, bilgisayar değişir, profil bozulur. Kurtarma kodu, güvendiğin bir yerde duran yedek anahtardır. Kodu 3 parçaya bölersen biri annende, biri kasada, biri USB'de durabilir. Herhangi 2'si kapıyı açar.
Bugün, her şey yolundayken (bir kez)
$ sealbox recovery setup # kod pencerede gösterilir, bir yere yaz $ sealbox recovery shares # isteğe bağlı: 2-of-3 parçaya böl $ sealbox recovery export D:\proje.sapkit # isteğe bağlı: USB / bulut kiti
Kod ve parçalar terminale hiçbir zaman yazılmaz, yalnızca pencerede gösterilir. Kurtarma kopyaları ~/.sealbox/recovery/ altında durur, yani repoya girmez. Kod kullanıcı başına bir tanedir. Yeni projeler de sana kod sorulmadan bu kurtarmaya bağlanır.
Kötü gün geldiğinde
| Durum | Ne yapmalı |
|---|---|
| Windows sıfırlandı, proje klasörü duruyor | sealbox recovery restore ile kodu ya da 2 parçayı gir |
| Ekiptesin, bir sahip anahtarı yeniledi | Bir şey yapma. Yeni anahtar SSH ile kendiliğinden alınır |
| Yeni bilgisayar, kasa klasörü de yok | sealbox recovery restore --kit D:\proje.sapkit |
| Kod da yok, kit de yok, ekip de yok | sealbox vault reset: yeni boş kasa açılır, eskisi kenara kaldırılır. Sırları servislerden yeniden al |
Kilit açma sırası: Windows deposu → (ekip varsa) SSH anahtarı → hata mesajı ve kurtarma önerisi. Ne yapacağını bilmiyorsan sealbox status sana söyler.
8. VS Code ile çalışmak
Eklenti işi kendisi yapmaz. Düğmeleri sealbox komutuna bağlar. O yüzden önce komutun kurulu olması gerekir.
Kurulum
pip install sealbox(ya da projenin.venv'ine kur).- VS Code'da Eklentiler (Ctrl+Shift+X) → SealBox ara → Yükle. Ya da Marketplace sayfası. Cursor, Windsurf ya da VSCodium'da Open VSX'ten gelir.
- Elinde
.vsixdosyası varsa:code --install-extension sealbox-0.3.0.vsix
Eklenti önce proje klasöründeki ve üstündeki .venv içinde arar, sonra PATH'e bakar. Başka bir yerdeyse ayarlardan sealbox.executable değerine yolunu yaz.
Günlük akış
- Yaz. Bir dosyaya parola yazıp kaydettiğinde o yer sarı çizilir.
- Ampule tıkla. "Bu dosyadaki sırları kasaya taşı" de. Değer kasaya gider, kod
os.environ[...]olur. - Üzerine gel.
__SECURE_..__etiketi ya daos.environ["X"]üzerinde "Değeri göster" çıkar. Onay penceresinden sonra görünür. "Kopyala" dersen pano 30 saniye sonra temizlenir. - Çalıştır. Komut paletinden "SealBox: Programı kasayla çalıştır" de. Düz ▶ ile çalıştırıp
KeyErroralırsan eklenti bunu kendisi önerir. - Durum çubuğuna bak.
🔒 3 sır kasada · 👥 2 kişi. Kurtarma kodu yoksa⚠ yedeksizyazar. Tıklayınca menü açılır.
Komut paleti (Ctrl+Shift+P → "SealBox")
| Komut | Karşılığı |
|---|---|
| SealBox: Menü | Tüm işlemler tek listede |
| SealBox: Projeyi tara (açık sır var mı?) | seal --check |
| SealBox: Bu dosyadaki sırları kasaya taşı | seal <dosya> |
| SealBox: Projedeki tüm sırları kasaya taşı | seal |
| SealBox: Programı kasayla çalıştır | exec -- … |
| SealBox: Kasadaki bir değeri göster | vault reveal |
| SealBox: Karalanmış veriyi programa çalışırken ver | vault expose |
| SealBox: Kullanılmayan kayıtları kasadan sil | vault remove --unused |
| SealBox: Ekibe kişi ekle (GitHub kullanıcısı) | team add |
| SealBox: Kurtarma kodu oluştur | recovery setup |
| SealBox: Kasayı kurtarma koduyla geri aç | recovery restore |
Güvenlik: Kurtarma kodu, parçalar ve SSH şifresi eklentiden geçmez. Hepsi Python'un açtığı ayrı pencerelerde gösterilir ya da sorulur. Eklenti yalnızca seal --check --json çıktısını okur. Bu çıktıda satır, sütun ve kategori vardır, değer yoktur.
9. CI'da açık sır kontrolü
seal --check açık sır bulursa çıkış kodu 1 döner. Bunu pull request'lerde bekçi olarak kullan:
name: sealbox
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install sealbox
- run: sealbox seal --check
Bu adım kasayı açmaz, anahtar gerektirmez. Yalnızca diskte karalanmamış sır olup olmadığına bakar. Makinenin okuyabileceği rapor için --json ekle.
10. Sık sorulanlar
SealBox bir proxy mi?
Hayır. Ajanlar dosyaları doğrudan diskten okur, aradaki bir proxy bunu göremez. SealBox sırları dosyalardan kalıcı olarak çıkarır.
Kasayı repoya koymak güvenli mi?
Evet, bunun için tasarlandı. project.vault AES-256-GCM ile şifreli. Anahtarı repoda değil. .sealbox/.gitignore, yedekleri ve kilit dosyalarını dışarıda bırakır.
Daha önce commit ettiğim sırlar ne olacak?
Git geçmişinde kalırlar; SealBox geçmişi silmez. sealbox history, kasadaki hangi değerlerin eski commit'lerde geçtiğini ve push'lanıp push'lanmadığını söyler. O değerleri servislerinden değiştir, bir daha olmaması için sealbox hook install çalıştır.
Her sırrı bulur mu?
Hayır. Regex; parçalanmış, kodlanmış (\u0040, hex, ROT13) ya da düz yazı içindeki sırları kaçırabilir. Raporu incele, gerekirse custom_rules ekle. İsimler için person_names listesini kullan.
İngilizce kullanabilir miyim?
sealbox --lang en … ya da SEALBOX_LANG=en. Varsayılan dil bilgisayarın dilidir. Eklenti de VS Code'un dilini izler.
Eski adla (secure-ai-proxy) kurmuştum.
Hiçbir şey yapmana gerek yok. Eski .secure_proxy/ klasörleri ve secure_proxy.toml okunur. Kimlik deposundaki eski kayıt ilk açılışta yeni ada taşınır.