Sign inContact usStart free
Enterprise Controls and TrustJuly 30, 2026Flatkey Team

Manajemen API Key yang Aman untuk Produk AI

Playbook produksi untuk pengelolaan API key AI, identitas terlingkup, logging yang aman untuk prompt, rotasi tanpa downtime, respons kebocoran, dan tata kelola multi-provider.

Manajemen API Key yang Aman untuk Produk AI

Manajemen API key yang aman untuk produk AI bukan sekadar menaruh kredensial provider di dalam vault. Aplikasi AI mengirim prompt, file, konteks yang diambil kembali, argumen tool, dan output model melalui sistem yang sering kali melintasi beberapa provider dan environment. Sebuah key bisa saja terenkripsi dengan sempurna saat tersimpan, sementara jalur request di sekitarnya masih mengekspos data sensitif melalui browser bundle, debug log, output CI, ekspor dukungan, atau service routing yang memiliki izin berlebihan.

Karena itu, tujuan praktisnya lebih luas: menjauhkan provider key jangka panjang dari klien yang tidak tepercaya, memberi setiap workload identitas sekecil yang benar-benar diperlukan, mengontrol data apa yang boleh melewati setiap boundary model, dan menjadikan rotasi serta pencabutan sebagai rutinitas, bukan gangguan.

Panduan ini memberi tim platform, keamanan, dan produk AI model operasional yang dapat mereka implementasikan. Isinya mencakup threat model, template inventaris key, arsitektur control plane, runbook rotasi tanpa downtime, aturan logging, pengaman CI/CD, alur kerja respons insiden, dan checklist produksi.

The five boundaries an AI key can cross

Mulailah dengan memetakan tempat-tempat di mana sebuah secret atau data yang diotorisasinya bisa berpindah. Sebagian besar kegagalan terjadi karena tim melindungi provider key tetapi mengabaikan salah satu boundary yang berdekatan ini.

Boundary Typical failure Required control
Client to application A provider key is embedded in a browser bundle, mobile binary, desktop app, or extension Keep provider keys server-side; issue short-lived user or session credentials to clients
Application to gateway Every service shares one unrestricted key Use workload identities, scoped gateway tokens, quotas, and explicit route policy
Gateway to provider One credential can access every model, project, or environment Separate keys by provider, environment, workload, and risk tier where supported
Request to logs Authorization headers, prompts, files, or outputs appear in traces Denylist secret fields, minimize payload logging, tokenize identifiers, and test redaction
Human operations Keys are pasted into tickets, chat, runbooks, or support tools Use controlled access workflows, audited retrieval, break-glass procedures, and automatic expiry

Peta boundary ini mengubah pertanyaan desain dari “Di mana kita menyimpan key?” menjadi “Identitas mana yang dapat membuat request apa, dengan data apa, melalui rute yang mana, dan bukti apa yang tersisa setelahnya?”

Use a server-side key custody model

Kredensial provider jangka panjang tidak boleh diberikan ke klien browser, mobile, desktop, atau extension. Apa pun yang dikirim ke perangkat pengguna akhir harus diperlakukan sebagai sesuatu yang dapat dipulihkan oleh pengguna tersebut atau oleh malware yang berjalan dengan hak akses yang sama.

Pola yang lebih aman adalah:

  1. Klien mengautentikasi ke backend Anda menggunakan sesi pengguna, kredensial perangkat, atau token aplikasi berumur pendek.
  2. Backend Anda mengotorisasi fitur yang diminta dan menerapkan batas per pengguna atau per tenant.
  3. Gateway atau integrasi sisi server memilih provider dan model yang disetujui.
  4. Provider key diambil saat runtime atau disediakan untuk beban kerja tepercaya melalui platform deployment.
  5. Respons provider dikembalikan melalui boundary kebijakan yang sama.

Klien tidak pernah perlu secret provider. Klien hanya menerima otoritas untuk memanggil produk Anda dalam batas yang Anda definisikan.

Untuk coding agent dan alat developer lokal, gunakan prinsip yang sama dengan model pengecualian yang disengaja. Seorang developer mungkin memerlukan kredensial lokal, tetapi kredensial itu harus berupa kredensial produk atau gateway dengan pencabutan, atribusi penggunaan, dan scope terbatas—bukan provider key organisasi yang dibagikan dan disalin ke dotfiles di seluruh perusahaan.

Build a key inventory before you rotate anything

Proyek rotasi gagal ketika tim tidak mengetahui beban kerja mana yang menggunakan sebuah key. Buat inventaris yang dapat dibaca mesin dan tetapkan pemilik sebelum mengubah kredensial.

Setidaknya, catat:

Field Example Why it matters
Secret ID prod-support-chat-anthropic-01 Referensi internal yang stabil yang bukan nilai rahasia
Provider and project Akun provider + identifier project Menentukan radius ledakan eksternal
Environment Development, staging, production Mencegah sistem pengujian mewarisi otoritas produksi
Workload support-chat-api Memungkinkan atribusi dan pencabutan yang ditargetkan
Owner Tim dan rotasi on-call Menciptakan akuntabilitas selama insiden
Storage location Path secret manager atau binding deployment Menunjukkan di mana sumber kebenaran berada
Allowed models/routes Keluarga model yang disetujui atau kebijakan gateway Membatasi penggunaan yang tidak terduga
Spend and request limits Anggaran workload, RPM, TPM, atau kontrol konkurensi Membatasi penyalahgunaan dan automasi yang tak terkendali
Created and last rotated Stempel waktu Membuat kredensial usang terlihat
Rotation method Dual-key, alias versi, atau jendela pemeliharaan Mencegah perubahan yang dilakukan secara improvisasi
Revocation dependency Layanan yang harus diperbarui terlebih dahulu Melindungi ketersediaan
Data classification Publik, internal, rahasia, teregulasi Menghubungkan kebijakan key ke tata kelola prompt

Jangan masukkan nilai key ke dalam inventaris. Simpan hanya metadata dan referensi ke secret yang dikelola.

Separate identities by environment, workload, and risk

Anti-pola yang paling umum adalah satu production key yang dibagikan oleh setiap layanan. Ini nyaman sampai satu repositori, test runner, laptop kontraktor, atau transkrip dukungan membocorkannya. Setelah itu, tim tidak dapat mencabut key tanpa mengganggu produk yang tidak terkait.

Prefer separate identities for:

  • Produksi, staging, pengembangan, dan pengujian lokal.
  • Lalu lintas yang berhadapan dengan pelanggan, alat internal, job batch, dan pipeline evaluasi.
  • Alur kerja berisiko tinggi yang dapat memanggil tools atau memproses data rahasia.
  • Unit bisnis atau tenant yang berbeda ketika batasan kontraktual mengharuskan pemisahan.
  • Akses darurat atau break-glass, yang sebaiknya tetap dinonaktifkan atau dikontrol dengan ketat selama operasi normal.

Jika provider menawarkan pembatasan, terapkan pembatasan tersebut. Pembatasan dapat mencakup API, model, jaringan sumber, project, referrer, aplikasi, atau kuota yang diizinkan. Panduan API key Google Cloud, misalnya, merekomendasikan untuk membatasi key, mengisolasinya, menghapus key yang tidak diperlukan, menghindari commit ke repository, dan memantau penggunaannya.

Jika provider tidak menawarkan kontrol yang cukup granular, tegakkan kontrol tersebut di gateway Anda sendiri. Gateway sentral dapat memvalidasi workload pemanggil, memetakannya ke route yang disetujui, menerapkan anggaran dan batas laju, serta menyimpan kredensial vendor di balik satu batas server-side yang telah ditinjau. Tinjau panduan lebih luas panduan arsitektur AI API gateway untuk desain routing dan failover.

Treat prompt and log governance as part of key management

Sebuah API key mengotorisasi jalur data. Melindungi key tanpa mengendalikan jalur tersebut akan meninggalkan risiko utama yang spesifik pada AI tetap belum terselesaikan.

Sebelum merutekan permintaan, klasifikasikan payload dan terapkan aturan minimum yang diperlukan:

  • Hapus kredensial, token, cookie, private key, dan connection string.
  • Singkirkan field yang tidak diperlukan oleh model.
  • Tokenisasi atau pseudonimkan pengenal langsung ketika tugas dapat berjalan tanpa pengenal tersebut.
  • Tolak data teratur yang tidak didukung atau dibatasi secara kontraktual.
  • Pisahkan instruksi sistem dari konten pengguna atau konten yang diambil yang tidak tepercaya.
  • Validasi argumen tool sebelum agen dapat memanggil sistem eksternal.

Log memerlukan skema yang eksplisit. Jangan mengandalkan pengembang untuk ingat agar tidak mencatat objek request. Tentukan field mana yang diizinkan, lalu buang atau transformasikan semuanya yang lain.

Event produksi yang berguna dapat berisi:

{
  "request_id": "req_01J...",
  "tenant_id_hash": "tnt_7f2...",
  "workload": "support-chat-api",
  "route_policy": "support-low-risk-v3",
  "provider": "selected-provider",
  "model": "selected-model",
  "input_tokens": 842,
  "output_tokens": 211,
  "latency_ms": 1370,
  "status": 200,
  "key_version": "v12",
  "redaction_policy": "customer-support-v4"
}

Secara default, isinya tidak boleh mencakup authorization header, raw provider key, prompt lengkap, dokumen yang diunggah, argumen tool yang belum disunting, atau output model lengkap. Jika penangkapan payload diperlukan untuk evaluasi atau insiden yang sangat terkontrol, buatlah berbatas waktu, dengan kontrol akses, dan dipisahkan secara jelas dari telemetry rutin.

OWASP Logging Cheat Sheet menyediakan baseline yang berguna untuk mengecualikan access token, password, encryption key, dan data sensitif lainnya dari log aplikasi.

Design zero-downtime API key rotation

Rotasi hanya menjadi kontrol jika dapat dilakukan dengan aman. Runbook yang menyebabkan outage akan ditunda sampai terjadi keadaan darurat.

Gunakan urutan dual-key atau versioned-secret ketika penyedia mendukung kredensial yang saling tumpang tindih:

  1. Buat key provider baru. Terapkan pembatasan yang sama atau lebih sempit daripada key lama.
  2. Simpan sebagai versi secret baru. Jangan menimpa nilai lama di tempat jika platform Anda mendukung versi atau alias.
  3. Deploy pembaca yang menerima versi baru. Perbarui gateway atau workload agar me-resolve alias atau versi saat ini.
  4. Pindahkan traffic dan amati. Pastikan request berhasil, model yang diharapkan, pengeluaran, rate limit, dan tingkat error menggunakan versi key baru.
  5. Hapus consumer lama. Periksa inventaris deployment, job, worker, dan environment disaster-recovery.
  6. Cabut key lama. Jangan hanya berhenti menggunakannya; nonaktifkan di penyedia.
  7. Verifikasi penolakan. Pengujian terkontrol harus memastikan bahwa kredensial lama აღარ berfungsi.
  8. Catat bukti. Simpan timestamp, pemilik, workload yang terdampak, hasil validasi, dan tanggal peninjauan berikutnya.

Untuk sistem yang mendukung pemilihan versi key, aplikasi harus merujuk ke alias yang stabil daripada meng-hard-code versi secret:

type ProviderCredential = {
  value: string;
  version: string;
};

async function loadProviderCredential(): Promise<ProviderCredential> {
  const activeVersion = await secretStore.resolveAlias("ai/provider/active");
  const value = await secretStore.readVersion("ai/provider", activeVersion);

  return { value, version: activeVersion };
}

Jangan mencetak value, men-serialize objek yang dikembalikan, atau melampirkannya ke error. Log hanya pengenal versi yang bukan secret.

OWASP Secrets Management Cheat Sheet merekomendasikan perencanaan seluruh siklus hidup secret, termasuk pembuatan, rotasi, pencabutan, kedaluwarsa, audit, backup, dan akses break-glass. Panduan ini juga menekankan otomasi rotasi jika memungkinkan.

Cegah secret masuk ke repository dan log CI

Secret manager tidak membantu setelah kredensial disalin ke source code, fixture, build artifact, atau transkrip CI.

Gunakan kontrol pada tiga tahap:

Sebelum commit

  • Sediakan file .env.example dengan placeholder, jangan pernah kredensial yang berfungsi.
  • Simpan file secret lokal di luar version control.
  • Jalankan secret scanner yang cepat di pre-commit hooks untuk pola provider umum dan nilai dengan entropi tinggi.
  • Ajarkan developer bahwa menghapus secret di commit berikutnya tidak menghapusnya dari history.

Pada push dan pull request

  • Aktifkan secret scanning repository dan push protection jika tersedia.
  • Tambahkan pola kustom untuk token gateway internal yang tidak akan dikenali oleh scanner publik.
  • Wajibkan alasan bypass yang terdokumentasi dan arahkan bypass ke peninjauan keamanan.
  • Scan file yang dihasilkan, notebook, snapshot pengujian, dan rencana infrastruktur—bukan hanya source aplikasi.

GitHub mendokumentasikan push protection sebagai cara untuk melakukan pemindaian selama proses push dan memblokir secret yang terdeteksi sebelum masuk ke repository. Deteksi bukan alasan untuk mempertahankan key: perlakukan setiap kredensial yang sudah terkonfirmasi ter-commit sebagai terekspos dan lakukan rotasi.

Selama CI/CD

  • Lebih utamakan workload identity atau federasi berumur pendek daripada kredensial cloud yang disimpan.
  • Ekspos secret hanya ke job dan step yang membutuhkannya.
  • Masker nilai secret yang diketahui, tetapi jangan mengandalkan masking sebagai kontrol utama.
  • Nonaktifkan shell tracing di sekitar pengambilan secret.
  • Cegah kode fork tak tepercaya mengakses deployment secrets.
  • Tinjau artifact, cache, crash dump, dan laporan pengujian untuk mencegah penangkapan yang tidak disengaja.

Pantau penggunaan tanpa mencatat secret

Monitoring yang baik menjawab “siapa menggunakan otoritas yang mana?” tanpa merekam otoritas itu sendiri.

Lacak:

  • Workload, environment, tenant atau project, dan versi key.
  • Provider, model, route policy, dan jalur fallback.
  • Jumlah request, volume token, pengeluaran, latensi, dan kelas error.
  • Jaringan sumber atau identitas deployment bila berguna.
  • Akses ke secret manager, termasuk pembacaan yang ditolak.
  • Pembuatan key, perubahan pembatasan, rotasi, pencabutan, dan penghapusan.
  • Penggunaan mendadak dari environment, geografi, model, atau jendela waktu yang tidak terduga.

Atur alert berdasarkan perilaku, bukan hanya total pengeluaran. Key berbiaya rendah yang dicuri tetap dapat membuka prompt atau menyelidiki workflow internal. Sebaliknya, job batch yang sah dapat memicu lonjakan pengeluaran tanpa kompromi kredensial. Korelasikan penggunaan provider dengan request ID aplikasi, keputusan kebijakan gateway, event deployment, dan log audit secret-manager.

Untuk kontrol lalu lintas yang melengkapi kontrol kredensial, gunakan panduan LLM rate limits dan playbook fallback routing LLM API.

Gunakan clock insiden dari paparan ke pencabutan

Ketika sebuah key mungkin terekspos, tujuan pertama adalah penahanan—bukan membuktikan apakah penyerang menggunakannya.

Jalankan urutan ini:

  1. Nyatakan kredensial tersebut sebagai mencurigakan. Catat kapan dan di mana kredensial itu mungkin terekspos.
  2. Buat pengganti melalui jalur terkontrol yang normal. Jangan menempelkan kunci baru ke chat untuk mempercepat insiden.
  3. Pindahkan beban kerja yang sah ke pengganti. Gunakan prosedur rotasi yang telah disiapkan.
  4. Cabut kunci yang mencurigakan. Jika pencabutan segera akan menimbulkan dampak yang tidak dapat diterima, isolasi rute dan kurangi batasan sambil menyelesaikan peralihan.
  5. Cari di setiap lokasi salinan. Periksa riwayat source, log CI, artefak, layer container, sistem dukungan, dashboard, notebook, konfigurasi lokal, dan cadangan.
  6. Tinjau jalur data yang diotorisasi. Tentukan prompt, output, file, alat, atau model mana yang dapat diakses oleh kunci tersebut—bukan hanya cakupan penagihannya.
  7. Korelasikan aktivitas. Bandingkan penggunaan dari provider, log gateway, deployment, pembacaan secret, dan aktivitas pengguna.
  8. Beritahu pemilik yang tepat. Libatkan tim security, platform, legal, privacy, dan customer sesuai dengan data dan kontrak yang terlibat.
  9. Hilangkan akar penyebabnya. Tambahkan scanner yang hilang, pembatasan, batas identitas, atau filter log.
  10. Ukur waktunya. Catat waktu hingga deteksi, penggantian, peralihan traffic, pencabutan, dan verifikasi.

Metrik yang paling dapat ditindaklanjuti sering kali adalah waktu dari paparan ke pencabutan: berapa lama kredensial yang dicurigai tetap dapat digunakan setelah organisasi memiliki bukti yang kredibel tentang paparan. Mengurangi interval itu memerlukan kepemilikan yang telah disiapkan, inventaris, automasi, dan rotasi yang telah diuji—bukan dokumen kebijakan yang lebih panjang.

Arsitektur referensi untuk produk AI multi-provider

Setup multi-provider yang aman dapat disusun menjadi lima lapisan:

  1. Lapisan identitas klien: mengautentikasi pengguna, perangkat, agen, atau aplikasi tanpa mengekspos kredensial provider.
  2. Lapisan otorisasi aplikasi: memverifikasi entitlement produk, batas tenant, akses fitur, dan anggaran.
  3. Lapisan kebijakan data: mengklasifikasikan dan menghapus data sensitif dari prompt, file, konteks yang diambil, dan argumen alat.
  4. Lapisan gateway dan routing: memilih model yang disetujui, menerapkan kuota, mencatat atribusi non-secret, dan menangani failover.
  5. Lapisan kredensial provider: menyimpan kredensial vendor yang terisolasi, merotasi versi, dan hanya mengeksposnya ke workload routing yang tepercaya.

Desain ini membatasi blast radius. Token klien yang disusupi tidak secara otomatis mengungkap kunci provider. Identitas workload yang disusupi tidak boleh memberikan akses ke setiap provider. Kredensial provider yang bocor tidak boleh mengotorisasi setiap environment. Kegagalan logging tidak boleh mengekspos secret sekaligus payload lengkap.

Posisi produk Flatkey adalah satu endpoint yang kompatibel dengan OpenAI dan akses terpadu di berbagai penyedia model. Hal ini dapat mengurangi jumlah integrasi spesifik vendor yang dipelihara aplikasi, tetapi gateway tidak menghilangkan tanggung jawab Anda untuk mengamankan autentikasi klien, mengklasifikasikan data permintaan, mengonfigurasi log, menetapkan pemilik, dan menguji pencabutan. Evaluasi kontrol yang tersedia secara tepat untuk akun dan arsitektur Anda sebelum peluncuran ke produksi. Anda dapat memulai dengan panduan integrasi Flatkey dan meninjau akses model dan harga saat ini.

Daftar periksa produksi

Gunakan daftar periksa ini sebelum peluncuran dan selama tinjauan kontrol triwulanan.

Kepemilikan dan identitas

  • Tidak ada provider key jangka panjang yang dikirim dalam kode browser, mobile, desktop, atau ekstensi.
  • Setiap workload produksi memiliki pemilik dan jalur kredensial yang dapat diidentifikasi.
  • Akses produksi, staging, development, evaluasi, dan lokal dipisahkan.
  • Shared human keys telah diganti dengan identitas workload atau gateway jika memungkinkan.
  • Pembatasan provider dan gateway diatur pada cakupan paling sempit yang praktis.

Penyimpanan dan pengiriman

  • Sumber kebenaran adalah secret store terkelola atau binding deployment yang terkontrol.
  • Aplikasi mengambil secret hanya saat runtime dan tidak mencetak atau menserialisasikannya.
  • Job CI hanya menerima secret yang diperlukan untuk langkah yang diperlukan.
  • Akses secret dan perubahan administratif diaudit.
  • Akses break-glass didokumentasikan, dibatasi waktunya, dan diuji.

Data dan observabilitas

  • Header otorisasi dan nilai key dikecualikan dari log, trace, error, dan ekspor dukungan.
  • Logging prompt, output, file, dan argumen alat mengikuti skema allowlist.
  • Redaksi dilakukan sebelum perutean multi-provider.
  • Penggunaan dapat diatribusikan ke workload, lingkungan, route, provider, model, dan versi key.
  • Alert mencakup route dan identitas yang tidak biasa serta pengeluaran.

Rotasi dan respons

  • Tersedia runbook rotasi dual-key atau secret berversi yang telah diuji.
  • Key lama dicabut di provider dan diverifikasi tidak dapat digunakan.
  • Secret scanning dan push protection mencakup repository dan artefak yang dihasilkan.
  • Dugaan kebocoran memicu penahanan segera tanpa menunggu bukti penyalahgunaan.
  • Waktu dari paparan ke pencabutan diukur setelah latihan dan insiden.

FAQ

Apa itu manajemen API key yang aman untuk produk AI?

Ini adalah praktik mengendalikan seluruh siklus hidup dan jalur permintaan dari kredensial yang digunakan untuk memanggil model AI. Ini mencakup penyimpanan di sisi server, identitas workload, hak akses paling rendah, penyimpanan secret, kebijakan routing, tata kelola prompt dan log, rotasi, pemantauan, dan respons insiden.

Apakah API key AI harus disimpan di variabel lingkungan?

Variabel lingkungan dapat menjadi mekanisme pengiriman, tetapi bukan sistem manajemen yang lengkap. Secret tetap memerlukan sumber kebenaran yang terkontrol, akses deployment yang dibatasi, rotasi, audit, dan perlindungan dari dump proses, log, endpoint debug, dan proses anak yang mewarisinya. Utamakan injeksi secret native platform atau pengambilan saat runtime jika itu meningkatkan kontrol tersebut.

Seberapa sering API key AI harus dirotasi?

Gunakan kemampuan penyedia, model ancaman Anda, kontrak, dan kebijakan internal untuk menentukan intervalnya. Yang lebih penting daripada memilih angka kalender secara sembarang adalah membuktikan bahwa rotasi diotomatisasi atau dilatih, kunci lama dicabut, kunci yang dicurigai dapat diganti segera, dan kredensial usang tidak dapat bertahan tanpa terdeteksi.

Bisakah browser memanggil penyedia AI secara langsung dengan kunci terbatas?

Beberapa penyedia mendukung pembatasan sisi klien untuk API tertentu, tetapi produk AI produksi harus berasumsi bahwa kredensial yang dikirim ke aplikasi dapat dipulihkan. Backend atau gateway biasanya memberikan kontrol yang lebih kuat atas otorisasi pengguna, kuota, penyuntingan prompt, pemilihan penyedia, respons terhadap penyalahgunaan, dan pencabutan kunci.

Apakah satu kunci gateway lebih aman daripada banyak kunci penyedia?

Ini dapat mengurangi penyebaran kredensial di kode aplikasi, tetapi memusatkan otoritas pada gateway. Kredensial gateway harus dibatasi ruang lingkupnya, dapat ditelusuri ke sumbernya, diberi rate limit, dipantau, dapat dirotasi, dan dilindungi dari klien. Kredensial penyedia di belakangnya tetap memerlukan isolasi dan manajemen siklus hidup.

Apa yang harus kami lakukan jika kunci API muncul di riwayat Git?

Anggap itu sebagai kompromi. Cabut atau rotasi kunci tersebut, ganti konsumen yang sah, tinjau aktivitas penyedia dan gateway, hapus nilainya dari branch aktif dan artefak yang relevan, serta tambahkan pemindaian pencegahan. Menulis ulang riwayat tidak membuat kredensial yang masih valid menjadi aman.

Sumber dan bacaan lebih lanjut