พร็อกซีข้อมูลรับรอง

เอเจนต์ของคุณเรียกใช้ API
และไม่ควรเก็บคีย์ไว้เลย

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

ปัญหาที่คุณกำลังเผชิญอยู่

ความลับในตัวแปรสภาพแวดล้อม

เอเจนต์ของคุณอ่าน OPENAI_API_KEY จากสภาพแวดล้อม คีย์นั้นจะปรากฏใน /proc, ใน crash dump, ในบันทึก CI และในทุกเครื่องมือที่เอเจนต์เรียกใช้ เพียงแค่บันทึกหลุดออกไปหนึ่งบรรทัด คีย์ก็จะถูกเปิดเผยต่อสาธารณะ

ความลับในหน่วยความจำของเอเจนต์

แม้เอเจนต์จะดึงคีย์ขณะรันไทม์ แต่ก็จะเก็บไว้ในหน่วยความจำตลอดระยะเวลาของกระบวนการ หากสกิลถูกโจมตี มีการฉีดพรอมต์ หรือมีการ dump ดีบัก คีย์ก็จะถูกเอาไปได้ทันที

ไม่มีการตรวจสอบสิ่งที่ถูกใช้งาน

เมื่อแชร์คีย์ API เป็นสตริง จะไม่มีบันทึกว่าเอเจนต์ใดใช้งาน เมื่อใด หรือเพื่ออะไร หากคีย์รั่วไหล คุณก็ต้องหมุนเวียนคีย์และหวังเอาเอง ไม่มีร่องรอยสำหรับการตรวจสอบ

ปัญหาที่เราหวังว่าคุณจะไม่พบเจอ

คีย์ API ในซอร์สโค้ด

การฮาร์ดโค้ดในไฟล์กำหนดค่า คอมมิตลง git และโคลนโดยนักพัฒนาและ CI runner ทุกคนในทีม เพียงแค่ fork สาธารณะหนึ่งครั้ง คีย์ก็จะไปปรากฏบนแดชบอร์ดสแกนความลับของ GitHub หรือที่แย่กว่านั้นคือไม่ปรากฏเลย

ข้อมูลรับรองใน Slack

"ช่วยส่งคีย์ Stripe ให้หน่อยได้ไหม" การวางใน DM ซึ่งค้นหาได้ตลอดไปและส่งออกในคลังข้อมูลการปฏิบัติตามข้อกำหนดทุกแห่ง Slack ไม่ใช่ห้องนิรภัย เช่นเดียวกับอีเมล, Google Docs หรือโพสต์อิทบนหน้าจอ

ไฟล์ .env บนแล็ปท็อปทุกเครื่อง

นักพัฒนา 12 คน สำเนาข้อมูลรับรองการผลิต 12 ชุดในไฟล์ข้อความธรรมดาที่ไม่เคยถูกหมุนเวียน แล็ปท็อปถูกขโมยหนึ่งเครื่อง ~/.bash_history รั่วไหลหนึ่งครั้ง เครื่องมือสำรองข้อมูลที่ช่วยเหลือมากเกินไปหนึ่งตัว และคุณก็ต้องมานั่งหมุนเวียนคีย์ทุกคีย์ในบริษัทตอนตี 2

นำข้อมูลรับรองออกจากเอเจนต์อย่างสมบูรณ์

พร็อกซีทำงานอยู่ระหว่างเอเจนต์และ API เอเจนต์จะเขียนการอ้างอิง — clavitor://OpenAI/key — ในตำแหน่งที่ควรเป็นความลับ พร็อกซีจะแก้ไขภายในเครื่อง แทรกข้อมูลรับรองจริงลงในคำขอ HTTPS และส่งต่อ บันทึกของเอเจนต์จะแสดงเฉพาะตัวยึดตำแหน่ง API ได้รับคีย์ และไม่มีอะไรในระหว่างนั้นจัดเก็บคีย์ไว้

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

# proxy-auth is the proxy's access token, the file beside the binary
$ export HTTPS_PROXY="http://clavitor:$(cat proxy-auth)@127.0.0.1:1983"

$ curl -H "Authorization: Bearer clavitor://OpenAI/key" \
    https://api.openai.com/v1/chat/completions

# The proxy resolved the placeholder. The agent never saw sk-EXAMPLE_not_a_real_key.
# Neither did the logs, the crash dump, or the conversation history.

ทำงานร่วมกับเอเจนต์ที่เรียกใช้ HTTPS ได้ทุกตัว: Claude Code, Codex, OpenClaw, CrewAI, LangChain, สคริปต์ที่กำหนดเอง ตั้งค่าตัวแปรสภาพแวดล้อมหนึ่งตัวแล้วการเรียกใช้ API ของเอเจนต์จะไหลผ่านพร็อกซี ไม่ต้องใช้ SDK ไม่ต้องใช้ปลั๊กอิน และไม่ต้องเปลี่ยนแปลงโค้ด

สิ่งที่เกิดขึ้นภายใต้ระบบ

ถอดรหัสภายในเครื่อง ต่อคำขอ

พร็อกซีดึงข้อมูลรับรองที่เข้ารหัสจากห้องนิรภัยและถอดรหัสบนอุปกรณ์ ข้อความธรรมดาจะอยู่ในหน่วยความจำของกระบวนการสำหรับคำขอ HTTP หนึ่งคำขอ จากนั้นจะหายไป ไม่มีการแคช ไม่มีการเขียนลงดิสก์ ทุกคำขอจะถอดรหัสใหม่เสมอ

แมปฟิลด์ไปยังส่วนหัว

โทเค็น Bearer, คีย์ API, Basic auth — พร็อกซีจะแมปป้ายกำกับฟิลด์ของห้องนิรภัยไปยังส่วนหัว HTTP ที่ถูกต้องโดยอัตโนมัติ หรือเอเจนต์จะเลือกฟิลด์ที่แน่นอนด้วยการอ้างอิง clavitor:// ก็ได้ ไม่ว่าจะด้วยวิธีใด ข้อมูลรับรองจะไปยังตำแหน่งที่ถูกต้องโดยที่เอเจนต์ไม่เคยเห็นเลย

ขอบเขต, การจำกัดอัตรา, การตรวจสอบ

ห้องนิรภัยจะบังคับใช้ขอบเขตและการจำกัดอัตรา เอเจนต์ที่เข้าถึงข้อมูลรับรองที่แตกต่างกันมากเกินไปจะถูกล็อกโดยอัตโนมัติ การเข้าถึงทุกครั้งจะถูกบันทึก ระบุ ID เอเจนต์ในตัวอ้างอิง — clavitor://agentid@Entry/field — สำหรับบันทึกการตรวจสอบและการจำกัดอัตราต่อเอเจนต์ผ่านพร็อกซีที่ใช้ร่วมกัน

การปรับใช้

ไบนารีเดียว ทำงานเป็น Sidecar ให้กับเอเจนต์ ไม่มีการเปลี่ยนแปลงโครงสร้างพื้นฐานเครือข่าย

โฮสต์เอเจนต์เดียว

ดาวน์โหลดไบนารี, รัน clavitor-proxy init ด้วย enrollment blob และกุญแจ, ตั้ง HTTPS_PROXY บน agent. เสร็จแล้ว. proxy bind ที่ 127.0.0.1:1983 (sidecar ของ agent ตัวเดียว). มันจะไม่ bind กับที่อยู่อื่นด้วยตัวเอง: พอร์ตนี้มี access token แบบ plaintext ดังนั้นถ้าไม่ใช่ loopback มันจะไม่ยอมเริ่ม เว้นแต่คุณตั้ง CLAVITOR_PROXY_LISTEN เป็นที่อยู่นั้น และสร้างไฟล์สิทธิ์เฉพาะเจ้าของชื่อ proxy-allow-private ไว้ข้างไบนารี ซึ่งคุณทำเฉพาะเมื่อที่อยู่นั้นเป็นเครือข่ายส่วนตัวที่เชื่อถือได้ (VPN หรือ Tailscale) ครับ.

โฮสต์หลายเอเจนต์

เอเจนต์แต่ละตัวจะได้รับสำเนาไบนารีของตัวเองพร้อมไฟล์กำหนดค่า sidecar ของตัวเอง แต่ละสำเนามีขอบเขต การจำกัดอัตรา และบันทึกการตรวจสอบของตัวเอง เอเจนต์ A ไม่สามารถเห็นข้อมูลรับรองของเอเจนต์ B ได้ การแยกส่วนโดยการออกแบบ

พร็อกซีที่โฮสต์บนคลาวด์เป็นเป้าหมายที่มีมูลค่าสูง

พร็อกซีข้อมูลรับรองทุกตัวที่รันบนคลาวด์ — ไม่ว่าจะเป็นของคุณหรือของคนอื่น — ล้วนเป็นเป้าหมาย หากเจาะพร็อกซีได้ ก็จะได้ข้อมูลรับรองของลูกค้าทุกคนไป นั่นไม่ใช่ความเสี่ยงในทางทฤษฎี แต่เป็นโมเดลธุรกิจของบริการ credential-proxy-as-a-service ทุกเจ้า

proxy ของ Clavitor ทำงานบนโครงสร้างพื้นฐานของคุณ. ถอดรหัสในเครื่อง. credential อยู่ใน process memory ตลอดระยะเวลาของ request เดียว. ไม่มีบริการคลาวด์ที่เก็บคีย์แบบ plaintext ของคุณ. ไม่มี API endpoint ที่ให้บริการ secrets ของคุณ. ไม่มีสำเนาคีย์ของคุณบนคลาวด์ให้ถูกเจาะ.

เอเจนต์ของคุณกำลังเรียกใช้ API อยู่แล้ว
ให้ทำงานในขอบเขตของตัวเอง

ห้องนิรภัยของคุณ ขอบเขตของคุณ บันทึกการตรวจสอบของคุณ พร็อกซีเพิ่มจุดบังคับใช้ที่เลเยอร์เครือข่ายโดยไม่มีการเปลี่ยนแปลงโค้ดในเอเจนต์เลย