Altyapı
Yapılandırmada gizli bilgi yok.
Günlüklerde gizli bilgi yok.
Her platform, her orkestratör, her CI çalıştırıcısı. Proxy, HTTP çağrıları yapan her şeyle çalışır. CLI, kabuk komutu çalıştırabilen her şeyle çalışır. Sistemin kariyerinizden eskiyse, yine de çalışır.
Proxy evrensel entegrasyondur.
İş yükünüz HTTPS çağrıları yapıyorsa, Clavitor proxy kimlik bilgilerini ağ katmanına enjekte eder. Kod değişikliği yok. SDK yok. Ortam değişkenlerinde, yapılandırma dosyalarında veya günlüklerde gizli bilgi yok. HTTPS_PROXY ayarını yapın ve mevcut kodunuz değişmeden çalışır — proxy, istek makineden ayrılmadan önce istek üstbilgilerindeki clavitor:// başvurularını çözer.
$ export HTTPS_PROXY=http://localhost:1983 $ curl -H "Authorization: Bearer clavitor://Stripe API/key" \ https://api.stripe.com/v1/charges # The agent never sees sk_live_... — only clavitor:// appears in logs
Konteynerler
Docker ve Kubernetes
Docker Compose
Clavitor proxy'sini ana makinede çalıştırın ve konteynerlerinizi ona yönlendirin. Kimlik bilgileri giden isteklere şeffaf bir şekilde enjekte edilir — ortam değişkenlerinde gizli bilgi yok, imajlara gizli bilgi gömülü değil.
# On the Docker host $ clavitor-proxy serve &
# docker-compose.yml — containers route through the host-mode proxy
services:
app:
environment:
- HTTPS_PROXY=http://host.docker.internal:1983
extra_hosts:
- "host.docker.internal:host-gateway"Veya başlangıçta bir yapılandırma şablonunu çözmek için render kullanın:
$ clavitor-cli render app.config.template.yml | docker compose -f - up
Kubernetes
Manifestlerde değerleri sabit kodlamadan kasadan gizli bilgiler oluşturun:
$ kubectl create secret generic app-secrets \ --from-literal=db-pass="$(clavitor-cli get 'Production DB' --field password)" \ --from-literal=api-key="$(clavitor-cli get 'Stripe API' --field key)"
Çalışma zamanı kimlik bilgisi enjeksiyonu için, proxy'yi pod'unuzda bir yan konteyner olarak dağıtın. Uygulama konteynerleri HTTPS_PROXY'yi yan konteynere ayarlar. Kimlik bilgileri istek başına çözülür, asla etcd'de saklanmaz.
IaC
Terraform, Ansible, Pulumi
Terraform
terraform apply öncesinde kimlik bilgilerini sağlayıcı ortamına çözün. AWS sağlayıcısı kimlik bilgilerini standart ortam değişkenlerinden okur — Clavitor bunları satır içi doldurur, .tf dosyası gizli bilgi belirtmez.
$ export AWS_ACCESS_KEY_ID=$(clavitor-cli get "AWS Root" --field access_key_id) $ export AWS_SECRET_ACCESS_KEY=$(clavitor-cli get "AWS Root" --field secret_key) $ terraform apply
provider "aws" {} bloğu kodunuzda boş kalır. Aynı desen, ortam değişkeni kimlik bilgilerini destekleyen herhangi bir Terraform sağlayıcısı için de geçerlidir (ki çoğu öyledir).
Ansible
- name: Get database password
command: clavitor-cli get "Production DB" --field password
register: db_pass
no_log: true
- name: Configure app
template:
src: app.conf.j2
vars:
db_password: "{{ db_pass.stdout }}"Pulumi
import { execSync } from 'child_process';
const dbPass = execSync('clavitor-cli get "Production DB" --field password').toString().trim();
new aws.rds.Instance("db", { masterPassword: new pulumi.secret(dbPass) });CI/CD
GitHub Actions, GitLab CI, Jenkins
Aşağıdaki örneklerin tümünde jeton stdin'e aktarılır — argv'ye girmesini önleyerek /proc/<pid>/cmdline veya derleme günlüklerinde görünmesini engeller.
GitHub Actions
- name: Deploy
env:
CLAVITOR_TOKEN: ${{ secrets.CLAVITOR_TOKEN }}
run: |
echo "$CLAVITOR_TOKEN" | clavitor-cli init
kubectl create secret generic app-secrets \
--from-literal=api-key="$(clavitor-cli get 'Deploy Token' --field key)" \
--dry-run=client -o yaml | kubectl apply -f -GitLab CI
deploy:
script:
- echo "$CLAVITOR_TOKEN" | clavitor-cli init
- clavitor-cli get "Deploy Key" --field private_key | ssh-add -
- ssh deploy@production "systemctl restart app"Jenkins
pipeline {
stages {
stage('Deploy') {
steps {
sh 'echo "$CLAVITOR_TOKEN" | clavitor-cli init'
sh 'clavitor-cli get "Deploy Key" --field private_key | ssh-add -'
sh 'ssh deploy@production "systemctl restart app"'
}
}
}
}SSH
Kasada saklanan anahtarlar
$ clavitor-cli get "Deploy Key" --field private_key | ssh-add - $ ssh deploy@production
Özel anahtar doğrudan ssh-add'e aktarılır. Asla diske dokunmaz, kabuk geçmişinde görünmez ve oturum sona erdiğinde ajandan temizlenir.
Eski sistemler
HTTP çağrısı yapıyorsa çalışır.
Proxy, isteği hangi dilin yaptığını umursamaz. COBOL, FORTRAN, Perl, Visual Basic, 30 yıllık bir toplu iş — işlem bir HTTPS isteği yapıyorsa, proxy onu engeller, clavitor:// başvurusunu çözer ve gerçek kimlik bilgisini enjekte eder. Kod değişikliği gerekmez.
HTTP çağrısı yapamayan sistemler için, işlem başlamadan önce bir yapılandırma şablonunu çözmek üzere clavitor-cli render kullanın. Şablon herhangi bir yere güvenle saklanabilir. Çözülen çıktı stdin'e veya kısıtlı izinlere sahip geçici bir dosyaya gider.
# Resolve credentials before the batch job starts $ clavitor-cli render db-connect.template.cfg > /tmp/db-connect.cfg $ chmod 600 /tmp/db-connect.cfg $ /opt/legacy/batch-job --config /tmp/db-connect.cfg $ rm /tmp/db-connect.cfg
Desen her zaman aynıdır.
Komut dosyaları ve işlem hatları için CLI. HTTP iş yükleri için Proxy. Yapılandırma dosyaları için Render. Her gizli bilgi çalışma zamanında çözülür, asla saklanmaz.