Keamanan

OneCLI: Credential Gateway Open-Source untuk Amankan API Key dari AI Agents

OneCLI: Credential Gateway Open-Source untuk Amankan API Key dari AI Agents

Mengapa API Key dari AI Agents Jadi Masalah Serius

Ledakan adopsi AI agents — dari coding assistant sampai workflow automation — membawa satu masalah keamanan yang sering diabaikan: penyebaran credential yang tidak terkontrol. Saat agent di-brief dengan Anthropic API key, OpenAI token, atau GitHub PAT, kunci itu biasanya berakhir di beberapa lokasi yang sulit diaudit:

  • Environment variable di container CI/CD (terlihat di output docker inspect)
  • File .env yang ikut ter-commit ke repository
  • Log output yang dicetak ke stdout saat debugging
  • Snapshot memory yang dikirim ke context window LLM
  • Shell history yang bisa di-read user lain di shared server

Laporan GitGuardian 2025 menunjukkan lebih dari 12 juta credential bocor di public GitHub repository sepanjang tahun — angka yang naik sekitar 30% year-over-year. Untuk konteks AI agent, masalah ini diperparah karena agent sering beroperasi dengan permission yang terlalu luas dan tidak punya konsep "sensitivitas data" — ia hanya mengikuti instruksi dari prompt.

Apa Itu OneCLI dan Mengapa Berbeda

OneCLI adalah credential gateway open-source yang dirancang khusus untuk use case AI agent. Proyek ini ditulis dalam Go (sekitar 8.500 LOC), dilisensikan di Apache 2.0, dan sudah mencapai versi 0.4.2 dengan 1.200+ star di GitHub per Juli 2026. Sponsor utamanya termasuk tim engineering dari Linear dan Replicate yang awalnya membangun tools ini untuk kebutuhan internal mereka.

Cara kerjanya sederhana: alih-alih memberikan API key langsung ke AI agent, developer mendaftarkan key di OneCLI sebagai alias (misalnya "github-main", "openai-prod", "anthropic-research"). Agent cukup mengetahui nama alias tersebut. Saat agent butuh kredensial, ia request ke OneCLI lewat Unix socket atau HTTPS endpoint, dan gateway yang memutuskan apakah key boleh diberikan — lengkap dengan audit log, rate limit, dan policy enforcement.

Perbedaan utama dengan secret manager tradisional seperti HashiCorp Vault atau AWS Secrets Manager adalah fokus pada AI agent sebagai primary user. OneCLI di-desain untuk workload yang sering, cepat, dan tidak bisa di-prompt untuk reveal secret — tiga karakteristik yang menjadi kelemahan Vault untuk use case agent.

Arsitektur: Tiga Komponen yang Berjalan Terpisah

OneCLI terdiri dari tiga binary yang berjalan sebagai proses terpisah di host atau container:

  1. onecli-store — daemon yang memegang encrypted vault. Mendukung backend filesystem local, S3-compatible, dan HashiCorp Vault sebagai remote store. Enkripsi pakai AES-256-GCM dengan key derived dari passphrase + optional YubiKey untuk second factor.
  2. onecli-gateway — HTTP/gRPC server yang listen di Unix socket (default /var/run/onecli/gateway.sock) atau HTTPS port. Menerima request "beri saya credential untuk alias X" dan mengembalikan wrapped token (JWT) dengan TTL 5 menit.
  3. onecli-agent — CLI ringan (~3MB) yang dijalankan oleh AI agent atau pipeline CI. Hanya butuh permission untuk read alias dan connect ke socket — tidak pernah baca raw secret dari disk.

Flow request standar: agent panggil onecli-agent get github-main → gateway cek policy (siapa yang request, dari IP mana, jam berapa, butuh MFA atau tidak) → kalau lolos, return wrapped token → agent pakai token itu untuk call GitHub API → token otomatis expire 5 menit kemudian. Raw API key tidak pernah meninggalkan gateway process atau ditulis ke disk oleh agent.

Instalasi di Ubuntu 24.04

OneCLI tersedia sebagai binary single-file dan paket Debian resmi. Langkah setup di server production:

# Download binary terbaru (Linux amd64)
curl -fsSL https://github.com/onecli-io/onecli/releases/latest/download/onecli-linux-amd64.tar.gz | tar -xz
sudo mv onecli onecli-store onecli-gateway /usr/local/bin/

# Inisialisasi vault (hanya sekali, akan minta passphrase)
sudo mkdir -p /var/lib/onecli/vault
sudo onecli-store init --backend filesystem --path /var/lib/onecli/vault
sudo systemctl enable --now onecli-store

# Tambah API key pertama
sudo onecli-store add github-main --provider github --token ghp_xxxxxxxx
sudo onecli-store add openai-prod --provider openai --token sk-xxxxxxxx
sudo onecli-store add anthropic-research --provider anthropic --token sk-ant-xxxxxxxx

# Jalankan gateway
sudo systemctl enable --now onecli-gateway

Setelah gateway aktif, socket default listen di /var/run/onecli/gateway.sock dengan permission 0660 dan group onecli. AI agent yang dijalankan sebagai user biasa cukup di-add ke group tersebut untuk bisa request credential. Untuk server yang sudah menjalankan SSH server dengan hardening, ini melengkapi posture keamanan tanpa menambah port network baru.

Konfigurasi Policy: Kontrol Granular per Caller

OneCLI pakai format YAML untuk deklarasi policy. Setiap policy menentukan siapa boleh request alias apa, dari mana, dan kapan. Contoh konfigurasi untuk environment yang memisahkan CI runner dari local developer:

policies:
  - name: ci-runner
    allowed_aliases: ["github-main", "openai-prod", "anthropic-research"]
    source_cidrs: ["10.0.0.0/16"]
    time_window: "06:00-22:00"
    require_mfa: true
    rate_limit: "100/hour"
    
  - name: local-dev
    allowed_aliases: ["github-main", "openai-prod"]
    source_cidrs: ["127.0.0.1/32", "192.168.0.0/16"]
    time_window: "00:00-23:59"
    require_mfa: false
    rate_limit: "1000/hour"
    
  - name: prod-deploy-bot
    allowed_aliases: ["aws-prod-readonly"]
    source_cidrs: ["10.0.1.50/32"]
    require_mfa: true
    require_approval: true
    approval_timeout: "10m"

Policy dievaluasi setiap kali ada request credential. Kalau ada minimal satu policy yang match, request diizinkan. Kalau tidak ada yang match, request ditolak dan di-log ke /var/log/onecli/audit.jsonl dengan format yang compatible dengan CloudTrail AWS — gampang di-ingest ke SIEM populer seperti Splunk, Elastic, atau Wazuh.

Untuk tim yang sudah menjalankan Let's Encrypt untuk HTTPS dan CI/CD dengan runner pool, OneCLI bisa integrate dengan public key SSH — agent yang sudah login via SSH otomatis dianggap "trusted" tanpa perlu input passphrase tambahan saat request credential.

Perbandingan dengan Vault Traditional dan Cloud Secret Manager

Berikut perbandingan fitur OneCLI dengan alternatif populer untuk membantu keputusan adopsi:

FiturOneCLIHashiCorp VaultAWS Secrets ManagerInfisical
Self-hostYa (single binary)Ya (cluster)TidakYa (Docker compose)
Agent SDK size~3MB~50MB + ConsulAWS SDK~10MB
Latency credential fetch~5ms (local socket)~50ms (network call)~100ms (AWS API)~30ms (HTTP)
Audit log built-inJSONL streamBinary logCloudTrail integrationPostgreSQL table
Biaya operasionalMinimum (1 binary + SQLite)Tinggi (cluster HA required)Per-request billingRendah
AI agent first-classYa (designed for it)Tidak (general purpose)TidakTidak
Hardware MFAYubiKeyYubiKey, OktaMFA AWSYubiKey, TOTP
Open sourceApache 2.0Business Source LicenseTidakMIT

Vault adalah pilihan tepat untuk secret management enterprise dengan requirement compliance tinggi (SOC2 Type II, PCI-DSS, HIPAA). OneCLI lebih cocok untuk tim kecil-menengah yang fokus pada use case AI agent dan tidak mau pusing dengan operasional cluster Consul. AWS Secrets Manager masuk akal kalau infrastruktur sudah 100% di AWS dan Anda mau konsolidasi billing. Infisical menawarkan middle ground yang menarik dengan UI web built-in, tapi belum punya optimasi untuk pattern "request-then-rotate" yang sering dipakai agent.

Limitasi yang Perlu Diketahui Sebelum Adopsi

OneCLI masih relatif muda. Beberapa limitasi yang perlu dipertimbangkan untuk planning:

  • High availability — versi sekarang belum mendukung active-active clustering. Untuk HA, Anda perlu setup DR dengan replicate vault ke region kedua secara periodik (RPO sekitar 15 menit di setup default). Diskusi tentang Raft-based consensus sudah ada di roadmap tapi belum masuk v1.0.
  • Secret rotation otomatis — rotasi background job ke provider belum built-in. Anda bisa pakai cron + script untuk rotate manual, atau integrasikan dengan tool seperti Vault Agent atau script Python sederhana. Untuk use case yang butuh rotasi harian, kombinasi onecli-store rotate + systemd timer cukup reliable.
  • Web UI dashboard — saat ini CLI-only. Web UI (planned untuk v1.0, ETA Q4 2026) akan menyediakan view untuk audit log, policy editor, dan approval workflow. Untuk monitoring real-time, observasi file audit.jsonl via tail -f atau forward ke Elasticsearch sudah cukup.
  • Windows support — binary untuk Windows tersedia tapi belum di-test secara luas di production. Mayoritas tim yang menggunakan Windows melaporkan OneCLI berjalan baik di WSL2 (Ubuntu 22.04 atau 24.04). Untuk native Windows, kontribusi community untuk testing masih welcome.
  • Secret size limit — saat ini ada soft limit 8KB per secret. Untuk binary secret seperti certificate chain panjang, perlu di-chunk atau gunakan backend S3.

Integrasi dengan Workflow Keamanan Lainnya

OneCLI dirancang untuk melengkapi — bukan menggantikan — security tools yang sudah ada. Beberapa integrasi yang umum di production:

  • SIEM forwarding — audit log di /var/log/onecli/audit.jsonl bisa di-tail oleh Filebeat atau Vector dan dikirim ke Splunk/Elasticsearch. Untuk alerting, query sederhana: action="denied" AND source_ip NOT IN ("10.0.0.0/16") akan tangkap semua attempt dari IP yang tidak dikenal.
  • Secret scanning — untuk memastikan tidak ada credential yang bocor ke git history, kombinasikan OneCLI dengan scanning tool seperti Gitleaks atau TruffleHog di pre-commit hook. Pipeline jadi: scan → reject kalau ada raw key → kalau aman, lanjut deploy.
  • Post-quantum readiness — untuk organisasi yang sudah mulai migrasi ke post-quantum cryptography, OneCLI 0.5 (planned Q1 2027) akan menambahkan support untuk Kyber-1024 di TLS handshake dan hybrid encryption untuk vault.

Studi Kasus: Linear dan Replicate

Linear melaporkan bahwa sebelum mengadopsi OneCLI, mereka sempat menghadapi insiden di mana salah satu internal coding agent secara tidak sengaja menuliskan API key ke public PR comment saat debugging session. Setelah adopsi OneCLI untuk seluruh agent workflow mereka:

  • 0 insiden credential leak dalam 8 bulan terakhir — sebelumnya rata-rata 3-4 insiden per tahun
  • Setup time per project baru turun dari sekitar 2 jam menjadi 15 menit (cukup copy policy template dan add alias)
  • Audit compliance untuk SOC2 Type II lulus tanpa finding baru di area secret management
  • Onboarding developer baru lebih cepat karena tidak perlu share API key satu per satu — mereka cukup install OneCLI agent dan request via policy default

Replicate menggunakan OneCLI untuk model deployment pipeline mereka. Setiap model yang di-deploy ke production butuh akses ke S3 (untuk model weights), CloudFront (untuk CDN distribution), dan Docker Hub (untuk image push), dan OneCLI handle ketiganya lewat policy berbeda per environment. Hasilnya: proses deploy yang sebelumnya butuh secret manual di 5 tempat, sekarang cukup satu command.

Rekomendasi Langkah Adopsi

Untuk tim developer Indonesia yang baru mau coba OneCLI, urutan adopsi yang direkomendasikan berdasarkan pengalaman beberapa tim:

  1. Week 1 — Pilot kecil: install di satu development server, setup satu policy untuk local testing, migrasi satu project kecil (misalnya bot Telegram yang pakai OpenAI API atau script yang generate image).
  2. Week 2 — CI integration: setup di satu CI runner, migrate pipeline yang paling sering pakai API key. Monitor audit log untuk pattern aneh.
  3. Week 3-4 — Expansion: setelah yakin stabil, expand ke semua CI runner dan tambahkan policy untuk production deployment. Setup alerting ke Slack atau Discord untuk failed authentication attempts.
  4. Month 2 — Full rollout: matikan direct API key access di semua environment, force semua request lewat OneCLI. Ini adalah titik di mana credential leak benar-benar menjadi mustahil.

Estimasi effort: 1 developer bisa setup dan migrasi penuh dalam 2-3 hari kerja. Setelah itu, operasional hanya butuh beberapa menit per minggu untuk review audit log dan update policy.

Sumber

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar akan muncul setelah moderasi.