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.
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
COLL_RO: umfasst die Berechtigung zum Lesen von Sammlungsdaten
COLL_RW: umfasst die Berechtigung zum Lesen und Schreiben von Sammlungsdaten
COLL_ADMIN: beinhaltet 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** | **KollektionNurLesen** | **SammlungLesenSchreiben** | **SammlungsAdmin** |
---|---|---|---|
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
DB_RO: umfasst die Berechtigung zum Lesen von Datenbankdaten
DB_RW: umfasst die Berechtigung zum Lesen und Schreiben von Datenbankdaten
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
Cluster_RO: umfasst die Berechtigung zum Lesen von Instanzdaten
Cluster_RW: umfasst die Berechtigung zum Lesen und Schreiben von Instanzdaten
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 namens privilege_group_1
erstellen.
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"
}'
Hinzufügen von Berechtigungen zu einer Berechtigungsgruppe
Das folgende Beispiel zeigt, wie die Privilegien PrivilegeBackupRBAC
und PrivilegeRestoreRBAC
zu der gerade erstellten Privilegiengruppe privilege_group_1
hinzugefügt werden.
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"]
}'
Privilegien aus einer Privilegiengruppe entfernen
Das folgende Beispiel zeigt, 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 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"]
}'
Privilegiengruppen auflisten
Das folgende Beispiel zeigt, wie man alle vorhandenen Berechtigungsgruppen auflistet.
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 '{}'
Unten sehen Sie ein Beispiel für die Ausgabe.
PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>
Löschen einer Berechtigungsgruppe
Das folgende Beispiel zeigt, wie die Berechtigungsgruppe privilege_group_1
gelöscht werden kann.
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"
}'