Infrastruktur
Keine Geheimnisse in Konfigurationen. Keine Geheimnisse in Logs.
Jede Plattform, jeder Orchestrator, jeder CI-Runner. Der Proxy funktioniert mit allem, was HTTP-Aufrufe tätigt. Die CLI funktioniert mit allem, was Shell-Befehle ausführen kann. Wenn Ihr System älter ist als Ihre Karriere, funktioniert es trotzdem.
Der Proxy ist die universelle Integration.
Wenn Ihre Workload HTTPS-Aufrufe tätigt, injiziert der Clavitor-Proxy Anmeldeinformationen auf Netzwerkebene. Keine Codeänderungen. Keine SDKs. Keine Geheimnisse in Umgebungsvariablen, Konfigurationsdateien oder Logs. Setzen Sie HTTPS_PROXY, und Ihr bestehender Code funktioniert unverändert – der Proxy löst clavitor://-Referenzen in Anfrageheadern auf, bevor die Anfrage die Maschine verlässt.
$ 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
Container
Docker und Kubernetes
Docker Compose
Führen Sie den Clavitor-Proxy auf dem Host aus und leiten Sie Ihre Container darauf um. Anmeldeinformationen werden transparent in ausgehende Anfragen injiziert – keine Geheimnisse in Umgebungsvariablen, keine Geheimnisse, die in Images eingebettet sind.
# 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"Oder verwenden Sie render, um eine Konfigurationsvorlage beim Start aufzulösen:
$ clavitor-cli render app.config.template.yml | docker compose -f - up
Kubernetes
Erstellen Sie Secrets aus dem Tresor, ohne Werte in Manifesten fest zu codieren:
$ 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)"
Für die Laufzeitinjektion von Anmeldeinformationen stellen Sie den Proxy als Sidecar-Container in Ihrem Pod bereit. Anwendungscontainer setzen HTTPS_PROXY auf den Sidecar. Anmeldeinformationen werden pro Anfrage aufgelöst und niemals in etcd gespeichert.
IaC
Terraform, Ansible, Pulumi
Terraform
Lösen Sie Anmeldeinformationen in der Provider-Umgebung auf, bevor Sie terraform apply ausführen. Der AWS-Provider liest seine Anmeldeinformationen aus Standard-Umgebungsvariablen – Clavitor befüllt diese inline, die .tf-Datei enthält kein Geheimnis.
$ 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
Der provider "aws" {}-Block bleibt in Ihrem Code leer. Dasselbe Muster funktioniert für jeden Terraform-Provider, der Umgebungsvariablen-Anmeldeinformationen unterstützt (was auf die meisten zutrifft).
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
Das Token wird in jedem der folgenden Beispiele über stdin übergeben – so bleibt es außerhalb von argv und erscheint nicht in /proc/<pid>/cmdline oder Build-Logs.
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
Im Tresor gespeicherte Schlüssel
$ clavitor-cli get "Deploy Key" --field private_key | ssh-add - $ ssh deploy@production
Der private Schlüssel wird direkt in ssh-add übergeben. Er berührt niemals die Festplatte, erscheint nicht im Shell-Verlauf und wird aus dem Agenten gelöscht, wenn die Sitzung endet.
Altsysteme
Wenn es einen HTTP-Aufruf tätigt, funktioniert es.
Der Proxy kümmert sich nicht darum, in welcher Sprache die Anfrage gestellt wurde. COBOL, FORTRAN, Perl, Visual Basic, ein 30 Jahre alter Batch-Job – wenn der Prozess eine HTTPS-Anfrage stellt, fängt der Proxy sie ab, löst die clavitor://-Referenz auf und injiziert die echte Anmeldeinformation. Keine Codeänderungen erforderlich.
Für Systeme, die keine HTTP-Aufrufe tätigen können, verwenden Sie clavitor-cli render, um eine Konfigurationsvorlage aufzulösen, bevor der Prozess startet. Die Vorlage kann sicher überall gespeichert werden. Die aufgelöste Ausgabe wird an stdin oder eine temporäre Datei mit eingeschränkten Berechtigungen übergeben.
# 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
Das Muster ist immer dasselbe.
CLI für Skripte und Pipelines. Proxy für HTTP-Workloads. Render für Konfigurationsdateien. Jedes Geheimnis wird zur Laufzeit aufgelöst, niemals gespeichert.