Masuk Gratis selamanya Mulai

Infrastruktur

Nol rahasia dalam konfigurasi.
Nol rahasia dalam log.

Setiap platform, setiap orkestrator, setiap runner CI. Proksi bekerja dengan apa pun yang melakukan panggilan HTTP. CLI bekerja dengan apa pun yang dapat memanggil shell. Jika sistem Anda lebih tua dari karier Anda, sistem tersebut tetap berfungsi.

Proksi adalah integrasi universal.

Jika beban kerja Anda melakukan panggilan HTTPS, proksi Clavitor menginjeksikan kredensial pada lapisan jaringan. Tanpa perubahan kode. Tanpa SDK. Tanpa rahasia dalam variabel lingkungan, file konfigurasi, atau log. Atur HTTPS_PROXY dan kode Anda yang sudah ada berfungsi tanpa perubahan — proksi menyelesaikan 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
# The agent never sees sk_live_... — only clavitor:// appears in logs

Kontainer

Docker dan Kubernetes

Docker Compose

Jalankan proksi Clavitor pada host dan arahkan kontainer Anda ke sana. Kredensial diinjeksikan secara transparan ke dalam permintaan keluar — tanpa rahasia dalam variabel lingkungan, tanpa rahasia yang disematkan ke dalam image.

# 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"

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 mengodekan nilai secara permanen 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, terapkan proksi sebagai kontainer sidecar di pod Anda. Kontainer aplikasi menyetel HTTPS_PROXY ke sidecar. Kredensial diselesaikan per permintaan, tidak pernah disimpan di etcd.

IaC

Terraform, Ansible, Pulumi

Terraform

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

$ 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 apa pun yang mendukung kredensial env-var (yang merupakan sebagian besar provider).

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 dialirkan melalui stdin di setiap contoh di bawah — menjaganya agar tidak masuk ke 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 dialirkan langsung ke ssh-add. Kunci tersebut tidak pernah menyentuh disk, tidak pernah muncul dalam riwayat shell, dan dihapus dari agen saat sesi berakhir.

Sistem lama

Jika melakukan panggilan HTTP, sistem tersebut berfungsi.

Proksi tidak mempermasalahkan bahasa apa yang membuat permintaan. COBOL, FORTRAN, Perl, Visual Basic, pekerjaan batch berusia 30 tahun — jika proses tersebut membuat permintaan HTTPS, proksi mencegatnya, menyelesaikan referensi clavitor://, dan menginjeksikan kredensial yang sebenarnya. Tidak diperlukan perubahan kode.

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

# 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

Polanya selalu sama.

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