Kurulum
KeyZula komut satırı aracı macOS (Apple Silicon ve Intel) ve Linux (x64 ve arm64) için tek dosyalık bir programdır; Node.js gerekmez. En kolay yol Homebrew'dur:
brew install keyzula/tap/keyzula
keyzula --versionHomebrew kullanmayan Linux makinelerinde (ör. sunucular ve CI çalıştırıcıları) programı indirip /usr/local/bin içine açın:
# x64
curl -fsSL https://github.com/KeyZula/homebrew-tap/releases/download/v1.1.0/keyzula-1.1.0-linux-x64.tar.gz | sudo tar -xz -C /usr/local/bin keyzula
# arm64
curl -fsSL https://github.com/KeyZula/homebrew-tap/releases/download/v1.1.0/keyzula-1.1.0-linux-arm64.tar.gz | sudo tar -xz -C /usr/local/bin keyzulaGüncellemek için:
brew update && brew upgrade keyzulaArşivler ve SHA256SUMS dosyası KeyZula/homebrew-tap sürümlerinde yayımlanır.
Giriş ve temel komutlar
keyzula login e-posta adresinizi ve ana parolanızı sorar; iki adımlı doğrulama açıksa doğrulama kodunu da ister. Ana parola ekranda görünmez ve diske yazılmaz.
keyzula login
keyzula status
keyzula list github
keyzula get password GitHub
keyzula get username GitHub
keyzula get totp GitHubget komutu password, username veya totp alanını kayıt adıyla ya da kimliğiyle getirir; 2FA kodu bilgisayarınızda hesaplanır. list ve status betikler için --json çıktısı verir. SSH agent çalışıyor ve kilidi açıksa bu komutlar parola sormaz.
Varsayılan sunucu https://app.keyzula.com adresidir. Başka bir sunucu için --server bayrağını veya KEYZULA_SERVER ortam değişkenini kullanın:
keyzula login --server https://vault.example.comSSO ile veya parolasız (güvenilir cihaz) giriş yapan hesaplar komut satırında henüz desteklenmiyor.
SSH agent'ı başlatma
Yerleşik SSH agent, kişisel kasanızdaki ve erişebildiğiniz koleksiyonlardaki SSH anahtarı kayıtlarını ssh ve git'e sunar. Gizli anahtarlar yalnızca agent sürecinin belleğinde tutulur; diske yazılmaz ve agent kilitlenince silinir.
keyzula ssh-agent --daemon
keyzula ssh add-config--daemon agent'ı arka planda çalıştırır (günlük: ~/.config/keyzula/ssh-agent.log; günlükte yalnızca anahtar adları, parmak izleri ve zamanlar bulunur). Agent kasayı 5 dakikada bir yeniler; kasaya eklediğiniz anahtarlar kendiliğinden gelir.
- Desteklenen anahtarlar: Ed25519, RSA (rsa-sha2-256/512) ve ECDSA P-256/384/521; OpenSSH ve PEM/PKCS#8 biçimleri, parolalı anahtarlar dahil (kayıttaki anahtar parolası alanı kullanılır).
- Donanım anahtarları (
sk-*) ve DSA desteklenmez. - "Parolayı göremez" yetkisiyle paylaşılan anahtarlar agent'a eklenmez.
ssh-addile anahtar ekleme ve silme istekleri reddedilir; anahtarları kasada yönetin.
ssh yapılandırması
keyzula ssh add-config sisteminize uygun yapılandırma parçasını yazdırır. Tüm sunucularda KeyZula anahtarlarını kullanmak için ~/.ssh/config dosyanıza ekleyin:
# ~/.ssh/config
Host *
IdentityAgent "~/.config/keyzula/ssh-agent.sock"Yalnızca açık terminal oturumu için SSH_AUTH_SOCK değişkenini kullanabilirsiniz:
export SSH_AUTH_SOCK="$HOME/.config/keyzula/ssh-agent.sock"
ssh-add -L
ssh -T git@github.comSoket yalnızca sizin erişebileceğiniz izinlerle (0600) oluşturulur. XDG_CONFIG_HOME tanımlıysa yol ona göre değişir; doğru yolu her zaman keyzula ssh add-config gösterir.
İmza onayı ve otomatik kilit
keyzula ssh-agent --confirm
keyzula ssh-agent --daemon --lock-after 2h
keyzula lock
keyzula unlock--confirm: her imzadan önce agent'ın terminalinde onay ister (e/H). Onay için terminal gerektiğinden--daemonile birlikte kullanılamaz; agent'ı ayrı bir terminal sekmesinde ön planda çalıştırın.--lock-after: belirtilen süre hareketsiz kalınca agent'ı kilitler (varsayılan12h;0= hiç kilitleme). Süre30mveya2hgibi yazılır.keyzula lockanahtarları bellekten siler;keyzula unlockana parolanızı sorup agent'ı yeniden açar.
Git commit imzalama
Kasanızdaki bir SSH anahtarıyla git commit'lerini imzalayabilirsiniz. Agent çalışırken:
git config --global gpg.format ssh
git config --global user.signingkey "key::$(ssh-add -L | head -n1)"
git config --global commit.gpgsign truessh-add -L agent'taki açık anahtarları listeler; birden fazla anahtarınız varsa head -n1 yerine doğru satırı seçin. Aynı açık anahtarı GitHub veya GitLab hesabınıza imzalama anahtarı olarak ekleyin.
Gizli değerler: read, run ve inject
Betiklerinize ve yapılandırma dosyalarınıza parola yazmak yerine kasadaki değere işaret eden bir referans yazın:
kz://<collection>/<item>/<field>- Koleksiyon ve kayıt: ad (büyük/küçük harf duyarsız) veya kimlik.
~kişisel kasanızdır (yalnızca oturum açmış kullanıcılar için). - Alan:
password,username,totp(o anki kod),notes,url,private_key,public_key,passphrase,number,codeveya özel bir alanın etiketi. - Ad içindeki
/karakterini%2Folarak yazın; referansları kabukta her zaman tırnak içine alın.
keyzula read "kz://Production/Postgres/password"
keyzula read -n "kz://~/GitHub/totp"keyzula run ortamdaki ve --env-file ile verilen dosyalardaki kz:// değerlerini çözer ve komutu bu ortamla başlatır. Çözülen değerler komutun çıktısında varsayılan olarak gizlenir; etkileşimli programlar için --no-masking kullanın.
# .env
DB_PASSWORD=kz://Production/Postgres/password
STRIPE_KEY="kz://Production/Stripe/API key"
keyzula run --env-file .env -- ./deploy.shkeyzula inject şablondaki {{ kz://… }} yer tutucularını doldurur. Çıktı dosyası yalnızca sizin okuyabileceğiniz izinlerle (0600) yazılır; var olan bir dosyanın üzerine yalnızca --force ile yazılır.
# config.yml.tpl
database:
password: "{{ kz://Production/Postgres/password }}"
keyzula inject -i config.yml.tpl -o config.ymlTüm referanslar komut başlamadan önce çözülür; biri bile çözülemezse hiçbir şey çalıştırılmaz veya yazılmaz.
Servis hesapları: CI, sunucular ve AI ajanları
Servis hesabı, sunucuların, CI işlerinin ve yapay zekâ ajanlarının bir organizasyonun seçilen koleksiyonlarındaki gizli değerleri salt okunur almasını sağlayan makine kimliğidir. Sahip veya yönetici, web kasasında Organizasyon → Servis hesapları sayfasından oluşturur, koleksiyonları seçer ve bir erişim belirteci üretir. Belirteç yalnızca bir kez gösterilir.
export KEYZULA_SERVICE_TOKEN='kzsa_1_…'
keyzula read "kz://Production/Postgres/password"- Sıfır bilgi: belirteç ve anahtarlar yöneticinin tarayıcısında üretilir. Sunucu belirtecin kendisini hiç görmez; komut satırı aracı kayıtları yerelde çözer.
- Salt okunur: servis hesabı yalnızca kendisine verilen koleksiyonları okuyabilir; kayıt ekleyemez veya değiştiremez.
- İptal: her belirteç ayrı ayrı iptal edilebilir ve isteğe bağlı bir son kullanma tarihi alır. İptal edilen belirtecin sunucudaki anahtarları silinir.
- Denetim: her okuma zaman, IP ve koleksiyon bilgisiyle organizasyonun denetim kaydına yazılır.
KEYZULA_SERVICE_TOKEN tanımlı değilse aynı komutlar oturum açmış kullanıcı olarak çalışır.
GitHub Actions örneği
Belirteci deponuzun gizli değişkenlerine KEYZULA_SERVICE_TOKEN adıyla ekleyin. İş akışında Linux sürümünü indirin ve gizli değerleri adımın ortamında kz:// referansı olarak verin:
jobs:
deploy:
runs-on: ubuntu-latest
env:
KEYZULA_SERVICE_TOKEN: ${{ secrets.KEYZULA_SERVICE_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Install KeyZula CLI
run: curl -fsSL https://github.com/KeyZula/homebrew-tap/releases/download/v1.1.0/keyzula-1.1.0-linux-x64.tar.gz | sudo tar -xz -C /usr/local/bin keyzula
- name: Deploy
env:
DB_PASSWORD: kz://Production/Postgres/password
run: keyzula run -- ./scripts/deploy.sh
- name: Render config
run: keyzula inject -i deploy/app.yml.tpl -o deploy/app.ymlkeyzula run KEYZULA_SERVICE_TOKEN değişkenini alt sürecin ortamından çıkarır, sinyalleri iletir ve çıkış kodunu olduğu gibi döndürür. Her depo veya ortam için ayrı bir belirteç kullanın, son kullanma tarihi verin ve artık gerekmediğinde iptal edin.
Yapay zekâ ajanlarına da yalnızca ihtiyaç duydukları koleksiyonu gören ayrı bir servis hesabı verin. API anahtarları istem (prompt) metnine veya depoya değil, yalnızca sürecin ortamına ulaşır:
KEYZULA_SERVICE_TOKEN=kzsa_1_… \
OPENAI_API_KEY="kz://AI agents/OpenAI/API key" \
keyzula run -- python agent.pyGüvenlik notları
~/.config/keyzuladizinine (0700) yalnızca sunucu adresi, e-posta, oturum belirteci ve sunucunun verdiği şifreli anahtarlar yazılır (config.json, 0600).- Ana parola, türetilmiş anahtarlar, çözülmüş kasa ve gizli SSH anahtarları diske yazılmaz; yalnızca agent sürecinin belleğinde tutulur ve kilitlenince silinir.
- Servis belirteciyle çalışırken araç
~/.config/keyzuladizinine hiçbir şey yazmaz. Açıkça istediğinizinject -oçıktısı dışında diske gizli değer yazılmaz. getile yapılan okumalar ve agent'ın imza için kullandığı anahtarlar, diğer uygulamalarda olduğu gibi erişim kaydına işlenir (yalnızca kayıt kimliği, işlem ve zaman; ad veya içerik değil).- Belirteci depoya, Docker imajına veya istem metnine yazmayın; CI'ın gizli değişkenlerinde saklayın.
Mimarinin ayrıntıları için Güvenlik sayfasına bakın.