منح امتياز أو مجموعة امتيازات للأدوار
بمجرد إنشاء الدور، يمكنك منح امتيازات للدور. يقدم هذا الدليل كيفية منح امتيازات أو مجموعات امتيازات إلى دور.
منح امتياز أو مجموعة امتيازات لدور ما
يقدم الإصدار Milvus 2.5 إصدارًا جديدًا من واجهة برمجة التطبيقات (API) التي تبسط عملية المنح. لم تعد بحاجة إلى البحث عن نوع الكائن عند منح امتياز إلى دور. فيما يلي المعلمات والتفسيرات المقابلة.
اسم الدور: اسم الدور المستهدف الذي يجب منحه الامتياز (الأدوار) أو مجموعة (مجموعات) الامتيازات.
المورد: المورد المستهدف للامتياز، والذي يمكن أن يكون مثيلًا أو قاعدة بيانات أو مجموعة محددة. يشرح الجدول التالي كيفية تحديد المورد في الأسلوب
client.grantV2()
.
المستوى | المورد | طريقة المنح | ملاحظات |
---|---|---|---|
التحصيل | مجموعة محددة | client.grant_privilege_v2(role_name="roleA"، امتياز="CollectionAdmin"، collection_name="col1"، db_name="db1") | أدخل اسم المجموعة المستهدفة واسم قاعدة البيانات التي تنتمي إليها المجموعة المستهدفة. |
جميع المجموعات ضمن قاعدة بيانات محددة | client.grant_privilege_v2(role_name="roleA"، امتياز="CollectionAdmin"، collection_name="*"، db_name="db1") | أدخل اسم قاعدة البيانات المستهدفة وحرف البدل | |
**قاعدة البيانات** | قاعدة بيانات محددة | client.grant_privilege_v2(role_name="roleA"، امتياز="DatabaseAdmin"، collection_name="*"، db_name="db1") | أدخل اسم قاعدة البيانات المستهدفة وحرف البدل |
جميع قواعد البيانات ضمن المثيل الحالي | client.grant_privilege_v2(role_name="roleA"، امتياز="DatabaseAdmin"، collection_name="*"، db_name="*") | أدخل | |
**المثيل** | المثيل الحالي | client.grant_privilege_v2(role_name="roleA"، امتياز="ClusterAdmin"، collection_name="*"، db_name="*") | أدخل |
الامتياز: الامتياز أو مجموعة الامتيازات المحددة التي تحتاج إلى منحها للدور. يوفر ملفوس حالياً 56 نوعاً من الامتيازات التي يمكنك منحها. يسرد الجدول أدناه الامتيازات في ملفوس.
عمود النوع في الجدول أدناه مستخدم لتسهيل البحث السريع عن الامتيازات ويستخدم لأغراض التصنيف فقط. عند منح الامتيازات، لا تحتاج إلى فهم الأنواع. تحتاج فقط إلى إدخال الامتيازات المقابلة.
النوع | الامتياز | الوصف | وصف واجهة برمجة التطبيقات ذات الصلة من جانب العميل |
---|---|---|---|
امتيازات قاعدة البيانات | سرد قواعد البيانات | عرض كافة قواعد البيانات في المثيل الحالي | |
وصف قاعدة البيانات | عرض تفاصيل قاعدة البيانات | ||
إنشاء قاعدة بيانات | إنشاء قاعدة بيانات | ||
إسقاط قاعدة بيانات | إسقاط قاعدة بيانات | ||
تغيير قاعدة البيانات | تعديل خصائص قاعدة البيانات | ||
امتيازات المجموعة | GetFlushState | التحقق من حالة عملية تدفق المجموعة | |
الحصول على حالة التحميل | تحقق من حالة تحميل المجموعة | ||
GetLoadingProgress | التحقق من تقدم التحميل لمجموعة ما | ||
إظهار المجموعات | عرض كافة المجموعات مع امتيازات المجموعة | ||
سرد الأسماء المستعارة | عرض كافة الأسماء المستعارة للمجموعة | ||
وصف المجموعة | عرض تفاصيل المجموعة | ||
وصف الأسماء المستعارة | عرض تفاصيل الاسم المستعار | ||
الحصول على إحصائيات | الحصول على إحصائيات مجموعة (مثل: عدد الكيانات في مجموعة) | ||
إنشاء مجموعة | إنشاء مجموعة | ||
إسقاط مجموعة | إسقاط مجموعة | ||
تحميل | تحميل مجموعة | ||
تحرير | تحرير مجموعة | ||
مسح | نقل جميع الكيانات في مجموعة إلى مقطع مغلق. أي كيان تم إدراجه بعد عملية التدفق سيتم تخزينه في مقطع جديد. | ||
ضغط | تشغيل الضغط يدويًا | ||
إعادة تسمية مجموعة | إعادة تسمية مجموعة | ||
إنشاء اسم مستعار | إنشاء اسم مستعار لمجموعة | ||
إسقاط اسم مستعار | إسقاط الاسم المستعار للمجموعة | ||
مسح الكل | مسح كافة المجموعات في قاعدة البيانات | ||
امتيازات التقسيم | لديه قسم | التحقق من وجود قسم من عدمه | |
إظهار الأقسام | عرض كافة الأقسام في المجموعة | ||
إنشاء قسم | إنشاء قسم | ||
إسقاط قسم | إسقاط قسم | ||
امتيازات الفهرس | تفاصيل الفهرس | عرض تفاصيل الفهرس | وصف الفهرس/إحضار الفهرس/إحضار الفهرس/إحضار تقدم إنشاء الفهرس |
إنشاء فهرس | إنشاء فهرس | ||
إسقاط فهرس | إسقاط فهرس | ||
امتيازات إدارة الموارد | موازنة التحميل | تحقيق توازن التحميل | |
إنشاء مجموعة موارد | إنشاء مجموعة موارد | ||
إسقاط مجموعة موارد | إسقاط مجموعة موارد | ||
تحديثResourceResourceGroups | تحديث مجموعة موارد | ||
وصف مجموعة الموارد | عرض تفاصيل مجموعة موارد | ||
سرد مجموعات الموارد | عرض كافة مجموعات الموارد الخاصة بالمثيل الحالي | ||
نقل العقدة | نقل العقد بين مجموعات الموارد | ||
نقل النسخ المتماثلة | نقل النسخ المتماثلة بين مجموعات الموارد | ||
النسخ الاحتياطي RBAC | إنشاء نسخة احتياطية لجميع العمليات المتعلقة ب RBAC في المثيل الحالي | BackupRBAC | |
استعادةRBAC | استعادة نسخة احتياطية لجميع العمليات المتعلقة بـ RBAC في المثيل الحالي | استعادةRBAC | |
امتيازات الكيان | استعلام | إجراء استعلام | |
بحث | إجراء بحث | ||
إدراج | إدراج كيانات | ||
حذف | حذف كيانات | ||
إدراج كيانات | إدراج كيانات Upsert | ||
استيراد | إدراج كيانات أو استيراد كيانات بالجملة | ||
امتيازات RBAC | إنشاء ملكية | إنشاء مستخدم أو دور | |
تحديث مستخدم | تحديث كلمة مرور المستخدم | ||
إسقاط الملكية | إسقاط كلمة مرور مستخدم أو دور | ||
تحديدالملكية | عرض جميع المستخدمين الذين تم منحهم دوراً محدداً | ||
إدارةالملكية | إدارة مستخدم أو دور أو منح دور لمستخدم ما | تشغيلUserUserRole/تشغيل الامتياز/تشغيل الامتياز/تشغيل الامتياز V2 | |
تحديدالمستخدم | عرض جميع الأدوار الممنوحة للمستخدم | ||
إنشاء مجموعة امتيازات | إنشاء مجموعة امتيازات | ||
إسقاط مجموعة امتيازات | إسقاط مجموعة امتيازات | ||
سرد مجموعات الامتيازات | عرض كافة مجموعات الامتيازات في المثيل الحالي | ||
تشغيل مجموعة امتيازات | إضافة امتيازات إلى مجموعة امتيازات أو إزالتها منها |
يوضح المثال التالي كيفية منح الامتياز PrivilegeSearch
على collection_01
ضمن قاعدة البيانات الافتراضية بالإضافة إلى مجموعة امتيازات باسم 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 "github.com/milvus-io/milvus-sdk-go/v2/client"
client.GrantV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))
client.GrantV2(context.Background(), "role_a", "collection_01", "privilege_group_1", entity.WithOperatePrivilegeDatabase("default"))
client.GrantV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});
await milvusClient.grantPrivilege({
roleName: 'role_a',
object: 'Collection',
objectName: 'collection_01',
privilegeName: 'Search'
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-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" \
-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" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'
وصف الدور
يوضح المثال التالي كيفية عرض الامتيازات الممنوحة للدور role_a باستخدام طريقة وصف_الدور.
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-sdk-go/v2/client"
client.ListRoles(context.Background())
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-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
ضمن قاعدة البيانات الافتراضية بالإضافة إلى مجموعة الامتيازات privilege_group_1
التي تم منحها للدور role_a
.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
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());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.RevokeV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))
client.RevokeV2(context.Background(), "role_a", "collection_01", "privielge_group_1", entity.WithOperatePrivilegeDatabase("default"))
client.RevokeV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-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" \
-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" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'