Sign in Gratis selamanya Get started

Infrastructure

Nol rahasia di konfigurasi.

Nol rahasia di log.

Setiap platform, setiap orkestrator, setiap runner CI. Proxy bekerja dengan apa pun yang melakukan panggilan HTTP. CLI bekerja dengan apa pun yang dapat menjalankan perintah shell. Jika sistem Anda lebih tua dari karier Anda, ia tetap bekerja.

Proxy adalah integrasi universal.

Jika beban kerja Anda melakukan panggilan HTTPS, proxy Clavitor menyuntikkan kredensial pada lapisan jaringan. Tanpa perubahan kode. Tanpa SDK. Tanpa rahasia di variabel lingkungan, file konfigurasi, atau log. Atur HTTPS_PROXY dan kode yang ada tetap bekerja tanpa perubahan — proxy merespons referensi clavitor:// di header permintaan sebelum permintaan meninggalkan mesin.

$ export HTTPS_PROXY=http://localhost:1983
$ curl -H "Authorization: Bearer clavitor://Stripe API/key" \
  https://api.stripe.com/v1/charges
# Agen tidak pernah melihat sk_live_... — hanya clavitor:// yang muncul di log

Container

Docker dan Kubernetes

Docker Compose

Jalankan proxy Clavitor di host dan arahkan container Anda ke sana. Kredensial disuntikkan secara transparan ke permintaan keluar — tanpa rahasia di variabel lingkungan, tanpa rahasia yang di-bake ke dalam gambar.

# Di host Docker
$ clavitor-proxy serve &
# docker-compose.yml — container merutekan melalui proxy mode host
services:
  app:
    environment:
      - HTTPS_PROXY=http://host.docker.internal:1983
    extra_hosts:
      - "host.docker.internal:host-gateway"

Atau gunakan render untuk menyelesaikan templat konfigurasi saat startup:

$ clavitor-cli render app.config.template.yml | docker compose -f - up

Kubernetes

Buat rahasia dari brankas tanpa menuliskan nilai secara hardcode dalam manifes:

$ 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)"

Untuk injeksi kredensial saat runtime, deploy proxy sebagai container sampingan dalam pod Anda. Container aplikasi mengatur HTTPS_PROXY ke sampingan. Kredensial diselesaikan per permintaan, tidak pernah disimpan di etcd.

IaC

Terraform, Ansible, Pulumi

Terraform

Selesaikan kredensial ke lingkungan provider sebelum terraform apply. Provider AWS membaca kredensialnya dari variabel lingkungan standar — Clavitor mengisikannya secara inline, file .tf tidak menyebutkan rahasia.

$ 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

Blok provider "aws" {} tetap kosong dalam kode Anda. Pola yang sama berfungsi untuk provider Terraform lain yang mendukung kredensial variabel env (yang merupakan sebagian besar dari mereka).

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

Token ditransfer melalui stdin di setiap contoh di bawah ini — menjaganya tetap keluar dari argv sehingga tidak muncul di /proc/<pid>/cmdline atau log build.

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

Kunci yang disimpan di brankas

$ clavitor-cli get "Deploy Key" --field private_key | ssh-add -
$ ssh deploy@production

Kunci pribadi ditransfer langsung ke ssh-add. Ia tidak pernah menyentuh disk, tidak pernah muncul di riwayat shell, dan dihapus dari agen ketika sesi berakhir.

Sistem lama

Jika itu melakukan panggilan HTTP, itu bekerja.

Proxy tidak peduli bahasa apa yang digunakan untuk membuat permintaan. COBOL, FORTRAN, Perl, Visual Basic, batch job berusia 30 tahun — jika proses tersebut melakukan permintaan HTTPS, proxy akan mencegatnya, menyelesaikan referensi clavitor://, dan menyuntikkan kredensial yang sebenarnya. Tidak ada perubahan kode yang diperlukan.

Untuk sistem yang tidak dapat melakukan panggilan HTTP, gunakan clavitor-cli render untuk menyelesaikan templat konfigurasi sebelum proses dimulai. Templat tersebut aman disimpan di mana saja. Output yang diselesaikan ditransfer ke stdin atau file sementara dengan izin terbatas.

# Selesaikan kredensial sebelum batch job dimulai
$ 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

Polanya selalu sama.

CLI untuk skrip dan pipeline. Proxy untuk beban kerja HTTP. Render untuk file konfigurasi. Setiap rahasia diselesaikan saat runtime, tidak pernah disimpan.