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.