Memberikan Hak Istimewa atau Grup Hak Istimewa ke Peran
Setelah peran dibuat, Anda dapat memberikan hak istimewa pada peran tersebut. Panduan ini memperkenalkan cara memberikan hak istimewa atau grup hak istimewa ke peran.
Memberikan hak istimewa atau grup hak istimewa ke peran
Milvus 2.5 memperkenalkan versi baru API yang menyederhanakan operasi pemberian hak istimewa. Anda tidak perlu lagi mencari tipe objek ketika memberikan hak istimewa kepada sebuah role. Berikut ini adalah parameter dan penjelasan terkait.
role_name: Nama peran target yang perlu diberikan hak istimewa atau grup hak istimewa.
Resource: Sumber daya target hak istimewa, yang dapat berupa instance, database, atau koleksi tertentu.
Tabel berikut ini menjelaskan cara menentukan sumber daya dalam metode client.grantV2().
Tingkat |
Sumber Daya |
Metode Pemberian |
Catatan |
|---|---|---|---|
Koleksi |
Koleksi tertentu |
|
Masukkan nama koleksi target Anda dan nama pangkalan data tempat koleksi target berada. |
Semua koleksi di bawah pangkalan data tertentu |
|
Masukkan nama pangkalan data target Anda dan karakter pengganti |
|
Basis data |
Basis data tertentu |
|
Masukkan nama basis data target Anda dan wildcard |
Semua basis data di bawah contoh saat ini |
|
Masukkan |
|
Instance |
Instance saat ini |
|
Masukkan |
Privilege: Hak istimewa atau kelompok hak istimewa tertentu yang perlu Anda berikan kepada suatu peran. Saat ini, Milvus menyediakan 56 jenis privilese yang dapat Anda berikan. Tabel di bawah ini mencantumkan daftar hak istimewa di Milvus.
Kolom jenis pada tabel di bawah ini digunakan untuk memudahkan anda mencari hak istimewa dengan cepat dan hanya digunakan untuk tujuan klasifikasi. Ketika memberikan hak istimewa, anda tidak perlu memahami jenisnya. Anda hanya perlu memasukkan hak istimewa yang sesuai.
Jenis
Hak istimewa
Deskripsi
Deskripsi API yang relevan di sisi klien
Hak Istimewa Basis Data
DaftarDatabase
Melihat semua database dalam instance saat ini
JelaskanDatabase
Melihat detail database
CreateDatabase
Membuat basis data
JatuhkanDatabase
Menjatuhkan basis data
UbahDatabase
Memodifikasi properti database
Keistimewaan Koleksi
GetFlushState
Memeriksa status operasi flush koleksi
GetLoadState
Memeriksa status pemuatan koleksi
GetLoadingProgress
Memeriksa kemajuan pemuatan koleksi
TampilkanKoleksi
Melihat semua koleksi dengan hak istimewa koleksi
DaftarAlias
Melihat semua alias dari sebuah koleksi
JelaskanKoleksi
Melihat detail dari sebuah koleksi
JelaskanAlias
Melihat detail sebuah alias
DapatkanStatistik
Mendapatkan statistik koleksi (misalnya jumlah entitas dalam koleksi)
BuatKoleksi
Membuat koleksi
DropCollection
Jatuhkan koleksi
Memuat
Memuat koleksi
Melepaskan
Melepaskan koleksi
Flush
Mempertahankan semua entitas dalam koleksi ke dalam segmen tertutup. Setiap entitas yang disisipkan setelah operasi flush akan disimpan dalam segmen baru.
Pemadatan
Memicu pemadatan secara manual
Ganti NamaKoleksi
Mengganti nama koleksi
BuatAlias
Membuat alias untuk sebuah koleksi
DropAlias
Menghilangkan alias dari sebuah koleksi
FlushAll
Mengosongkan semua koleksi dalam basis data
Keistimewaan Partisi
HasPartition
Memeriksa apakah sebuah partisi ada
TampilkanPartisi
Melihat semua partisi dalam sebuah koleksi
BuatPartisi
Membuat partisi
JatuhkanPartisi
Menghapus partisi
Hak Istimewa Indeks
IndexDetail
Melihat detail indeks
JelaskanIndeks / Dapatkan Status Indeks / Dapatkan Kemajuan Pembuatan Indeks
BuatIndeks
Membuat indeks
JatuhkanIndeks
Jatuhkan indeks
Hak Istimewa Manajemen Sumber Daya
LoadBalance
Mencapai keseimbangan beban
Buat Grup Sumber Daya
Membuat grup sumber daya
Menghapus Grup Sumber Daya
Menghapus grup sumber daya
Memperbarui Grup Sumber Daya
Memperbarui grup sumber daya
JelaskanGrup Sumber Daya
Melihat detail grup sumber daya
DaftarGrupSumberDaya
Melihat semua grup sumber daya dari instance saat ini
TransferNode
Mentransfer simpul di antara grup sumber daya
TransferReplika
Mentransfer replika antar grup sumber daya
Pencadangan RBAC
Membuat cadangan untuk semua operasi terkait RBAC dalam instance saat ini
BackupRBAC
PulihkanRBAC
Memulihkan cadangan semua operasi terkait RBAC dalam instans saat ini
PulihkanRBAC
Hak Istimewa Entitas
Kueri
Melakukan kueri
Pencarian
Melakukan pencarian
Menyisipkan
Menyisipkan entitas
Menghapus
Menghapus entitas
Menyisipkan
Menyisipkan entitas
Impor
Menyisipkan atau mengimpor entitas secara massal
Hak Istimewa RBAC
BuatKepemilikan
Membuat pengguna atau peran
PerbaruiPengguna
Memperbarui kata sandi pengguna
HapusKepemilikan
Menghapus kata sandi pengguna atau peran
PilihKepemilikan
Melihat semua pengguna yang diberikan peran tertentu
KelolaKepemilikan
Mengelola pengguna atau peran atau memberikan peran kepada pengguna
PilihPengguna
Melihat semua peran yang diberikan kepada pengguna
BuatKelompokKeistimewaan (CreatePrivilegeGroup)
Membuat grup hak istimewa
Hapus Grup Hak Istimewa
Menghapus grup hak istimewa
DaftarKelompokKeistimewaan
Melihat semua grup hak istimewa dalam instance saat ini
OperatePrivilegeGroup
Menambahkan hak istimewa atau menghapus hak istimewa dari grup hak istimewa
Contoh berikut ini menunjukkan cara memberikan hak istimewa PrivilegeSearch pada collection_01 di bawah basis data default serta grup hak istimewa bernama privilege_group_1 ke peran role_a.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
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='*',
)
import io.milvus.v2.service.rbac.request.GrantPrivilegeReqV2
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("Search")
.collectionName("collection_01")
.dbName("default")
.build());
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("privilege_group_1")
.collectionName("collection_01")
.dbName("default")
.build());
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("ClusterReadOnly")
.collectionName("*")
.dbName("*")
.build());
import (
"context"
"fmt"
"github.com/milvus-io/milvus/client/v2/milvusclient"
)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
Address: "localhost:19530",
APIKey: "root:Milvus",
})
if err != nil {
fmt.Println(err.Error())
// handle error
}
defer client.Close(ctx)
err = client.GrantV2(ctx, milvusclient.NewGrantV2Option("role_a", "Search", "default", "collection_01"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
err = client.GrantV2(ctx, milvusclient.NewGrantV2Option("role_a", "privilege_group_1", "default", "collection_01"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
err = client.GrantV2(ctx, milvusclient.NewGrantV2Option("role_a", "ClusterReadOnly", "*", "*"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});
await client.grantPrivilegeV2({
role: "role_a",
privilege: "Search"
collection_name: 'collection_01'
db_name: 'default',
});
await client.grantPrivilegeV2({
role: "role_a",
privilege: "privilege_group_1"
collection_name: 'collection_01'
db_name: 'default',
});
await client.grantPrivilegeV2({
role: "role_a",
privilege: "ClusterReadOnly"
collection_name: '*'
db_name: '*',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "privilege_group_1",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'
Mendeskripsikan peran
Contoh berikut ini menunjukkan cara melihat hak istimewa yang diberikan kepada role role_a menggunakan metode describe_role.
from pymilvus import MilvusClient
client.describe_role(role_name="role_a")
import io.milvus.v2.service.rbac.response.DescribeRoleResp;
import io.milvus.v2.service.rbac.request.DescribeRoleReq
DescribeRoleReq describeRoleReq = DescribeRoleReq.builder()
.roleName("role_a")
.build();
DescribeRoleResp resp = client.describeRole(describeRoleReq);
List<DescribeRoleResp.GrantInfo> infos = resp.getGrantInfos();
import "github.com/milvus-io/milvus/client/v2/milvusclient"
role, err := client.DescribeRole(ctx, milvusclient.NewDescribeRoleOption("role_a"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
await client.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a"
}'
Di bawah ini adalah contoh keluaran.
{
"role": "role_a",
"privileges": [
{
"collection_name": "collection_01",
"db_name": "default",
"role_name": "role_a",
"privilege": "Search",
"grantor_name": "root"
},
"privilege_group_1"
]
}
Mencabut hak istimewa atau kelompok hak istimewa dari suatu peran
Contoh berikut ini menunjukkan cara mencabut hak istimewa PrivilegeSearch pada collection_01 di bawah basis data default serta grup hak istimewa privilege_group_1 yang telah diberikan kepada role role_a.
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',
)
client.revoke_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly",
collection_name='*',
db_name='*',
)
import io.milvus.v2.service.rbac.request.RevokePrivilegeReqV2
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("Search")
.collectionName("collection_01")
.dbName("default")
.build());
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("privilege_group_1")
.collectionName("collection_01")
.dbName("default")
.build());
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("ClusterReadOnly")
.collectionName("*")
.dbName("*")
.build());
err = client.RevokePrivilegeV2(ctx, milvusclient.NewRevokePrivilegeV2Option("role_a", "Search", "collection_01").
WithDbName("default"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
err = client.RevokePrivilegeV2(ctx, milvusclient.NewRevokePrivilegeV2Option("role_a", "privilege_group_1", "collection_01").
WithDbName("default"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
err = client.RevokePrivilegeV2(ctx, milvusclient.NewRevokePrivilegeV2Option("role_a", "ClusterReadOnly", "*").
WithDbName("*"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
await client.revokePrivilegeV2({
role: 'role_a',
privilege: 'Search',
collection_name: 'collection_01',
db_name: 'default'
});
await client.revokePrivilegeV2({
role: 'role_a',
collection_name: 'collection_01',
privilege: 'Search',
db_name: 'default'
});
await client.revokePrivilegeV2({
role: 'role_a',
collection_name: '*',
privilege: 'ClusterReadOnly',
db_name: '*'
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
--header "Request-Timeout: 10" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'