Praktik terbaik untuk mengamankan interaksi agen dengan Model Context Protocol
Model Context Protocol (MCP) menstandardisasi cara agen AI generatif terhubung ke Firestore.
Karena risiko inheren agen otonom,
memitigasi kerentanan seperti injeksi perintah memerlukan model
tanggung jawab bersama, yang menggabungkan kontrol platform dengan desain
aplikasi yang aman.
Untuk mendesain dan men-deploy aplikasi AI yang menggunakan alat Model Context Protocol (MCP), ikuti praktik terbaik dalam panduan ini. Google Cloud
Sebelum memulai
Saat Anda menggunakan alat MCP, postur keamanan aplikasi Anda bergantung pada model interaksi agen. Untuk mempelajari pengaruh penggunaan agen terhadap risiko keamanan yang terkait dengan mengintegrasikan agen dengan server MCP, lihat Keamanan dan keselamatan AI.
Tanggung jawab keamanan
Sebagai pelanggan, Anda bertanggung jawab atas konfigurasi dan operasi yang aman dari platform agen Anda.
Mengikuti prinsip hak istimewa terendah
Jalankan agen Anda dengan akun layanan yang memiliki cakupan minimal. Ini adalah lapisan pertahanan pertama dan paling penting.
- Identitas khusus: Buat akun layanan khusus yang terpisah untuk setiap agen atau aplikasi unik menggunakan alat MCP. Jangan menggunakan kembali SA yang ada, terutama yang memiliki izin luas.
- Cakupan minimal: Berikan hanya peran Identity and Access Management (IAM) yang diperlukan kepada akun layanan—misalnya,
alloydb.viewer, bukanalloydb.admin. Jika agen hanya memerlukan akses baca ke set data tertentu, gunakan peran IAM kustom untuk membatasi akses ke minimum mutlak yang diperlukan untuk fungsinya. - Pemisahan tugas: Jika agen memerlukan akses baca ke data dan akses tulis ke log atau penyimpanan sementara, gunakan dua akun layanan terpisah—satu akun untuk akses data berisiko tinggi (dengan cakupan minimal) dan satu akun untuk tugas operasional berisiko rendah.
Menggunakan kontrol terperinci native database
Untuk pertahanan terkuat, gabungkan peran IAM dengan kontrol akses terperinci yang ditawarkan oleh database itu sendiri. Hal ini memastikan bahwa meskipun penyerang
membahayakan token IAM agen, cakupan kerusakan dibatasi oleh
izin internal mesin database—misalnya, mencegah DROP TABLE
Produk |
Mekanisme Kontrol Terperinci |
Fokus |
|---|---|---|
Cloud SQL dan AlloyDB |
Peran tingkat database seperti CREATE ROLE di PostgreSQL dan MySQL. |
Mengelola izin dalam instance dan skema database tertentu. |
BigQuery |
Kontrol Akses Tingkat Kolom (menggunakan tag kebijakan) |
Membatasi akses agen ke kolom sensitif—misalnya, PII— bahkan dalam tabel yang diizinkan. |
Spanner |
Kontrol Akses Terperinci (Peran database dengan GRANT/REVOKE) |
Menerapkan izin baca/tulis/perbarui yang tepat pada tabel dan kolom. |
Firestore |
Aturan Keamanan Firestore |
Membatasi akses tingkat dokumen atau tingkat kolom berdasarkan logika aplikasi atau konteks pengguna yang meminta. |
Bigtable |
Peran IAM |
Bigtable menawarkan kontrol terperinci melalui peran IAM di tingkat project, instance, dan tabel. |
Desain agen yang aman
Model Khusus Agen memerlukan pertahanan tingkat aplikasi yang kuat terhadap serangan injeksi perintah, yang berupaya mengganti perintah sistem. Untuk mengetahui informasi selengkapnya, lihat Keamanan dan keselamatan AI.
Perlakukan data dan input pengguna sebagai tidak tepercaya
Perlakukan input dari pengguna akhir, atau data yang diambil oleh agen dari sumber eksternal—seperti hasil penelusuran web atau dokumen pihak ketiga—sebagai tidak tepercaya.
Menerapkan pola pemilihan tindakan
Hindari arsitektur rencana dan eksekusi yang tidak memiliki batasan, yang memisahkan spesifikasi tugas tingkat tinggi dari eksekusi mekanis. Sebagai gantinya, gunakan pola desain yang membatasi kebebasan model.
- Pola pemilih tindakan: satu-satunya tugas model adalah menerjemahkan permintaan pengguna ke dalam salah satu dari sekumpulan kecil fungsi aman yang telah ditentukan sebelumnya. Logika tindakan dikodekan secara permanen dan tidak dapat diubah oleh LLM. Hal ini membantu membuat agen kebal terhadap serangan injeksi yang menargetkan alur kontrol.
- Pola LLM ganda: menggunakan LLM utama (LLM tindakan) yang melakukan tugas inti, dan LLM sekunder yang sangat aman (LLM pembatas) yang melakukan prapenyaringan perintah pengguna untuk mendeteksi niat jahat dan pascapenyaringan output LLM tindakan untuk mendeteksi tindakan yang tidak sah atau kebocoran data.
Mencegah rangkaian alat yang tidak sah
Agen hanya boleh memanggil alat yang diperlukan untuk tugas tersebut. Pastikan kode orkestrasi Anda mencegah hal berikut:
- Alat dinamis: agen tidak boleh dapat mendaftarkan alat baru secara dinamis atau mengubah izin alat yang ada.
- Penerapan daftar yang diizinkan: mendeklarasikan daftar yang diizinkan untuk fungsi atau tabel database yang dapat diakses oleh agen dalam perintah sistem awal dan kode backend-nya. Untuk contoh Gemini CLI, lihat Membatasi Akses Alat.
Konfigurasi keamanan dan keselamatan
Firestore menyediakan Model Armor untuk menerapkan batas keamanan di tingkat platform. Anda harus mengaktifkan dan mengonfigurasi setelan ini.
Mengaktifkan Model Armor
Gunakan Google Cloud CLI untuk mengaktifkan Model Armor pada deployment model Anda. Tindakan ini mengaktifkan perlindungan bawaan terhadap vektor serangan yang diketahui seperti injeksi dan jailbreak.
Contoh berikut mengaktifkan Model Armor di endpoint Vertex AI.
# Example: Enable Model Armor on a Vertex AI endpoint
gcloud ai endpoints update ENDPOINT_ID \
--region=REGION \
--enable-model-armor
Untuk mengetahui informasi dan contoh selengkapnya, lihat Mengonfigurasi perlindungan Model Armor untuk MCP di Google Cloud.
Menerapkan volume minimum data untuk operasi data sensitif
Model Armor memungkinkan Anda menerapkan nilai minimum keamanan untuk operasi data sensitif—misalnya, deteksi dan penghilangan identitas informasi identitas pribadi (PII). Gunakan Sensitive Data Protection DeidentifyTemplate
untuk menyamarkan atau menutupi informasi sensitif sebelum ditampilkan kepada pengguna, meskipun
modelnya disusupi.
Berikut adalah contoh konseptual untuk konfigurasi:
# Example: Apply a DeidentifyTemplate to filter PII
gcloud ai endpoints update ENDPOINT_ID \
--region=REGION \
--model-armor-config-file=model_armor_config.json
Dalam contoh berikut, model_armor_config.json dapat mereferensikan template DLP:
{
"safety_thresholds": {
"injection": "HIGH",
"harmful_content": "MEDIUM"
},
"data_protection_config": {
"dlp_deidentify_template": "projects/PROJECT_NUMBER/locations/LOCATION/deidentifyTemplates/DLP_TEMPLATE_ID"
}
}
Audit dan kemampuan observasi
Visibilitas ke dalam tindakan agen sangat penting untuk analisis pasca-insiden dan deteksi agen yang disusupi.
Menerapkan strategi pemulihan data
Meskipun kontrol berlapis seperti IAM dan peran native database dirancang untuk mencegah tindakan merusak, Anda harus memiliki rencana pemulihan jika pertahanan tersebut gagal. Agen yang disusupi atau tidak berpengalaman dengan izin tulis (risiko "Khusus Agen") dapat ditipu untuk menjalankan perintah destruktif seperti DROP TABLE atau merusak data.
Pertahanan utama Anda terhadap skenario ini adalah strategi pemulihan yang kuat.
Hampir semua produk Data Cloud menyediakan fitur untuk pemulihan data, baik melalui pencadangan tradisional, pemulihan point-in-time (PITR), atau snapshot data. Anda bertanggung jawab untuk mengaktifkan dan mengonfigurasi fitur ini.
| Produk | Mekanisme pencadangan dan pemulihan |
|---|---|
| Cloud SQL | Mendukung pencadangan sesuai permintaan dan otomatis, sehingga Anda dapat memulihkan instance ke status sebelumnya. Selain itu, fitur ini mendukung Pemulihan Point-in-Time (PITR). |
| AlloyDB | Menyediakan pencadangan dan pemulihan berkelanjutan secara default. Hal ini memungkinkan PITR dengan perincian mikrodetik, sehingga Anda dapat memulihkan cluster ke waktu apa pun dalam periode retensi. |
| BigQuery | Pemulihan data dilakukan menggunakan "Perjalanan Waktu", yang memungkinkan Anda mengakses dan memulihkan data dari titik mana pun dalam 7 hari terakhir. Untuk retensi jangka panjang, Anda dapat membuat Snapshot Tabel. |
| Spanner | Mendukung pencadangan sesuai permintaan dan PITR. |
| Firestore | Mendukung ekspor/impor terkelola sebagai cadangan. Layanan ini juga menawarkan PITR—dinonaktifkan secara default—untuk melindungi dari penghapusan atau penulisan yang tidak disengaja. |
| Bigtable | Mendukung pencadangan sesuai permintaan dan otomatis. Cadangan ini dikelola sepenuhnya dan dapat dipulihkan ke tabel baru. |
Mengaktifkan Cloud Audit Logs
Pastikan Log audit Akses Data diaktifkan untuk MCP serta semua layanan Google Cloud yang relevan seperti BigQuery, Cloud SQL, AlloyDB, dan Spanner. Secara default, hanya log audit Aktivitas Admin yang diaktifkan. Log audit Akses Data mencatat setiap operasi baca dan tulis yang dilakukan oleh agen. Untuk mengetahui informasi selengkapnya, lihat Log audit akses data untuk MCP.
Mengaudit tindakan sensitif
Konfigurasi pemberitahuan di Cloud Logging untuk mendeteksi tindakan yang anomali atau berisiko tinggi. Kueri Logs Explorer mengidentifikasi akun layanan yang melakukan operasi penulisan data di Firestore, misalnya, yang merupakan target umum untuk eksfiltrasi atau serangan destruktif:
resource.type="firestore_database" # Filter for data write operations AND protoPayload.methodName="google.firestore.v1.Firestore.Commit" # Ensure the caller is an agent service account (modify regex as needed) AND protoPayload.authenticationInfo.principalEmail=~".*@.*.gserviceaccount.com" # Exclude expected system calls to reduce noise AND NOT protoPayload.authenticationInfo.principalEmail=~"system-managed-service-account"
Menggunakan logging khusus agen
Selain Cloud Audit Logs, pastikan kode aplikasi Anda mencatat data berikut untuk setiap keputusan agen:
- Eksekusi alat: alat MCP yang dipanggil.
- Perintah mentah: perintah persisnya—misalnya, kueri SQL atau jalur dokumen—yang dihasilkan oleh LLM.
- Tindakan akhir: apakah tindakan dieksekusi (model Khusus Agen) atau disetujui (Human-in-the-Middle). Untuk mengetahui informasi selengkapnya, lihat Memahami penggunaan agen.
- ID pengguna dan sesi: ID untuk pengguna akhir yang memulai permintaan.