Sign in ฟรีตลอดไป Get started

โครงสร้างพื้นฐาน

ไม่มีข้อมูลลับในไฟล์กำหนดค่า

ไม่มีข้อมูลลับในบันทึก

ทุกแพลตฟอร์ม ทุกออเคสเตรเตอร์ ทุก CI runner ตัวพร็อกซีทำงานร่วมกับทุกสิ่งที่เรียก HTTP ได้ CLI ทำงานร่วมกับทุกสิ่งที่รันคำสั่ง shell ได้ แม้ระบบของคุณจะเก่ากว่าอาชีพของคุณ ก็ยังใช้งานได้

ตัวพร็อกซีคือการรวมระบบแบบสากล

หากปริมาณงานของคุณเรียก HTTPS ตัวพร็อกซีของ Clavitor จะแทรกข้อมูลรับรองที่ชั้นเครือข่าย ไม่ต้องแก้ไขโค้ด ไม่ต้องใช้ SDK ไม่มีข้อมูลลับในตัวแปรสภาพแวดล้อม ไฟล์กำหนดค่า หรือบันทึก ตั้ง HTTPS_PROXY แล้วโค้ดที่มีอยู่ก็ทำงานได้ตามเดิม — ตัวพร็อกซีจะไขค่าการอ้างอิง clavitor:// ในส่วนหัวคำขอ ก่อนที่คำขอจะออกจากเครื่อง

$ 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

คอนเทนเนอร์

Docker และ Kubernetes

Docker Compose

รันตัวพร็อกซีของ Clavitor บนโฮสต์แล้วชี้คอนเทนเนอร์ของคุณไปที่มัน ข้อมูลรับรองจะถูกแทรกอย่างโปร่งใสไปยังคำขอขาออก — ไม่มีข้อมูลลับในตัวแปรสภาพแวดล้อม ไม่มีข้อมูลลับฝังอยู่ในอิมเมจ

# 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"

หรือใช้ render เพื่อแปลงเทมเพลตกำหนดค่าตอนเริ่มต้น:

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

Kubernetes

สร้าง Secret จาก vault โดยไม่ต้อง hardcode ค่าใน manifest:

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

สำหรับการแทรกข้อมูลรับรองแบบ runtime ให้ deploy ตัวพร็อกซีเป็น sidecar container ใน pod ของคุณ คอนเทนเนอร์แอปพลิเคชันตั้ง HTTPS_PROXY ไปที่ sidecar ข้อมูลรับรองจะถูกไขค่าตามคำขอแต่ละคำขอ ไม่เคยเก็บไว้ใน etcd

IaC

Terraform, Ansible, Pulumi

Terraform

ไขค่าข้อมูลรับรองเข้าสู่สภาพแวดล้อมของ provider ก่อนรัน terraform apply provider ของ AWS อ่านข้อมูลรับรองจากตัวแปรสภาพแวดล้อมมาตรฐาน — Clavitor ใส่ค่าให้โดยตรง ไฟล์ .tf ไม่ได้ระบุข้อมูลลับใดๆ

$ 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" {} จะว่างเปล่าในโค้ดของคุณ ใช้รูปแบบเดียวกันได้กับ Terraform provider ทุกตัวที่รองรับ credentials จากตัวแปรสภาพแวดล้อม (ซึ่งก็คือเกือบทั้งหมด)

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 จะถูกส่งทาง stdin — เพื่อไม่ให้มันอยู่ใน argv และจะไม่ปรากฏใน /proc/<pid>/cmdline หรือบันทึกการ 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

คีย์ที่เก็บใน vault

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

คีย์ส่วนตัวจะถูกส่งตรงไปยัง ssh-add ไม่เคยเขียนลงดิสก์ ไม่เคยปรากฏในประวัติคำสั่ง shell และจะถูกลบออกจาก agent เมื่อสิ้นสุด session

ระบบเดิม

ถ้าเรียก HTTP ได้ ก็ใช้งานได้

ตัวพร็อกซีไม่สนว่าภาษาโปรแกรมใดสร้างคำขอ COBOL, FORTRAN, Perl, Visual Basic, batch job อายุ 30 ปี — หากโปรเซสเรียก HTTPS ตัวพร็อกซีจะสกัดจับ ไขค่าการอ้างอิง clavitor:// และแทรกข้อมูลรับรองจริงเข้าไป ไม่ต้องแก้ไขโค้ด

สำหรับระบบที่เรียก HTTP ไม่ได้ ให้ใช้ clavitor-cli render เพื่อแปลงเทมเพลตกำหนดค่าก่อนที่โปรเซสจะเริ่มต้น เทมเพลตปลอดภัยที่จะเก็บไว้ที่ใดก็ได้ ผลลัพธ์ที่แปลงแล้วจะส่งไปยัง stdin หรือไฟล์ชั่วคราวที่มีสิทธิ์เข้าถึงจำกัด

# 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

รูปแบบเป็นเหมือนกันเสมอ.

CLI สำหรับสคริปต์และไปป์ไลน์. พร็อกซีสำหรับปริมาณงาน HTTP. Render สำหรับไฟล์กำหนดค่า. ทุกข้อมูลลับถูกไขค่าใน runtime ไม่เคยเก็บไว้.