🚀 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

Octroi de privilèges ou de groupes de privilèges à des rôles

Une fois qu'un rôle est créé, vous pouvez lui accorder des privilèges. Ce guide explique comment accorder des privilèges ou des groupes de privilèges à un rôle.

Octroi d'un privilège ou d'un groupe de privilèges à un rôle

Milvus 2.5 introduit une nouvelle version de l'API qui rationalise l'opération d'octroi. Il n'est plus nécessaire de rechercher le type d'objet lors de l'octroi d'un privilège à un rôle. Voici les paramètres et les explications correspondantes.

  • role_name : Le nom du rôle cible auquel le(s) privilège(s) ou le(s) groupe(s) de privilèges doit(vent) être accordé(s).

  • Ressource: La ressource cible d'un privilège, qui peut être une instance, une base de données ou une collection spécifique. Le tableau suivant explique comment spécifier la ressource dans la méthode client.grantV2().

Niveau

Ressource

Méthode d'octroi

Notes

Collecte

Une collection spécifique

client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="col1", db_name="db1")

Saisissez le nom de votre collection cible et le nom de la base de données à laquelle la collection cible appartient.

Toutes les collections d'une base de données spécifique

client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="*", db_name="db1")

Saisissez le nom de votre base de données cible et un caractère générique `*` comme nom de collection.

**Base de données**

Une base de données spécifique

client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="db1")

Saisissez le nom de votre base de données cible et un caractère générique `*` comme nom de collection.

Toutes les bases de données de l'instance actuelle

client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="*")

Saisissez `*` comme nom de base de données et `*` comme nom de collection.

**Instance**

L'instance actuelle

client.grant_privilege_v2(role_name="roleA", privilege="ClusterAdmin", collection_name="*", db_name="*")

Saisissez `*` comme nom de base de données et `*` comme nom de collection.

  • Privilège: Le privilège spécifique ou le groupe de privilèges que vous devez accorder à un rôle. Actuellement, Milvus propose 56 types de privilèges que vous pouvez accorder. Le tableau ci-dessous répertorie les privilèges dans Milvus.

    La colonne "type" du tableau ci-dessous est utilisée pour faciliter la recherche rapide des privilèges et n'est utilisée qu'à des fins de classification. Lors de l'octroi de privilèges, il n'est pas nécessaire de comprendre les types. Il vous suffit de saisir les privilèges correspondants.

**Type **

**Privilège**

**Description

**Description de l'API correspondante du côté du client.

Privilèges relatifs aux bases de données

Liste des bases de données

Affiche toutes les bases de données de l'instance actuelle

[ListDatabases](https://milvus.io/docs/manage_databases.md)

DescribeDatabase

Affiche les détails d'une base de données

[DescribeDatabase](https://milvus.io/docs/manage_databases.md)

CreateDatabase (Créer une base de données)

Créer une base de données

[CreateDatabase](https://milvus.io/docs/manage_databases.md)

DropDatabase

Supprimer une base de données

[DropDatabase](https://milvus.io/docs/manage_databases.md)

AlterDatabase

Modifier les propriétés d'une base de données

[AlterDatabase](https://milvus.io/docs/manage_databases.md)

Privilèges de collecte

GetFlushState

Vérifier l'état de l'opération de vidage de la collection

[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

GetLoadState

Vérifie l'état de chargement d'une collection

[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

GetLoadingProgress

Vérifier la progression du chargement d'une collection

[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)

ShowCollections

Afficher toutes les collections avec les privilèges de collection

[ShowCollections](https://milvus.io/docs/view-collections.md)

ListAliases

Affiche tous les alias d'une collection

[ListAliases](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/list_aliases.md)

DescribeCollection

Affiche les détails d'une collection

[DescribeCollection](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_collection.md)

DescribeAlias

Affiche les détails d'un alias

[DescribeAlias](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_alias.md)

Obtenir des statistiques

Obtenir les statistiques d'une collection (par exemple, le nombre d'entités dans une collection).

[GetCollectionStatistics](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/get_collection_stats.md)

CreateCollection (Créer une collection)

Créer une collection

[CreateCollection](https://milvus.io/docs/create-collection.md)

DropCollection

Déposer une collection

[DropCollection](https://milvus.io/docs/drop-collection.md)

Charger

Charger une collection

[LoadCollection](https://milvus.io/docs/load-and-release.md)/[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)/[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

Libération

Libérer une collection

[ReleaseCollection](https://milvus.io/docs/load-and-release.md)

Flush

Persiste toutes les entités d'une collection dans un segment scellé. Toute entité insérée après l'opération de vidage sera stockée dans un nouveau segment.

[Flush](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)/[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

Compactage

Déclencher manuellement le compactage

[Compact](https://milvus.io/docs/v2.0.x/compact_data.md)

Renommer une collection

Renommer une collection

[RenameCollection](https://milvus.io/docs/modify-collection.md)

CreateAlias

Créer un alias pour une collection

[CreateAlias](https://milvus.io/docs/manage-aliases.md)

DropAlias

Supprimer l'alias d'une collection

[DropAlias](https://milvus.io/docs/manage-aliases.md)

FlushAll

Vide toutes les collections d'une base de données

[FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md)

Privilèges des partitions

HasPartition

Vérifier l'existence d'une partition

[HasPartition](https://milvus.io/docs/manage-partitions.md)

ShowPartitions

Afficher toutes les partitions d'une collection

[ShowPartitions](https://milvus.io/docs/manage-partitions.md)

Créer une partition

Créer une partition

[CreatePartition](https://milvus.io/docs/manage-partitions.md)

Déposer une partition

Déposer une partition

[DropPartition](https://milvus.io/docs/manage-partitions.md)

Privilèges de l'index

Détails de l'index

Voir les détails d'un index

[DescribeIndex/GetIndexState/GetIndexBuildProgress](https://milvus.io/docs/index-vector-fields.md?tab=floating)

Créer un index

Créer un index

[CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

DropIndex

Supprimer un index

[DropIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

Privilèges de gestion des ressources

Équilibre de charge

Réaliser l'équilibre de la charge

[LoadBalance](https://milvus.io/docs/resource_group.md)

CreateResourceGroup

Créer un groupe de ressources

[CreateResourceGroup](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/create_resource_group.md)

DropResourceGroup

Supprimer un groupe de ressources

[DropResourceGroup](https://milvus.io/docs/resource_group.md)

UpdateResourceGroups (Mise à jour des groupes de ressources)

Mettre à jour un groupe de ressources

[UpdateResourceGroups](https://milvus.io/docs/resource_group.md)

DescribeResourceGroup

Affiche les détails d'un groupe de ressources

[DescribeResourceGroup](https://milvus.io/docs/resource_group.md)

ListResourceGroups

Affiche tous les groupes de ressources de l'instance actuelle

[ListResourceGroups](https://milvus.io/docs/resource_group.md)

TransferNode

Transférer des nœuds entre les groupes de ressources

[TransferNode](https://milvus.io/docs/resource_group.md)

TransferReplica

Transférer les répliques entre les groupes de ressources

[TransferReplica](https://milvus.io/docs/resource_group.md)

BackupRBAC

Créer une sauvegarde de toutes les opérations liées à RBAC dans l'instance courante.

BackupRBAC

RestoreRBAC

Restaurer une sauvegarde de toutes les opérations liées à RBAC dans l'instance actuelle

RestoreRBAC

Privilèges de l'entité

Requête

Effectuer une requête

[Requête](https://milvus.io/docs/get-and-scalar-query.md)

Recherche

Effectuer une recherche

[Recherche](https://milvus.io/docs/single-vector-search.md)

Insérer

Insérer des entités

[Insérer](https://milvus.io/docs/insert-update-delete.md)

Supprimer

Supprimer des entités

[Supprimer](https://milvus.io/docs/delete-entities.md)

Insérer

Insérer des entités

[Upsert](https://milvus.io/docs/upsert-entities.md)

Importer

Insérer ou importer des entités en masse

[BulkInsert/Import](https://milvus.io/docs/import-data.md)

Privilèges RBAC

Créer un propriétaire

Créer un utilisateur ou un rôle

Créer un utilisateurou un rôle [CreateUser/CreateRole](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

UpdateUser

Mettre à jour le mot de passe d'un utilisateur

[UpdateCredential](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

DropOwnership

Supprimer le mot de passe d'un utilisateur ou d'un rôle

[DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh)

Sélectionner la propriété

Afficher tous les utilisateurs auxquels un rôle spécifique a été attribué

[SelectRole/SelectGrant](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

ManageOwnership

Gérer un utilisateur ou un rôle ou accorder un rôle à un utilisateur

[OperateUserRole/OperatePrivilege/OperatePrivilegeV2](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

SelectUser

Voir tous les rôles accordés à un utilisateur

[SelectUser](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

CreatePrivilegeGroup

Créer un groupe de privilèges

[CreatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

DropPrivilegeGroup

Supprimer un groupe de privilèges

[DropPrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

ListPrivilegeGroups

Affiche tous les groupes de privilèges dans l'instance actuelle

[ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

OperatePrivilegeGroup

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

[OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

L'exemple suivant montre comment accorder le privilège PrivilegeSearch à collection_01 sous la base de données par défaut ainsi qu'un groupe de privilèges nommé privilege_group_1 au rôle 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":"*"
}'

Décrire un rôle

L'exemple suivant montre comment afficher les privilèges accordés au rôle role_a à l'aide de la méthode 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-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"
}'

Voici un exemple de résultat.

{
     "role": "role_a",
     "privileges": [
         {
             "collection_name": "collection_01",
             "db_name": "default",
             "role_name": "role_a",
             "privilege": "Search",
             "grantor_name": "root"
         },
         "privilege_group_1"
     ]
}

Révoquer un privilège ou un groupe de privilèges d'un rôle

L'exemple suivant montre comment révoquer le privilège PrivilegeSearch sur collection_01 sous la base de données par défaut ainsi que le groupe de privilèges privilege_group_1 qui ont été accordés au rôle 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":"*"
}'

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 ?