Anmelden Für immer gratis Loslegen

Infrastruktur

Keine Secrets in der Konfiguration.

Keine Secrets in den Logs.

Jede Plattform, jeder Orchestrator, jeder CI-Runner. Der Proxy funktioniert mit allem, was HTTP-Aufrufe tätigt. Das CLI funktioniert mit allem, was Shell-Aufrufe ausführen kann. Selbst wenn Ihr System älter ist als Ihre Karriere, funktioniert es weiterhin.

Der Proxy ist die universelle Integration.

Wenn Ihre Workload HTTPS-Aufrufe tätigt, injiziert der Clavitor-Proxy die Anmeldedaten auf der Netzwerkschicht. 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 Request-Headern auf, bevor die Anfrage das System verlässt.

$ export HTTPS_PROXY=http://localhost:1983
$ curl -H "Authorization: Bearer clavitor://Stripe API/key" \
  https://api.stripe.com/v1/charges
# Der Agent sieht niemals sk_live_... -- nur clavitor:// erscheint in den Logs

Container

Docker und Kubernetes

Docker Compose

Führen Sie den Clavitor-Proxy auf dem Host aus und leiten Sie Ihre Container dorthin um. Anmeldedaten werden transparent in ausgehende Anfragen injiziert – keine Secrets in Umgebungsvariablen, keine in Images eingebetteten Secrets.

# Auf dem Docker-Host
$ clavitor-proxy serve &
# docker-compose.yml -- Container leiten über den Proxy im Host-Modus
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 Vault, ohne Werte hart in Manifesten zu kodieren:

$ 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 Anmeldedaten-Injektion zur Laufzeit implementieren Sie den Proxy als Sidecar-Container in Ihrem Pod. Applikations-Container setzen HTTPS_PROXY auf den Sidecar. Anmeldedaten werden pro Anfrage aufgelöst und niemals in etcd gespeichert.

IaC

Terraform, Ansible, Pulumi

Terraform

Lösen Sie Anmeldedaten in der Provider-Umgebung vor terraform apply auf. Der AWS-Provider liest seine Anmeldedaten aus Standard-Umgebungsvariablen — Clavitor befüllt diese inline, die .tf-Datei erwähnt 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 für Anmeldedaten unterstützt (was auf die meisten zutrifft).

Ansible

- name: Datenbank-Passwort abrufen
  command: clavitor-cli get "Production DB" --field password
  register: db_pass
  no_log: true

- name: Applikation konfigurieren
  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 unten stehenden Beispiel über stdin übergeben — so bleibt es außerhalb von argv, damit es nicht in /proc/<pid>/cmdline oder in den Build-Logs erscheint.

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 Vault gespeicherte Schlüssel

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

Der private Schlüssel wird direkt an ssh-add übergeben. Er berührt niemals die Festplatte, erscheint nie in der Shell-Historie und wird beim Ende der Sitzung aus dem Agent gelöscht.

Altsysteme

Wenn es einen HTTP-Aufruf tätigt, funktioniert es.

Dem Proxy ist es egal, welche Sprache die Anfrage erstellt hat. COBOL, FORTRAN, Perl, Visual Basic, ein 30 Jahre alter Batch-Job — wenn der Prozess eine HTTPS-Anfrage stellt, fängt der Proxy diese ab, löst die clavitor://-Referenz auf und injiziert die echten Anmeldedaten. Keine Codeänderungen erforderlich.

Für Systeme, die keine HTTP-Aufrufe tätigen können, verwenden Sie clavitor-cli render, um eine Konfigurationsvorlage vor dem Start des Prozesses aufzulösen. Die Vorlage kann sicher an jedem Ort gespeichert werden. Die aufgelöste Ausgabe geht an stdin oder eine temporäre Datei mit eingeschränkten Berechtigungen.

# Anmeldedaten auflösen, bevor der Batch-Job startet
$ 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 Secret wird zur Laufzeit aufgelöst, niemals gespeichert.