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.