Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membangun agen AI yang aman adalah tanggung jawab bersama antara Kerangka Kerja Agen dan pengembang aplikasi. Agent Framework menyediakan blok penyusun — abstraksi, penyedia, dan orkestrasi — tetapi pengembang bertanggung jawab untuk memvalidasi input, mengamankan aliran data, dan mengonfigurasi alat dengan tepat untuk skenario mereka.
Artikel ini menguraikan praktik terbaik untuk membangun agen yang aman dan aman dengan Agent Framework.
Memahami batas kepercayaan
Data mengalir melalui beberapa komponen saat agen berjalan: input pengguna, penyedia riwayat obrolan, penyedia konteks, layanan LLM, dan alat fungsi. Setiap batas tempat data masuk atau keluar dari aplikasi Anda mewakili permukaan serangan potensial.
Batas kepercayaan utama untuk dipertimbangkan:
- Layanan AI — Menerima pesan obrolan (yang mungkin mencakup PII dan instruksi sistem) dan mengembalikan output yang dihasilkan LLM.
- Penyimpanan riwayat obrolan — Penyedia dapat memuat dan mempertahankan pesan percakapan melalui penyimpanan eksternal.
- Layanan konteks — Penyedia konteks dapat mengambil atau menyimpan data dari layanan eksternal (memori, profil pengguna, hasil RAG).
- Layanan yang diakses alat — Alat fungsi menjalankan kode yang disediakan pengembang yang dapat memanggil API atau database eksternal.
Semua komunikasi layanan eksternal ditangani oleh SDK klien yang dipilih pengembang. Agent Framework tidak mengelola detail autentikasi, enkripsi, atau koneksi untuk layanan ini.
Praktik terbaik
Memvalidasi input fungsi
AI dapat memanggil fungsi apa pun yang Anda berikan sebagai alat dan memilih argumen. Perlakukan argumen yang disediakan LLM sebagai input yang tidak tepercaya, mirip dengan input pengguna di API web.
-
Gunakan daftar izin — Validasi input terhadap nilai yang diketahui baik daripada mencoba memfilter pola yang diketahui buruk. Misalnya, pastikan bahwa jalur file berada dalam direktori yang diizinkan ketimbang memeriksa
..urutan traversal. - Menerapkan batasan jenis dan rentang — Verifikasi bahwa argumen adalah jenis yang diharapkan dan dalam rentang yang dapat diterima (batas numerik, batas panjang string, rentang tanggal).
- Batasi panjang string — Terapkan panjang maksimum pada argumen string untuk mencegah kelelahan sumber daya atau serangan injeksi.
- Cegah penelusuran jalur — Ketika fungsi menerima jalur file, selesaikan ke jalur absolut dan verifikasi bahwa jalur tersebut berada dalam direktori yang diizinkan.
- Gunakan kueri berparameter — Jika argumen digunakan dalam kueri SQL, perintah shell, atau konteks lain yang ditafsirkan, gunakan kueri berparameter atau melarikan diri — jangan pernah perangkaian string.
Memerlukan persetujuan untuk alat berisiko tinggi
Secara default, semua alat yang disediakan untuk agen dipanggil tanpa persetujuan pengguna. Gunakan mekanisme persetujuan alat untuk membatasi operasi berisiko tinggi dengan konfirmasi manusia.
Saat memutuskan alat mana yang memerlukan persetujuan, pertimbangkan:
- Efek samping — Alat yang memodifikasi data, mengirim komunikasi, melakukan pembelian, atau memiliki efek samping lainnya umumnya harus memerlukan persetujuan.
- Sensitivitas data — Alat yang mengakses atau mengembalikan data sensitif (PII, data keuangan, kredensial) memerlukan persetujuan.
- Reversibilitas — Operasi yang tidak dapat diubah (penghapusan, pengiriman email) berisiko lebih tinggi daripada kueri baca-saja.
- Cakupan dampak — Alat dengan dampak luas (operasi massal) harus memerlukan lebih banyak pengamatan daripada yang terlingkup sempit.
Menjaga pesan sistem tetap terkontrol pengembang
Pesan obrolan membawa peran (system, user, assistant, tool) yang menentukan bagaimana layanan AI menafsirkannya. Memahami peran ini sangat penting:
| Peranan | Tingkat kepercayaan |
|---|---|
system |
Kepercayaan tertinggi - Secara langsung membentuk perilaku LLM. Tidak boleh berisi input yang tidak tepercaya. |
user |
Tidak tepercaya — Mungkin berisi upaya injeksi perintah atau konten berbahaya. |
assistant |
Tidak tepercaya — Dihasilkan oleh LLM, yang merupakan sistem eksternal. |
tool |
Tidak tepercaya — Mungkin berisi data dari sistem eksternal atau konten yang dipengaruhi pengguna. |
Jangan tempatkan input pengguna akhir ke dalam pesan system-role. Agent Framework secara default mengatur teks tidak tertulis ke fungsi user, tetapi berhati-hatilah saat membuat pesan secara programatik.
Penyedia ekstensi dokter hewan
Penyedia konteks dan penyedia riwayat dapat menyuntikkan pesan dengan peran apa pun, termasuk system. Hanya tambahkan penyedia yang Anda percayai.
Harap waspada terhadap injeksi prompt tidak langsung: jika penyimpanan data yang mendasari disusupi, konten yang membahayakan dapat mempengaruhi perilaku LLM (Model Bahasa Besar). Misalnya, dokumen yang diambil melalui RAG dapat berisi instruksi tersembunyi yang menyebabkan LLM menyimpang dari perilaku yang dimaksudkan atau menyelundupkan data melalui panggilan alat.
Memvalidasi dan membersihkan output LLM
Respons LLM harus diperlakukan sebagai output yang tidak tepercaya. Layanan AI adalah titik akhir eksternal yang tidak dikontrol Oleh Kerangka Kerja Agen. Waspadalah terhadap:
- Halusinasi — LLM dapat menghasilkan informasi yang terdengar masuk akal tetapi secara faktual salah. Jangan perlakukan output LLM sebagai otoritatif tanpa verifikasi.
- Injeksi prompt tidak langsung — Data yang diambil oleh alat, penyedia konteks, atau penyedia riwayat obrolan mungkin berisi konten adversarial yang dirancang untuk memengaruhi LLM.
- Payload berbahaya — Output LLM mungkin berisi konten yang berbahaya jika dirender atau dijalankan tanpa sanitasi (HTML/JavaScript untuk XSS, SQL untuk injeksi, perintah shell).
Selalu validasi dan bersihkan output LLM sebelum merendernya dalam HTML, menjalankannya sebagai kode, menggunakannya dalam kueri database, atau meneruskannya ke konteks sensitif keamanan apa pun.
Melindungi data sensitif dalam log
Agent Framework mendukung pengelogan dan telemetri melalui OpenTelemetry. Data sensitif hanya dicatat saat diaktifkan secara eksplisit:
- Pencatatan log — Pada level log
Trace, koleksi penuhChatMessagesdicatat. Ini dapat mencakup PII (informasi pribadi yang dapat diidentifikasi).Tracetingkat tidak boleh diaktifkan dalam produksi. -
Telemetri — Ketika
EnableSensitiveDatatelah diatur, telemetri akan mencakup teks lengkap dari pesan obrolan, termasuk panggilan fungsi dan hasilnya. Jangan aktifkan ini dalam produksi.
Mengamankan data sesi
Sesi (AgentSession) mewakili konteks percakapan dan dapat diserialisasikan untuk persistensi. Perlakukan sesi berseri sebagai data sensitif:
- Sesi dapat mereferensikan konten percakapan atau pengidentifikasi sesi.
- Memulihkan sesi dari sumber yang tidak tepercaya setara dengan menerima input yang tidak tepercaya. Backend penyimpanan yang disusupi dapat mengubah peran untuk meningkatkan level kepercayaan.
- Simpan sesi dalam penyimpanan yang aman dengan pengontrolan akses dan enkripsi yang sesuai.
Menerapkan batas sumber daya
Kerangka Kerja Agen tidak memberlakukan batasan pada panjang input/output atau tingkat permintaan, karena tidak tahu apa yang wajar untuk skenario Anda. Anda bertanggung jawab untuk:
- Batas panjang input — Batasi panjang input untuk mencegah luapan konteks atau serangan DoS.
-
Batas panjang output — Gunakan batas yang disediakan layanan (misalnya,
MaxOutputTokensdalam opsi obrolan). - Pembatasan tarif — Gunakan fasilitas pembatasan tarif untuk mencegah overrun biaya dan penyalahgunaan dari permintaan bersamaan.