Log ind Gratis for altid Kom i gang

Infrastruktur

Ingen hemmeligheder i konfiguration.
Ingen hemmeligheder i logs.

Enhver platform, enhver orkestrator, enhver CI-runner. Proxyen virker med alt, der foretager HTTP-kald. CLI'en virker med alt, der kan køre shell-kommandoer. Hvis dit system er ældre end din karriere, virker det stadig.

Proxyen er den universelle integration.

Hvis din workload foretager HTTPS-kald, injicerer Clavitor-proxyen loginoplysninger på netværkslaget. Ingen kodeændringer. Ingen SDK'er. Ingen hemmeligheder i miljøvariabler, konfigurationsfiler eller logs. Indstil HTTPS_PROXY, og din eksisterende kode virker uændret — proxyen løser clavitor://-referencer i request-headere, før requesten forlader 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

Kør Clavitor-proxyen på hosten, og peg dine containere mod den. Loginoplysninger injiceres transparent i udgående requests — ingen hemmeligheder i miljøvariabler, ingen hemmeligheder indlejret i images.

# 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 brug render til at løse en konfigurationsskabelon ved opstart:

$ clavitor-cli render app.config.template.yml | docker compose -f - up

Kubernetes

Opret hemmeligheder fra boksen uden at hardcode værdier i manifests:

$ 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)"

Til runtime-injektion af loginoplysninger, deploy proxyen som en sidecar-container i din pod. Applikationscontainere indstiller HTTPS_PROXY til sidecar'en. Loginoplysninger løses pr. request, gemmes aldrig i etcd.

IaC

Terraform, Ansible, Pulumi

Terraform

Løs loginoplysninger ind i provider-miljøet før terraform apply. AWS-provideren læser sine loginoplysninger fra standard miljøvariabler — Clavitor udfylder dem inline, .tf-filen nævner ingen hemmelighed.

$ 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 forbliver tom i din kode. Samme mønster virker for enhver Terraform-provider, der understøtter env-var loginoplysninger (hvilket de fleste gø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 pipes på stdin i alle eksempler nedenfor — det holdes ude af argv, så det ikke vises i /proc/<pid>/cmdline eller 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

Nøgler gemt i boks

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

Den private nøgle pipes direkte ind i ssh-add. Den rører aldrig disken, vises aldrig i shell-historikken og fjernes fra agenten, når sessionen slutter.

Ældre systemer

Hvis den foretager et HTTP-kald, virker den.

Proxyen er ligeglad med, hvilket sprog der foretog requesten. COBOL, FORTRAN, Perl, Visual Basic, et 30 år gammelt batchjob — hvis processen foretager en HTTPS-request, opsnapper proxyen den, løser clavitor://-referencen og injicerer den rigtige loginoplysning. Ingen kodeændringer påkrævet.

For systemer, der ikke kan foretage HTTP-kald, brug clavitor-cli render til at løse en konfigurationsskabelon, før processen starter. Skabelonen kan sikkert gemmes hvor som helst. Det løste output sendes til stdin eller en midlertidig fil med begrænsede tilladelser.

# 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 altid det samme.

CLI til scripts og pipelines. Proxy til HTTP-workloads. Render til konfigurationsfiler. Enhver hemmelighed løst ved runtime, aldrig gemt.