منح امتياز أو مجموعة امتيازات للأدوار
بمجرد إنشاء الدور، يمكنك منح امتيازات للدور. يقدم هذا الدليل كيفية منح امتيازات أو مجموعات امتيازات إلى دور.
منح امتياز أو مجموعة امتيازات لدور ما
يقدم الإصدار Milvus 2.5 إصدارًا جديدًا من واجهة برمجة التطبيقات (API) التي تبسط عملية المنح. لم تعد بحاجة إلى البحث عن نوع الكائن عند منح امتياز إلى دور. فيما يلي المعلمات والتفسيرات المقابلة.
اسم الدور: اسم الدور المستهدف الذي يجب منحه الامتياز (الأدوار) أو مجموعة (مجموعات) الامتيازات.
المورد: المورد المستهدف للامتياز، والذي يمكن أن يكون مثيلًا أو قاعدة بيانات أو مجموعة محددة.
يشرح الجدول التالي كيفية تحديد المورد في الأسلوب client.grantV2().
المستوى |
المورد |
طريقة المنح |
ملاحظات |
|---|---|---|---|
المجموعة |
مجموعة محددة |
|
أدخل اسم المجموعة المستهدفة واسم قاعدة البيانات التي تنتمي إليها المجموعة المستهدفة. |
جميع المجموعات ضمن قاعدة بيانات محددة |
|
أدخل اسم قاعدة البيانات المستهدفة وحرف البدل |
|
قاعدة بيانات |
قاعدة بيانات محددة |
|
أدخل اسم قاعدة البيانات المستهدفة وحرف البدل |
جميع قواعد البيانات ضمن المثيل الحالي |
|
أدخل |
|
المثيل |
المثيل الحالي |
|
أدخل |
الامتياز: الامتياز المحدد أو مجموعة الامتيازات التي تحتاج إلى منحها للدور. يوفر Milvus حاليًا 56 نوعًا من الامتيازات التي يمكنك منحها. يسرد الجدول أدناه الامتيازات في ملفوس.
عمود النوع في الجدول أدناه مستخدم لتسهيل البحث السريع عن الامتيازات ويستخدم لأغراض التصنيف فقط. عند منح الامتيازات، لا تحتاج إلى فهم الأنواع. تحتاج فقط إلى إدخال الامتيازات المقابلة.
النوع
الامتياز
الوصف
وصف واجهة برمجة التطبيقات ذات الصلة من جانب العميل
امتيازات قاعدة البيانات
سرد قواعد البيانات
عرض كافة قواعد البيانات في المثيل الحالي
وصف قاعدة البيانات
عرض تفاصيل قاعدة البيانات
إنشاء قاعدة بيانات
إنشاء قاعدة بيانات
إسقاط قاعدة بيانات
إسقاط قاعدة بيانات
تغيير قاعدة البيانات
تعديل خصائص قاعدة البيانات
امتيازات المجموعة
GetFlushState
التحقق من حالة عملية تدفق المجموعة
الحصول على حالة التحميل
التحقق من حالة تحميل المجموعة
GetLoadingProgress
التحقق من تقدم التحميل لمجموعة ما
إظهار المجموعات
عرض كافة المجموعات مع امتيازات المجموعة
سرد الأسماء المستعارة
عرض كافة الأسماء المستعارة للمجموعة
وصف المجموعة
عرض تفاصيل المجموعة
وصف الأسماء المستعارة
عرض تفاصيل الاسم المستعار
الحصول على إحصائيات
الحصول على إحصائيات مجموعة (مثل: عدد الكيانات في مجموعة)
إنشاء مجموعة
إنشاء مجموعة
إسقاط مجموعة
إسقاط مجموعة
تحميل
تحميل مجموعة
تحميل مجموعة/تحميل مجموعة/تحميل تقدم التحميل/تحميلحالةالتحميل
تحرير
تحرير مجموعة
مسح
نقل جميع الكيانات في مجموعة إلى مقطع مغلق. أي كيان تم إدراجه بعد عملية التدفق سيتم تخزينه في مقطع جديد.
الضغط
تشغيل الضغط يدويًا
إعادة تسمية مجموعة
إعادة تسمية مجموعة
إنشاء اسم مستعار
إنشاء اسم مستعار لمجموعة
إسقاط اسم مستعار
إسقاط الاسم المستعار للمجموعة
مسح الكل
مسح كافة المجموعات في قاعدة البيانات
امتيازات التقسيم
لديه قسم
التحقق من وجود قسم من عدمه
إظهار الأقسام
عرض كافة الأقسام في المجموعة
إنشاء قسم
إنشاء قسم
إسقاط قسم
إسقاط قسم
امتيازات الفهرس
تفاصيل الفهرس
عرض تفاصيل الفهرس
وصف الفهرس/إحضار الفهرس/إحضار الفهرس/إحضار تقدم إنشاء الفهرس
إنشاء فهرس
إنشاء فهرس
إسقاط فهرس
إسقاط فهرس
امتيازات إدارة الموارد
موازنة التحميل
تحقيق توازن التحميل
إنشاء مجموعة موارد
إنشاء مجموعة موارد
إسقاط مجموعة موارد
إسقاط مجموعة موارد
تحديثResourceResourceGroups
تحديث مجموعة موارد
وصف مجموعة الموارد
عرض تفاصيل مجموعة موارد
سرد مجموعات الموارد
عرض كافة مجموعات الموارد الخاصة بالمثيل الحالي
نقل العقدة
نقل العقد بين مجموعات الموارد
نقل النسخ المتماثلة
نقل النسخ المتماثلة بين مجموعات الموارد
النسخ الاحتياطي RBAC
إنشاء نسخة احتياطية لجميع العمليات المتعلقة ب RBAC في المثيل الحالي
BackupRBAC
استعادةRBAC
استعادة نسخة احتياطية لجميع العمليات المتعلقة بـ RBAC في المثيل الحالي
استعادةRBAC
امتيازات الكيان
استعلام
إجراء استعلام
بحث
إجراء بحث
إدراج
إدراج كيانات
حذف
حذف كيانات
إدراج كيانات
إدراج كيانات Upsert
استيراد
إدراج كيانات أو استيراد كيانات بالجملة
امتيازات RBAC
إنشاء ملكية
إنشاء مستخدم أو دور
تحديث مستخدم
تحديث كلمة مرور المستخدم
إسقاط الملكية
إسقاط كلمة مرور مستخدم أو دور
تحديدالملكية
عرض جميع المستخدمين الذين تم منحهم دوراً محدداً
إدارةالملكية
إدارة مستخدم أو دور أو منح دور لمستخدم ما
تشغيلUserUserRole/تشغيل الامتياز/تشغيل الامتياز/تشغيل الامتياز V2
تحديدالمستخدم
عرض جميع الأدوار الممنوحة للمستخدم
إنشاء مجموعة امتيازات
إنشاء مجموعة امتيازات
إسقاط مجموعة امتيازات
إسقاط مجموعة امتيازات
سرد مجموعات الامتيازات
عرض كافة مجموعات الامتيازات في المثيل الحالي
تشغيل مجموعة امتيازات
إضافة امتيازات إلى مجموعة امتيازات أو إزالتها منها
يوضح المثال التالي كيفية منح الامتياز PrivilegeSearch على collection_01 ضمن قاعدة البيانات default بالإضافة إلى مجموعة امتيازات باسم privilege_group_1 للدور 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":"*"
}'
وصف الدور
يوضح المثال التالي كيفية عرض الامتيازات الممنوحة للدور role_a باستخدام الطريقة 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"
}'
فيما يلي مثال على الإخراج.
{
"role": "role_a",
"privileges": [
{
"collection_name": "collection_01",
"db_name": "default",
"role_name": "role_a",
"privilege": "Search",
"grantor_name": "root"
},
"privilege_group_1"
]
}
إبطال امتياز أو مجموعة امتيازات من دور ما
يوضح المثال التالي كيفية إبطال الامتياز PrivilegeSearch على collection_01 ضمن قاعدة البيانات default بالإضافة إلى مجموعة الامتيازات privilege_group_1 التي تم منحها للدور 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":"*"
}'