Infrastruktur
Ingen hemmeligheter i konfigurasjon.
Ingen hemmeligheter i logger.
Alle plattformer, alle orkestratorer, alle CI-kjørere. Proxyen fungerer med alt som gjør HTTP-kall. CLI-en fungerer med alt som kan kjøre kommandoer. Hvis systemet ditt er eldre enn karrieren din, fungerer det fortsatt.
Proxyen er den universelle integrasjonen.
Hvis arbeidsmengden din gjør HTTPS-kall, injiserer Clavitor-proxyen påloggingsinformasjon på nettverksnivå. Ingen kodeendringer. Ingen SDK-er. Ingen hemmeligheter i miljøvariabler, konfigurasjonsfiler eller logger. Sett HTTPS_PROXY og eksisterende kode fungerer uendret — proxyen løser clavitor://-referanser i forespørselsheadere før forespørselen forlater maskinen.
$ 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
Containere
Docker og Kubernetes
Docker Compose
Kjør Clavitor-proxyen på verten og pek containerne dine mot den. Påloggingsinformasjon injiseres transparent i utgående forespørsler — ingen hemmeligheter i miljøvariabler, ingen hemmeligheter bakt inn i bilder.
# 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"Eller bruk render for å løse en konfigurasjonmal ved oppstart:
$ clavitor-cli render app.config.template.yml | docker compose -f - up
Kubernetes
Opprett hemmeligheter fra hvelvet uten å hardkode verdier i manifestfiler:
$ 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)"
For kjøretidsinjeksjon av påloggingsinformasjon, distribuer proxyen som en sidecar-container i podden din. Applikasjonscontainere setter HTTPS_PROXY til sidecar-en. Påloggingsinformasjon løses per forespørsel, lagres aldri i etcd.
IaC
Terraform, Ansible, Pulumi
Terraform
Løs påloggingsinformasjon inn i leverandørmiljøet før terraform apply. AWS-leverandøren leser sin påloggingsinformasjon fra standard miljøvariabler — Clavitor fyller dem inn inline, .tf-filen nevner ingen hemmelighet.
$ 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
provider "aws" {}-blokken forblir tom i koden din. Samme mønster fungerer for enhver Terraform-leverandør som støtter env-var påloggingsinformasjon (som de fleste gjør).
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
Tokenet sendes på stdin i alle eksempler nedenfor — holder det ute av argv slik at det ikke vises i /proc/<pid>/cmdline eller byggelogger.
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
Hvelvlagrede nøkler
$ clavitor-cli get "Deploy Key" --field private_key | ssh-add - $ ssh deploy@production
Den private nøkkelen sendes direkte inn i ssh-add. Den berører aldri disk, vises aldri i skallhistorikk, og fjernes fra agenten når økten avsluttes.
Eldre systemer
Hvis den gjør et HTTP-kall, fungerer den.
Proxyen bryr seg ikke om hvilket språk som laget forespørselen. COBOL, FORTRAN, Perl, Visual Basic, en 30 år gammel batchjobb — hvis prosessen gjør en HTTPS-forespørsel, avskjærer proxyen den, løser clavitor://-referansen, og injiserer den ekte påloggingsinformasjonen. Ingen kodeendringer kreves.
For systemer som ikke kan gjøre HTTP-kall, bruk clavitor-cli render for å løse en konfigurasjonmal før prosessen starter. Malen er trygg å lagre hvor som helst. Det løste resultatet går til stdin eller en midlertidig fil med begrenset tilgang.
# 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
Mønsteret er alltid det samme.
CLI for skript og pipelines. Proxy for HTTP-arbeidsmengder. Render for konfigurasjonsfiler. Alle hemmeligheter løst ved kjøretid, aldri lagret.