Privilegiengruppe erstellen

Um den Prozess der Vergabe von Privilegien zu rationalisieren, wird empfohlen, mehrere Privilegien in einer Privilegiengruppe zusammenzufassen.

Privilegiengruppe vs. Privilegien

Eine Berechtigungsgruppe besteht aus mehreren Privilegien.

Privilege Group Illustrated Privilegiengruppe illustriert

Wie in der obigen Abbildung dargestellt, nehmen Sie an, dass Sie einer Rolle drei verschiedene Berechtigungen gewähren müssen.

  • Wenn Sie keine Berechtigungsgruppe verwenden, müssen Sie die Berechtigungen dreimal erteilen.

  • Wenn Sie eine Berechtigungsgruppe verwenden, brauchen Sie nur eine Berechtigungsgruppe zu erstellen, die drei Berechtigungen zu dieser Berechtigungsgruppe hinzuzufügen und die Berechtigungsgruppe der Rolle A zu gewähren.

Durch die Verwendung einer Berechtigungsgruppe können Sie einer Rolle mehrere Privilegien im Ganzen gewähren.

Eingebaute Berechtigungsgruppen

Um die Benutzung zu erleichtern, bietet Milvus insgesamt 9 eingebaute Berechtigungen auf der Ebene der Sammlung, der Datenbank und der Instanz: COLL_RO, COLL_RW, COLL_ADMIN, DB_RO, DB_RW, DB_Admin, Cluster_RO, Cluster_RW und Cluster_Admin.

Die drei Ebenen der eingebauten Berechtigungsgruppen stehen nicht in einer kaskadierenden Beziehung. Wenn Sie eine Berechtigungsgruppe auf Instanzebene festlegen, werden nicht automatisch Berechtigungen für alle Datenbanken und Sammlungen unter dieser Instanz festgelegt. Berechtigungen auf Datenbank- und Sammlungsebene müssen manuell festgelegt werden.

In den folgenden Tabellen werden die in jeder der integrierten Berechtigungsgruppen enthaltenen Berechtigungen erläutert.

Sammlungsebene

  • CollectionReadOnly (COLL_RO): umfasst die Berechtigung zum Lesen von Sammlungsdaten

  • CollectionReadWrite (COLL_RW): umfasst die Berechtigung zum Lesen und Schreiben von Sammlungsdaten

  • CollectionAdmin (COLL_ADMIN): umfasst die Berechtigung zum Lesen und Schreiben von Sammlungsdaten und zur Verwaltung von Sammlungen.

In der folgenden Tabelle sind die spezifischen Berechtigungen aufgeführt, die in den drei integrierten Berechtigungsgruppen auf der Sammlungsebene enthalten sind:

Privileg

SammlungNurLesen

SammlungLesenSchreiben

SammlungAdmin

Abfrage

✔️

✔️

✔️

Suche

✔️

✔️

✔️

IndexDetail

✔️

✔️

✔️

GetFlushState

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

HasPartition

✔️

✔️

✔️

ShowPartitions

✔️

✔️

✔️

ListAliases

✔️

✔️

✔️

DescribeCollection

✔️

✔️

✔️

DescribeAlias

✔️

✔️

✔️

GetStatistiken

✔️

✔️

✔️

CreateIndex

✔️

✔️

DropIndex

✔️

✔️

CreatePartition

✔️

✔️

DropPartition

✔️

✔️

Laden

✔️

✔️

Freigeben

✔️

✔️

Einfügen

✔️

✔️

Löschen

✔️

✔️

Upsertieren

✔️

✔️

Importieren

✔️

✔️

Spülen

✔️

✔️

Verdichtung

✔️

✔️

LoadBalance

✔️

✔️

CreateAlias

✔️

DropAlias

✔️

Datenbank-Ebene

  • DatabaseReadOnly (DB_RO): umfasst die Berechtigung zum Lesen von Datenbankdaten

  • DatabaseReadWrite (DB_RW): umfasst die Berechtigung zum Lesen und Schreiben von Datenbankdaten

  • DatabaseAdmin (DB_Admin): umfasst die Berechtigung zum Lesen und Schreiben von Datenbankdaten und zur Verwaltung von Datenbanken.

In der folgenden Tabelle sind die spezifischen Berechtigungen aufgeführt, die in den drei integrierten Berechtigungsgruppen auf Datenbankebene enthalten sind:

Privileg

DatenbankNurLesen

DatenbankLesenSchreiben

DatenbankAdmin

Sammlungen anzeigen

✔️

✔️

✔️

DescribeDatabase

✔️

✔️

✔️

CreateCollection

✔️

DropCollection

✔️

AlterDatabase

✔️

✔️

Cluster-Ebene

  • ClusterReadOnly (Cluster_RO): umfasst die Berechtigung zum Lesen von Instanzdaten

  • ClusterReadWrite (Cluster_RW): umfasst die Berechtigung zum Lesen und Schreiben von Instanzdaten

  • ClusterAdmin (Cluster_Admin): umfasst die Berechtigung zum Lesen und Schreiben von Instanzdaten und zur Verwaltung von Instanzen.

In der folgenden Tabelle sind die spezifischen Berechtigungen aufgeführt, die in den drei integrierten Berechtigungsgruppen auf Instanzebene enthalten sind:

Privileg

ClusterReadOnly

ClusterReadWrite

ClusterAdmin

ListDatabases

✔️

✔️

✔️

RenameCollection

✔️

CreateOwnership

✔️

UpdateUser

✔️

DropOwnership

✔️

SelectOwnership

✔️

✔️

✔️

ManageOwnership

✔️

SelectUser

✔️

✔️

✔️

BackupRBAC

✔️

WiederherstellenRBAC

✔️

CreateResourceGroup

✔️

DropResourceGroup

✔️

UpdateResourceGroups

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

ListResourceGroups

✔️

✔️

✔️

TransferNode

✔️

✔️

TransferReplica

✔️

✔️

CreateDatabase

✔️

DropDatabase

✔️

FlushAll

✔️

✔️

CreatePrivilegeGroup

✔️

DropPrivilegeGroup

✔️

ListPrivilegeGroups

✔️

OperatePrivilegeGroup

✔️

Prozeduren

Sie können eine Berechtigungsgruppe erstellen und dann der Berechtigungsgruppe Berechtigungen hinzufügen.

Erstellen einer Berechtigungsgruppe

Das folgende Beispiel zeigt, wie Sie eine Berechtigungsgruppe mit dem Namen privilege_group_1 erstellen.

from pymilvus import MilvusClient
client.create_privilege_group(group_name='privilege_group_1'
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.CreatePrivilegeGroup(ctx, milvusclient.NewCreatePrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.CreatePrivilegeGroupReq;

client.createPrivilegeGroup(CreatePrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.createPrivilegeGroup({
  group_name: '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"
}'

Hinzufügen von Berechtigungen zu einer Berechtigungsgruppe

Das folgende Beispiel zeigt, wie man die Privilegien PrivilegeBackupRBAC und PrivilegeRestoreRBAC zu der gerade erstellten Privilegiengruppe privilege_group_1 hinzufügt.

from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])
import "github.com/milvus-io/milvus/client/v2/milvusclient"

privileges := []string{"Query", "Search"}
err = client.AddPrivilegesToGroup(ctx, milvusclient.NewAddPrivilegesToGroupOption("privilege_group_1", privileges...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.AddPrivilegesToGroupReq;

client.addPrivilegesToGroup(AddPrivilegesToGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Arrays.asList("Query", "Search"))
        .build());
await client.addPrivilegesToGroup({
  group_name: privilege_group_1,
  privileges: ['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"]
}'

Entfernen von Privilegien aus einer Privilegiengruppe

Das folgende Beispiel demonstriert, wie man das Privileg PrivilegeRestoreRBAC aus der Privilegiengruppe privilege_group_1 entfernt.

from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.RemovePrivilegesFromGroup(ctx, milvusclient.NewRemovePrivilegesFromGroupOption("privilege_group_1", []string{"Search"}...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.RemovePrivilegesFromGroupReq;

client.removePrivilegesFromGroup(RemovePrivilegesFromGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Collections.singletonList("Search"))
        .build());
await client.removePrivilegesFromGroup({
  group_name: "privilege_group_1",
  privileges: ["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"]
}'

Auflisten von Berechtigungsgruppen

Das folgende Beispiel zeigt, wie man alle vorhandenen Berechtigungsgruppen auflistet.

from pymilvus import MilvusClient
client.list_privilege_groups()
import "github.com/milvus-io/milvus/client/v2/milvusclient"

groups, err := client.ListPrivilegeGroups(ctx, milvusclient.NewListPrivilegeGroupsOption())
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
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();
await client.listPrivilegeGroups();
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'

Unten sehen Sie eine Beispielausgabe.

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

Aufheben einer Berechtigungsgruppe

Das folgende Beispiel demonstriert, wie die Berechtigungsgruppe privilege_group_1 gelöscht wird.

from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.DropPrivilegeGroup(ctx, milvusclient.NewDropPrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.DropPrivilegeGroupReq;

client.dropPrivilegeGroup(DropPrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.dropPrivilegeGroup({group_name: '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

War diese Seite hilfreich?