🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Руководство по администрированию
  • Home
  • Docs
  • Руководство по администрированию

  • Безопасность

  • Включить RBAC

  • Группа привилегий

Создание группы привилегий

Чтобы упростить процесс предоставления привилегий, рекомендуется объединить несколько привилегий в группу привилегий.

Группа привилегий по сравнению с привилегиями

Группа привилегий состоит из нескольких привилегий.

Privilege group illustrated Иллюстрация группы привилегий

Как показано на рисунке выше, предположим, что вам нужно предоставить три различные привилегии для роли.

  • Если вы не используете группу привилегий, вам нужно предоставить привилегии три раза.

  • Если вы используете группу привилегий, вам нужно только создать группу привилегий, добавить три привилегии в эту группу привилегий и предоставить группу привилегий роли A.

Используя группу привилегий, вы можете предоставить роли несколько привилегий в совокупности.

Встроенные группы привилегий

Для простоты использования Milvus предоставляет в общей сложности 9 встроенных привилегий на уровне коллекции, базы данных и экземпляра: COLL_RO, COLL_RW, COLL_ADMIN, DB_RO, DB_RW, DB_Admin, Cluster_RO, Cluster_RW и Cluster_Admin.

Три уровня встроенных групп привилегий не имеют каскадной зависимости. Установка группы привилегий на уровне экземпляра не приводит к автоматическому установлению разрешений для всех баз данных и коллекций под этим экземпляром. Привилегии на уровне баз данных и коллекций необходимо устанавливать вручную.

В следующих таблицах описаны привилегии, включенные в каждую из встроенных групп привилегий.

Уровень коллекции

  • COLL_RO: включает привилегии на чтение данных коллекции

  • COLL_RW: включает привилегии на чтение и запись данных коллекции

  • COLL_ADMIN: включает привилегии на чтение и запись данных коллекции и управление коллекциями.

В таблице ниже перечислены конкретные привилегии, включенные в три встроенные группы привилегий на уровне коллекции.

Привилегия

CollectionReadOnly

CollectionReadWrite

CollectionAdmin

Запрос

✔️

✔️

✔️

Поиск

✔️

✔️

✔️

IndexDetail

✔️

✔️

✔️

GetFlushState

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

HasPartition

✔️

✔️

✔️

ShowPartitions

✔️

✔️

✔️

ListAliases

✔️

✔️

✔️

DescribeCollection

✔️

✔️

✔️

DescribeAlias

✔️

✔️

✔️

GetStatistics

✔️

✔️

✔️

CreateIndex

✔️

✔️

DropIndex

✔️

✔️

CreatePartition

✔️

✔️

DropPartition

✔️

✔️

Загрузить

✔️

✔️

Освобождение

✔️

✔️

Вставить

✔️

✔️

Удалить

✔️

✔️

Upsert

✔️

✔️

Импорт

✔️

✔️

Промывка

✔️

✔️

Уплотнение

✔️

✔️

LoadBalance

✔️

✔️

CreateAlias

✔️

DropAlias

✔️

Уровень базы данных

  • DB_RO: включает привилегии на чтение данных базы данных

  • DB_RW: включает привилегии на чтение и запись данных базы данных

  • DB_Admin: включает привилегии на чтение и запись данных базы данных и управление базами данных.

В таблице ниже перечислены конкретные привилегии, включенные в три встроенные группы привилегий на уровне базы данных.

Привилегия

DatabaseReadOnly

DatabaseReadWrite

DatabaseAdmin

ShowCollections

✔️

✔️

✔️

Описать базу данных

✔️

✔️

✔️

CreateCollection

✔️

DropCollection

✔️

AlterDatabase

✔️

✔️

Уровень кластера

  • Cluster_RO: включает привилегии на чтение данных экземпляра

  • Cluster_RW: включает привилегии на чтение и запись данных экземпляра

  • Cluster_Admin: включает привилегии на чтение и запись данных экземпляра и управление экземплярами.

В таблице ниже перечислены конкретные привилегии, включенные в три встроенные группы привилегий на уровне экземпляра.

Привилегия

ClusterReadOnly

ClusterReadWrite

ClusterAdmin

ListDatabases

✔️

✔️

✔️

RenameCollection

✔️

CreateOwnership

✔️

UpdateUser

✔️

DropOwnership

✔️

SelectOwnership

✔️

✔️

✔️

ManageOwnership

✔️

SelectUser

✔️

✔️

✔️

BackupRBAC

✔️

RestoreRBAC

✔️

CreateResourceGroup

✔️

DropResourceGroup

✔️

UpdateResourceGroups

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

ListResourceGroups

✔️

✔️

✔️

TransferNode

✔️

✔️

TransferReplica

✔️

✔️

Создать базу данных

✔️

DropDatabase

✔️

FlushAll

✔️

✔️

CreatePrivilegeGroup

✔️

DropPrivilegeGroup

✔️

ListPrivilegeGroups

✔️

OperatePrivilegeGroup

✔️

Процедуры

Вы можете создать группу привилегий, а затем добавить привилегии в группу привилегий.

Создание группы привилегий

В следующем примере показано, как создать группу привилегий с именем privilege_group_1.

from pymilvus import MilvusClient
client.create_privileg_group(group_name='privilege_group_1'
import io.milvus.v2.service.rbac.request.CreatePrivilegeGroupReq;

client.createPrivilegeGroup(CreatePrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());

import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.CreatePrivilegeGroup(context.Background(), "privilege_group_1")

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

Добавление привилегий в группу привилегий

В следующем примере показано, как добавить привилегии PrivilegeBackupRBAC и PrivilegeRestoreRBAC в только что созданную группу привилегий privilege_group_1.

from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])

import io.milvus.v2.service.rbac.request.AddPrivilegesToGroupReq;

client.addPrivilegesToGroup(AddPrivilegesToGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Arrays.asList("Query", "Search"))
        .build());

import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.AddPrivilegesToGroup(context.Background(), "privilege_group_1", []string{"Query", "Search"})

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/add_privileges_to_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Query", "Search"]
}'

Удаление привилегий из группы привилегий

В следующем примере показано, как удалить привилегию PrivilegeRestoreRBAC из группы привилегий privilege_group_1.

from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')

import io.milvus.v2.service.rbac.request.RemovePrivilegesFromGroupReq;

client.removePrivilegesFromGroup(RemovePrivilegesFromGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Collections.singletonList("Search"))
        .build());

import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.RemovePrivilegesFromGroup(context.Background(), "privilege_group_1", []string{"Search"})

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/remove_privileges_from_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Search"]
}'

Список групп привилегий

Следующий пример демонстрирует, как перечислить все существующие группы привилегий.

from pymilvus import MilvusClient
client.list_privilege_groups()

import io.milvus.v2.service.rbac.PrivilegeGroup;
import io.milvus.v2.service.rbac.request.ListPrivilegeGroupsReq;
import io.milvus.v2.service.rbac.response.ListPrivilegeGroupsResp;

ListPrivilegeGroupsResp resp = client.listPrivilegeGroups(ListPrivilegeGroupsReq.builder()
        .build());
List<PrivilegeGroup> groups = resp.getPrivilegeGroups();

import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.ListPrivilegeGroups(context.Background())

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'

Ниже приведен пример вывода.

PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>

Сбросить группу привилегий

В следующем примере показано, как удалить группу привилегий privilege_group_1.

from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')

import io.milvus.v2.service.rbac.request.DropPrivilegeGroupReq;

client.dropPrivilegeGroup(DropPrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());

import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.DropPrivilegeGroup(context.Background(), "privilege_group_1")

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?