🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
Home

Créer un groupe de privilèges

Pour rationaliser le processus d'octroi des privilèges, il est recommandé de regrouper plusieurs privilèges dans un groupe de privilèges.

Groupe de privilèges et privilèges

Un groupe de privilèges se compose de plusieurs privilèges.

Privilege group illustrated Illustration d'un groupe de privilèges

Comme le montre la figure ci-dessus, supposons que vous deviez accorder trois privilèges différents à un rôle.

  • Si vous n'utilisez pas de groupe de privilèges, vous devez accorder les privilèges trois fois.

  • Si vous utilisez un groupe de privilèges, il vous suffit de créer un groupe de privilèges, d'y ajouter les trois privilèges et d'accorder le groupe de privilèges au rôle A.

L'utilisation d'un groupe de privilèges permet d'accorder plusieurs privilèges en bloc à un rôle.

Groupes de privilèges intégrés

Pour faciliter l'utilisation, Milvus fournit un total de 9 privilèges intégrés au niveau de la collection, de la base de données et de l'instance : COLL_RO, COLL_RW, COLL_ADMIN, DB_RO, DB_RW, DB_Admin, Cluster_RO, Cluster_RW et Cluster_Admin.

Les trois niveaux de groupes de privilèges intégrés n'ont pas de relation en cascade. La définition d'un groupe de privilèges au niveau de l'instance ne définit pas automatiquement les autorisations pour toutes les bases de données et collections de cette instance. Les privilèges au niveau de la base de données et de la collection doivent être définis manuellement.

Les tableaux suivants expliquent les privilèges inclus dans chacun des groupes de privilèges intégrés.

Niveau de collection

  • COLL_RO: comprend les privilèges de lecture des données de la collection.

  • COLL_RW: comprend les privilèges de lecture et d'écriture des données de la collection.

  • COLL_ADMIN: comprend les privilèges de lecture et d'écriture des données de collecte et de gestion des collections.

Le tableau ci-dessous répertorie les privilèges spécifiques inclus dans les trois groupes de privilèges intégrés au niveau de la collecte.

**Privilège**

CollecteLectureSeulement** **CollectionReadOnly**

**CollecteLectureEcriture**

**Administrateur de collection

Requête

✔️

✔️

✔️

Recherche

✔️

✔️

✔️

Détails de l'index

✔️

✔️

✔️

GetFlushState

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

HasPartition

✔️

✔️

✔️

ShowPartitions

✔️

✔️

✔️

ListAliases

✔️

✔️

✔️

DescribeCollection

✔️

✔️

✔️

DescribeAlias

✔️

✔️

✔️

Obtenir des statistiques

✔️

✔️

✔️

CreateIndex

✔️

✔️

DropIndex

✔️

✔️

CreatePartition

✔️

✔️

DropPartition

✔️

✔️

Chargement

✔️

✔️

Release

✔️

✔️

Insert

✔️

✔️

Supprimer

✔️

✔️

Upsert

✔️

✔️

Importation

✔️

✔️

Flush

✔️

✔️

Compaction

✔️

✔️

Équilibre des charges

✔️

✔️

CreateAlias

✔️

DropAlias

✔️

Niveau de la base de données

  • DB_RO: comprend les privilèges de lecture des données de la base de données

  • DB_RW: comprend les privilèges de lecture et d'écriture des données de la base de données.

  • DB_Admin: comprend les privilèges de lecture et d'écriture des données de la base et de gestion des bases de données.

Le tableau ci-dessous répertorie les privilèges spécifiques inclus dans les trois groupes de privilèges intégrés au niveau de la base de données.

**Privilège**

**Lecture de la base de données uniquement **Lecture de la base de données en écriture

Base de données en lecture seule** **Base de données en lecture-écriture**

**Base de donnéesAdmin**

Afficher les collections

✔️

✔️

✔️

DescribeDatabase

✔️

✔️

✔️

CreateCollection

✔️

DropCollection

✔️

AlterDatabase

✔️

✔️

Niveau du cluster

  • Cluster_RO: inclut les privilèges de lecture des données d'instance

  • Cluster_RW: comprend les privilèges de lecture et d'écriture des données d'instance.

  • Cluster_Admin: comprend les privilèges de lecture et d'écriture des données d'instance et de gestion des instances.

Le tableau ci-dessous répertorie les privilèges spécifiques inclus dans les trois groupes de privilèges intégrés au niveau de l'instance.

**Privilège**

ClusterReadOnly **ClusterReadWrite**

ClusterReadWrite **ClusterReadOnly **ClusterReadWrite **ClusterAdmin **ClusterAdmin

**ClusterAdmin**

ListDatabases

✔️

✔️

✔️

RenameCollection

✔️

Créer une propriété

✔️

UpdateUser

✔️

DropOwnership

✔️

Sélectionner la propriété

✔️

✔️

✔️

Gérer la propriété

✔️

SelectUser

✔️

✔️

✔️

BackupRBAC

✔️

RestoreRBAC

✔️

Créer un groupe de ressources

✔️

DropResourceGroup

✔️

UpdateResourceGroups

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

ListResourceGroups

✔️

✔️

✔️

TransferNode

✔️

✔️

TransferReplica

✔️

✔️

CreateDatabase

✔️

DropDatabase

✔️

FlushAll

✔️

✔️

CreatePrivilegeGroup

✔️

DropPrivilegeGroup

✔️

ListPrivilegeGroups

✔️

OperatePrivilegeGroup

✔️

Procédures

Vous pouvez créer un groupe de privilèges, puis ajouter des privilèges au groupe de privilèges.

Création d'un groupe de privilèges

L'exemple suivant montre comment créer un groupe d'autorisations d'accès nommé 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"
}'

Ajouter des privilèges à un groupe de privilèges

L'exemple suivant montre comment ajouter les privilèges PrivilegeBackupRBAC et PrivilegeRestoreRBAC au groupe de privilèges privilege_group_1 qui vient d'être créé.

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"]
}'

Supprimer des privilèges d'un groupe de privilèges

L'exemple suivant montre comment supprimer le privilège PrivilegeRestoreRBAC du groupe de privilèges 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"]
}'

Répertorier les groupes de privilèges

L'exemple suivant montre comment dresser la liste de tous les groupes de privilèges existants.

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 '{}'

Voici un exemple de résultat.

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

Supprimer un groupe de privilèges

L'exemple suivant montre comment supprimer le groupe de privilèges 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"
}'

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?