Oturum aç Sonsuza kadar ücretsiz Başlayın

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.