Milvus
Zilliz
Home
  • Leitfaden für die Verwaltung
  • Home
  • Docs
  • Leitfaden für die Verwaltung

  • Sicherheit

  • RBAC aktivieren

  • Privilegien erteilen

Rechte oder Rechtegruppen für Rollen erteilen

Sobald eine Rolle erstellt ist, können Sie dieser Rolle Rechte gewähren. In diesem Handbuch wird erläutert, wie Sie einer Rolle Rechte oder Rechtegruppen gewähren.

Gewähren Sie einer Rolle ein Recht oder eine Gruppe von Rechten

Milvus 2.5 führt eine neue Version der API ein, die die Erteilungsoperation rationalisiert. Sie müssen nicht mehr den Objekttyp nachschlagen, wenn Sie einer Rolle ein Recht gewähren. Im Folgenden sind die Parameter und die entsprechenden Erklärungen aufgeführt.

  • role_name: Der Name der Zielrolle, für die ein oder mehrere Privileg(e) oder eine oder mehrere Privileggruppen gewährt werden sollen.

  • Ressource: Die Zielressource eines Zugriffsrechts, die eine bestimmte Instanz, Datenbank oder Sammlung sein kann.

Die folgende Tabelle erläutert, wie die Ressource in der Methode client.grantV2() anzugeben ist.

Ebene

Ressource

Erteilung Methode

Hinweise

Sammlung

Eine bestimmte Sammlung

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

Geben Sie den Namen Ihrer Zielsammlung und den Namen der Datenbank ein, zu der die Zielsammlung gehört.

Alle Sammlungen unter einer bestimmten Datenbank

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

Geben Sie den Namen der Zieldatenbank und einen Platzhalter * als Sammlungsnamen ein.

Datenbank

Eine bestimmte Datenbank

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

Geben Sie den Namen Ihrer Zieldatenbank und einen Platzhalter * als Sammlungsnamen ein.

Alle Datenbanken unter der aktuellen Instanz

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

Geben Sie als Datenbanknamen * und als Sammlungsnamen * ein.

Instanz

Die aktuelle Instanz

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

Geben Sie als Datenbanknamen * und als Sammlungsnamen * ein.

  • Privileg: Die spezifische Berechtigung oder Berechtigungsgruppe, die Sie einer Rolle gewähren müssen. Derzeit bietet Milvus 56 Arten von Privilegien, die Sie gewähren können. In der folgenden Tabelle sind die Privilegien in Milvus aufgeführt.

    Die Spalte "Typ" in der Tabelle dient dazu, Ihnen die schnelle Suche nach Privilegien zu erleichtern und wird nur zu Klassifizierungszwecken verwendet. Bei der Erteilung von Privilegien müssen Sie die Typen nicht verstehen. Sie müssen nur die entsprechenden Berechtigungen eingeben.

    Typ

    Privileg

    Beschreibung

    Entsprechende API-Beschreibung auf der Client-Seite

    Datenbank-Privilegien

    ListDatabases

    Alle Datenbanken in der aktuellen Instanz anzeigen

    ListDatabases

    DescribeDatabase

    Zeigt die Details einer Datenbank an

    DescribeDatabase

    CreateDatabase

    Erstellen einer Datenbank

    CreateDatabase

    DropDatabase

    Löschen einer Datenbank

    DropDatabase

    AlterDatabase

    Ändern der Eigenschaften einer Datenbank

    AlterDatabase

    Sammlung Privilegien

    GetFlushState

    Überprüfen des Status des Flush-Vorgangs der Sammlung

    GetFlushState

    GetLoadState

    Überprüfung des Ladestatus einer Sammlung

    GetLoadState

    GetLoadingProgress

    Überprüfung des Ladefortschritts einer Sammlung

    GetLoadingProgress

    ShowCollections

    Alle Sammlungen mit Sammlungsprivilegien anzeigen

    ShowCollections

    ListAliases

    Alle Aliasnamen einer Sammlung anzeigen

    ListAliases

    DescribeCollection

    Anzeigen der Details einer Sammlung

    DescribeCollection

    DescribeAlias

    Zeigt die Details eines Alias an

    DescribeAlias

    GetStatistics

    Abrufen der Statistiken einer Sammlung (z. B. die Anzahl der Entitäten in einer Sammlung)

    GetCollectionStatistics

    CreateCollection

    Erstellen einer Sammlung

    CreateCollection

    DropCollection

    Verwerfen einer Sammlung

    DropCollection

    Laden

    Laden einer Sammlung

    LoadCollection/GetLoadingProgress/GetLoadState

    Freigeben

    Freigeben einer Sammlung

    ReleaseCollection

    Flush

    Persistieren aller Entitäten in einer Sammlung in einem versiegelten Segment. Jede Entität, die nach der Flush-Operation eingefügt wird, wird in einem neuen Segment gespeichert.

    Flush/GetFlushState

    Verdichtung

    Manuelles Auslösen der Verdichtung

    Verdichten

    RenameCollection

    Umbenennen einer Sammlung

    RenameCollection

    CreateAlias

    Erzeugen eines Alias für eine Sammlung

    CreateAlias

    DropAlias

    Den Alias einer Sammlung löschen

    DropAlias

    FlushAll

    Alle Sammlungen in einer Datenbank leeren

    FlushAll

    Partitionierung Privilegien

    HasPartition

    Prüfen, ob eine Partition existiert

    HasPartition

    ShowPartitions

    Alle Partitionen in einer Sammlung anzeigen

    ShowPartitions

    CreatePartition

    Eine Partition erstellen

    CreatePartition

    DropPartition

    Verwerfen einer Partition

    Partition löschen

    Index-Privilegien

    IndexDetail

    Anzeigen der Details eines Indexes

    DescribeIndex/GetIndexState/GetIndexBuildProgress

    CreateIndex

    Erzeugen eines Indexes

    CreateIndex

    DropIndex

    Verwerfen eines Index

    LöschenIndex

    Privilegien für die Ressourcenverwaltung

    LoadBalance

    Lastausgleich erreichen

    LoadBalance

    CreateResourceGroup

    Eine Ressourcengruppe erstellen

    CreateResourceGroup

    DropResourceGroup

    Verwerfen einer Ressourcengruppe

    DropResourceGroup

    UpdateResourceGroups

    Aktualisieren einer Ressourcengruppe

    UpdateResourceGroups

    DescribeResourceGroup

    Anzeigen der Details einer Ressourcengruppe

    DescribeResourceGroup

    ListResourceGroups

    Alle Ressourcengruppen der aktuellen Instanz anzeigen

    ListResourceGroups

    TransferKnoten

    Übertragen von Knoten zwischen Ressourcengruppen

    TransferKnoten

    TransferReplica

    Replikate zwischen Ressourcengruppen übertragen

    ÜbertragenReplikat

    SicherungRBAC

    Erstellen eines Backups für alle RBAC-bezogenen Vorgänge in der aktuellen Instanz

    BackupRBAC

    WiederherstellenRBAC

    Wiederherstellen eines Backups aller RBAC-bezogenen Vorgänge in der aktuellen Instanz

    WiederherstellenRBAC

    Entität Privilegien

    Abfrage

    Durchführen einer Abfrage

    Abfrage

    Suche

    Durchführen einer Suche

    Suche

    einfügen

    Entitäten einfügen

    einfügen

    Löschen

    Entitäten löschen

    Löschen

    Upsertieren

    Upsert Entitäten

    Upsertieren

    Importieren

    Masseneinfügung oder Massenimport von Entitäten

    Masseneinfügung/Import

    RBAC-Berechtigungen

    CreateOwnership

    Erstellen eines Benutzers oder einer Rolle

    CreateUser/CreateRole

    UpdateUser

    Aktualisieren des Passworts eines Benutzers

    UpdateCredential

    DropOwnership

    Löschen eines Benutzerkennworts oder einer Rolle

    DeleteCredential/DropRole

    SelectOwnership

    Alle Benutzer anzeigen, denen eine bestimmte Rolle zugewiesen wurde

    SelectRole/SelectGrant

    ManageOwnership

    Verwalten eines Benutzers oder einer Rolle oder Erteilen einer Rolle an einen Benutzer

    OperateUserRole/OperatePrivilege/OperatePrivilegeV2

    SelectUser

    Alle einem Benutzer zugewiesenen Rollen anzeigen

    SelectUser

    CreatePrivilegeGroup

    Eine Privilegiengruppe erstellen

    CreatePrivilegeGroup

    DropPrivilegeGroup

    Löschen einer Berechtigungsgruppe

    DropPrivilegeGroup

    ListPrivilegeGroups

    Alle Berechtigungsgruppen in der aktuellen Instanz anzeigen

    ListPrivilegeGroups

    OperatePrivilegeGroup

    Hinzufügen von Privilegien zu oder Entfernen von Privilegien aus einer Privilegiengruppe

    OperatePrivilegeGroup

Das folgende Beispiel zeigt, wie man der Rolle role_a das Privileg PrivilegeSearch auf collection_01 unter der Datenbank default sowie eine Privilegiengruppe namens privilege_group_1 gewährt.

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" \
-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":"*"
}'

Beschreiben einer Rolle

Das folgende Beispiel zeigt, wie man die der Rolle role_a gewährten Privilegien mit der Methode describe_role anzeigen kann.

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" \
-d '{
    "roleName": "role_a"
}'

Unten sehen Sie ein Beispiel für die Ausgabe.

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

Entzug eines Privilegs oder einer Privilegiengruppe von einer Rolle

Das folgende Beispiel zeigt, wie das Privileg PrivilegeSearch auf collection_01 unter der Datenbank default sowie die Privilegiengruppe privilege_group_1, die der Rolle role_a gewährt wurden, entzogen werden können.

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" \
-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

War diese Seite hilfreich?