Penjelasan Milvus RBAC: Amankan Basis Data Vektor Anda dengan Kontrol Akses Berbasis Peran
Ketika membangun sistem database, para insinyur menghabiskan sebagian besar waktu mereka untuk performa: jenis indeks, pemanggilan, latensi, throughput, dan penskalaan. Namun, ketika sebuah sistem sudah melampaui satu laptop pengembang, pertanyaan lain menjadi sama pentingnya: siapa yang bisa melakukan apa di dalam cluster Milvus Anda? Dengan kata lain-kontrol akses.
Di seluruh industri, banyak insiden operasional yang berasal dari kesalahan izin yang sederhana. Sebuah skrip berjalan di lingkungan yang salah. Akun layanan memiliki akses yang lebih luas dari yang dimaksudkan. Kredensial admin yang digunakan bersama berakhir di CI. Masalah-masalah ini biasanya muncul sebagai pertanyaan yang sangat praktis:
Apakah pengembang diizinkan untuk menghapus koleksi produksi?
Mengapa akun uji coba dapat membaca data vektor produksi?
Mengapa beberapa layanan masuk dengan peran admin yang sama?
Dapatkah pekerjaan analitik memiliki akses hanya-baca tanpa hak tulis?
Milvus menjawab tantangan-tantangan ini dengan kontrol akses berbasis peran (RBAC). Alih-alih memberikan hak superadmin kepada setiap pengguna atau mencoba menerapkan pembatasan dalam kode aplikasi, RBAC memungkinkan Anda menentukan izin yang tepat di lapisan database. Setiap pengguna atau layanan mendapatkan kemampuan yang dibutuhkannya-tidak lebih.
Tulisan ini menjelaskan cara kerja RBAC di Milvus, cara mengonfigurasinya, dan cara menerapkannya dengan aman di lingkungan produksi.
Mengapa Kontrol Akses Penting Saat Menggunakan Milvus
Ketika tim kecil, dan aplikasi AI mereka hanya melayani sejumlah pengguna, infrastruktur biasanya sederhana. Beberapa insinyur mengelola sistem; Milvus hanya digunakan untuk pengembangan atau pengujian; dan alur kerja operasional sangat mudah. Pada tahap awal ini, kontrol akses jarang terasa mendesak-karena risiko yang ada masih kecil dan setiap kesalahan bisa dengan mudah dibalik.
Ketika Milvus memasuki tahap produksi dan jumlah pengguna, layanan, dan operator bertambah, model penggunaan berubah dengan cepat. Skenario yang umum terjadi meliputi:
Beberapa sistem bisnis yang berbagi instance Milvus yang sama
Beberapa tim mengakses koleksi vektor yang sama
Data pengujian, pementasan, dan produksi yang hidup berdampingan dalam satu cluster
Peran yang berbeda membutuhkan tingkat akses yang berbeda, mulai dari kueri hanya-baca hingga menulis dan kontrol operasional
Tanpa batas akses yang terdefinisi dengan baik, pengaturan ini menciptakan risiko yang dapat diprediksi:
Alur kerja pengujian mungkin secara tidak sengaja menghapus koleksi produksi
Pengembang mungkin secara tidak sengaja memodifikasi indeks yang digunakan oleh layanan live
Penggunaan akun
rootsecara luas membuat tindakan tidak mungkin dilacak atau diauditAplikasi yang disusupi dapat memperoleh akses tak terbatas ke semua data vektor
Seiring dengan meningkatnya penggunaan, mengandalkan konvensi informal atau akun admin bersama tidak lagi dapat dipertahankan. Model akses yang konsisten dan dapat ditegakkan menjadi sangat penting - dan inilah yang disediakan oleh Milvus RBAC.
Apa yang dimaksud dengan RBAC di Milvus
RBAC (Role-Based Access Control) adalah model perizinan yang mengontrol akses berdasarkan peran, bukannya berdasarkan pengguna individual. Di Milvus, RBAC memungkinkan Anda menentukan dengan tepat operasi mana yang diizinkan untuk dilakukan oleh pengguna atau layanan - dan pada sumber daya tertentu. Ini menyediakan cara yang terstruktur dan terukur untuk mengelola keamanan seiring pertumbuhan sistem Anda dari satu pengembang menjadi lingkungan produksi yang lengkap.
Milvus RBAC dibangun di sekitar komponen inti berikut ini:
Hak Istimewa Peran Pengguna
Sumber daya: Entitas yang sedang diakses. Di Milvus, sumber daya mencakup instance, database, dan koleksi.
Privilege: Operasi spesifik yang diizinkan pada sumber daya-misalnya, membuat koleksi, menyisipkan data, atau menghapus entitas.
Privilege Group: Sekumpulan hak istimewa terkait yang sudah ditentukan sebelumnya, seperti "hanya-baca" atau "tulis".
Peran: Kombinasi hak istimewa dan sumber daya yang digunakan. Peran menentukan operasi apa yang dapat dilakukan dan di mana.
Pengguna: Sebuah identitas dalam Milvus. Setiap pengguna memiliki ID unik dan diberikan satu atau lebih peran.
Komponen-komponen ini membentuk hierarki yang jelas:
Pengguna diberi peran
Peran menentukan hak istimewa
Hak istimewa berlaku untuk sumber daya tertentu
Prinsip desain utama dalam Milvus adalah bahwa hak akses tidak pernah diberikan secara langsung kepada pengguna. Semua akses melalui peran. Pengarahan ini menyederhanakan administrasi, mengurangi kesalahan konfigurasi, dan membuat perubahan izin dapat diprediksi.
Model ini berskala bersih dalam penerapan nyata. Ketika beberapa pengguna berbagi peran, memperbarui hak istimewa peran akan langsung memperbarui izin untuk semuanya-tanpa mengubah setiap pengguna satu per satu. Ini adalah satu titik kontrol yang selaras dengan cara infrastruktur modern mengelola akses.
Cara Kerja RBAC di Milvus
Ketika klien mengirimkan permintaan ke Milvus, sistem akan mengevaluasinya melalui serangkaian langkah otorisasi. Setiap langkah harus dilalui sebelum operasi diizinkan untuk dilanjutkan:
Cara Kerja RBAC di Milvus
Autentikasi permintaan: Milvus pertama-tama memverifikasi identitas pengguna. Jika autentikasi gagal, permintaan akan ditolak dengan kesalahan autentikasi.
Periksa penetapan peran: Setelah autentikasi, Milvus memeriksa apakah pengguna memiliki setidaknya satu peran yang ditetapkan. Jika tidak ada peran yang ditemukan, permintaan akan ditolak dengan kesalahan izin ditolak.
Verifikasi hak istimewa yang diperlukan: Milvus kemudian mengevaluasi apakah peran pengguna memberikan hak istimewa yang diperlukan pada sumber daya target. Jika pemeriksaan hak istimewa gagal, permintaan ditolak dengan kesalahan izin ditolak.
Jalankan operasi: Jika semua pemeriksaan lolos, Milvus akan mengeksekusi operasi yang diminta dan mengembalikan hasilnya.
Cara Mengonfigurasi Kontrol Akses melalui RBAC di Milvus
1. Prasyarat
Sebelum aturan RBAC dapat dievaluasi dan ditegakkan, otentikasi pengguna harus diaktifkan sehingga setiap permintaan ke Milvus dapat dikaitkan dengan identitas pengguna tertentu.
Berikut adalah dua metode penerapan standar.
- Menerapkan dengan Docker Compose
Jika Milvus diterapkan menggunakan Docker Compose, edit berkas konfigurasi milvus.yaml dan aktifkan otorisasi dengan mengatur common.security.authorizationEnabled ke true:
common:
security:
authorizationEnabled: true
- Menerapkan dengan Helm Charts
Jika Milvus diterapkan menggunakan Helm Charts, edit berkas values.yaml dan tambahkan konfigurasi berikut di bawah extraConfigFiles.user.yaml:
extraConfigFiles:
user.yaml: |+
common:
security:
authorizationEnabled: true
2. Inisialisasi
Secara default, Milvus membuat pengguna root bawaan ketika sistem dijalankan. Kata sandi default untuk pengguna ini adalah Milvus.
Sebagai langkah keamanan awal, gunakan user root untuk terhubung ke Milvus dan segera ubah kata sandi default. Sangat disarankan untuk menggunakan kata sandi yang rumit untuk mencegah akses yang tidak sah.
from pymilvus import MilvusClient
# Connect to Milvus using the default root user
client = MilvusClient(
uri='http://localhost:19530',
token="root:Milvus"
)
# Update the root password
client.update_password(
user_name="root",
old_password="Milvus",
new_password="xgOoLudt3Kc#Pq68"
)
3. Operasi Inti
Membuat Pengguna
Untuk penggunaan sehari-hari, disarankan untuk membuat pengguna khusus daripada menggunakan akun root.
client.create_user(user_name="user_1", password="P@ssw0rd")
Membuat Peran
Milvus menyediakan peran admin bawaan dengan hak administratif penuh. Namun, untuk sebagian besar skenario produksi, disarankan untuk membuat peran khusus untuk mencapai kontrol akses yang lebih baik.
client.create_role(role_name="role_a")
Membuat Grup Hak Istimewa
Grup hak istimewa adalah kumpulan beberapa hak istimewa. Untuk menyederhanakan manajemen izin, hak istimewa terkait dapat dikelompokkan dan diberikan bersama-sama.
Milvus menyertakan grup hak istimewa bawaan berikut ini:
COLL_RO,COLL_RW,COLL_ADMINDB_RO,DB_RW,DB_ADMINCluster_RO,Cluster_RW,Cluster_ADMIN
Menggunakan grup hak istimewa bawaan ini dapat secara signifikan mengurangi kerumitan desain izin dan meningkatkan konsistensi di seluruh peran.
Anda dapat menggunakan grup hak istimewa bawaan secara langsung atau membuat grup hak istimewa khusus sesuai kebutuhan.
# Create a privilege group
client.create_privilege_group(group_name='privilege_group_1')
# Add privileges to the privilege group
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])
Memberikan Hak Istimewa atau Grup Hak Istimewa ke Peran
Setelah peran dibuat, hak istimewa atau grup hak istimewa dapat diberikan ke peran tersebut. Sumber daya target untuk hak istimewa ini dapat ditentukan pada tingkat yang berbeda, termasuk instance, database, atau Koleksi individual.
client.grant_privilege_v2(
role_name="role_a",
privilege="Search",
collection_name='collection_01',
db_name='default',
)
client.grant_privilege_v2(
role_name="role_a",
privilege="privilege_group_1",
collection_name='collection_01',
db_name='default',
)
client.grant_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly",
collection_name='*',
db_name='*',
)
Memberikan Peran kepada Pengguna
Setelah peran diberikan kepada pengguna, pengguna dapat mengakses sumber daya dan melakukan operasi yang ditentukan oleh peran tersebut. Satu pengguna dapat diberikan satu atau beberapa peran, tergantung pada cakupan akses yang diperlukan.
client.grant_role(user_name="user_1", role_name="role_a")
4. Memeriksa dan Mencabut Akses
Memeriksa Peran yang Ditugaskan ke Pengguna
client.describe_user(user_name="user_1")
Memeriksa Hak Istimewa yang Ditugaskan ke Peran
client.describe_role(role_name="role_a")
Mencabut Hak Istimewa dari Peran
client.revoke_privilege_v2(
role_name="role_a",
privilege="Search",
collection_name='collection_01',
db_name='default',
)
client.revoke_privilege_v2(
role_name="role_a",
privilege="privilege_group_1",
collection_name='collection_01',
db_name='default',
)
Mencabut Peran dari Pengguna
client.revoke_role(
user_name='user_1',
role_name='role_a'
)
Menghapus Pengguna dan Peran
client.drop_user(user_name="user_1")
client.drop_role(role_name="role_a")
Contoh: Desain Kontrol Akses untuk Sistem RAG yang Didukung Milvus
Pertimbangkan sistem Retrieval-Augmented Generation (RAG) yang dibangun di atas Milvus.
Dalam sistem ini, komponen dan pengguna yang berbeda memiliki tanggung jawab yang terpisah dengan jelas, dan masing-masing membutuhkan tingkat akses yang berbeda.
| Aktor | Tanggung Jawab | Akses yang Dibutuhkan |
|---|---|---|
| Administrator Platform | Operasi dan konfigurasi sistem | Administrasi tingkat instansi |
| Layanan Konsumsi Vektor | Konsumsi dan pembaruan data vektor | Akses baca dan tulis |
| Layanan Pencarian | Pencarian dan pengambilan vektor | Akses hanya-baca |
from pymilvus import MilvusClient
client = MilvusClient(
uri='http://localhost:19530',
token="root:xxx" # Replace with the updated root password
)
# 1. Create a user (use a strong password)
client.create_user(user_name="rag_admin", password="xxx")
client.create_user(user_name="rag_reader", password="xxx")
client.create_user(user_name="rag_writer", password="xxx")
# 2. Create roles
client.create_role(role_name="role_admin")
client.create_role(role_name="role_read_only")
client.create_role(role_name="role_read_write")
# 3. Grant privileges to the role
## Using built-in Milvus privilege groups
client.grant_privilege_v2(
role_name="role_admin",
privilege="Cluster_Admin",
collection_name='*',
db_name='*',
)
client.grant_privilege_v2(
role_name="role_read_only",
privilege="COLL_RO",
collection_name='*',
db_name='default',
)
client.grant_privilege_v2(
role_name="role_read_write",
privilege="COLL_RW",
collection_name='*',
db_name='default',
)
# 4. Assign the role to the user
client.grant_role(user_name="rag_admin", role_name="role_admin")
client.grant_role(user_name="rag_reader", role_name="role_read_only")
client.grant_role(user_name="rag_writer", role_name="role_read_write")
Kiat Cepat: Cara Mengoperasikan Kontrol Akses dengan Aman dalam Produksi
Untuk memastikan kontrol akses tetap efektif dan dapat dikelola dalam sistem produksi yang sudah berjalan lama, ikuti panduan praktis berikut ini.
1. Ubah kata sandidefault root dan batasi penggunaan akun root
Perbarui kata sandi default root segera setelah inisialisasi dan batasi penggunaannya hanya untuk tugas-tugas administratif. Hindari menggunakan atau berbagi akun root untuk operasi rutin. Sebaliknya, buatlah pengguna dan peran khusus untuk akses sehari-hari untuk mengurangi risiko dan meningkatkan akuntabilitas.
2. Mengisolasi instance Milvus secara fisik di seluruh lingkungan
Menerapkan instance Milvus yang terpisah untuk pengembangan, pementasan, dan produksi. Isolasi fisik memberikan batas keamanan yang lebih kuat daripada kontrol akses logis saja dan secara signifikan mengurangi risiko kesalahan lintas lingkungan.
3. Ikuti prinsip hak istimewa yang paling sedikit
Berikan hanya izin yang diperlukan untuk setiap peran:
Lingkungan pengembangan: izin bisa lebih longgar untuk mendukung iterasi dan pengujian
Lingkungan produksi: izin harus dibatasi secara ketat pada apa yang diperlukan
Audit rutin: tinjau izin yang ada secara berkala untuk memastikan bahwa izin tersebut masih diperlukan
4. Secara aktif mencabut izin ketika tidak lagi diperlukan
Kontrol akses bukanlah pengaturan sekali jadi-ini membutuhkan pemeliharaan berkelanjutan. Cabut peran dan hak istimewa dengan segera ketika pengguna, layanan, atau tanggung jawab berubah. Hal ini mencegah izin yang tidak terpakai terakumulasi dari waktu ke waktu dan menjadi risiko keamanan yang tersembunyi.
Kesimpulan
Mengonfigurasi kontrol akses di Milvus tidaklah rumit, tetapi sangat penting untuk mengoperasikan sistem dengan aman dan andal dalam produksi. Dengan model RBAC yang dirancang dengan baik, Anda bisa:
Mengurangi risiko dengan mencegah operasi yang tidak disengaja atau merusak
Meningkatkan keamanan dengan memberlakukan akses yang paling tidak memiliki hak istimewa ke data vektor
Menstandarkan operasi melalui pemisahan tanggung jawab yang jelas
Melakukan penskalaandengan percaya diri, meletakkan fondasi untuk penerapan multi-penyewa dan skala besar
Kontrol akses bukanlah fitur opsional atau tugas sekali pakai. Ini adalah bagian mendasar untuk mengoperasikan Milvus dengan aman dalam jangka panjang.
👉 Mulailah membangun garis dasar keamanan yang solid dengan RBAC untuk penerapan Milvus Anda.
Ada pertanyaan atau ingin mendalami fitur Milvus terbaru? Bergabunglah dengan saluran Discord kami atau ajukan pertanyaan di GitHub. Anda juga dapat memesan sesi tatap muka selama 20 menit untuk mendapatkan wawasan, panduan, dan jawaban atas pertanyaan Anda melalui Milvus Office Hours.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word



