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. In der folgenden Tabelle wird erläutert, wie die Ressource in der Methode
client.grantV2()
anzugeben ist.
Ebene | Ressource | Gewährung Methode | Hinweise |
---|---|---|---|
Sammlung | Eine spezifische 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 Ihrer Zieldatenbank und einen Platzhalter | |
**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 |
Alle Datenbanken unter der aktuellen Instanz | client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="*") | Geben Sie | |
**Instanz** | Die aktuelle Instanz | client.grant_privilege_v2(role_name="roleA", privilege="ClusterAdmin", collection_name="*", db_name="*") | Geben Sie |
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** | **Relevante API-Beschreibung auf der Client-Seite** |
---|---|---|---|
Datenbank-Privilegien | ListDatabases | Alle Datenbanken in der aktuellen Instanz anzeigen | |
DescribeDatabase | Zeigt die Details einer Datenbank an | [DescribeDatabase](https://milvus.io/docs/manage_databases.md) | |
CreateDatabase | Erstellen einer Datenbank | [CreateDatabase](https://milvus.io/docs/manage_databases.md) | |
DropDatabase | Eine Datenbank löschen | ||
AlterDatabase | Ändern der Eigenschaften einer Datenbank | ||
Sammlungsprivilegien | GetFlushState | Überprüfen des Status des Flush-Vorgangs der Sammlung | [GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md) |
GetLoadState | Überprüfung des Ladestatus einer Sammlung | ||
GetLoadingProgress | Überprüfung des Ladefortschritts einer Sammlung | ||
ShowCollections | Alle Sammlungen mit Sammlungsprivilegien anzeigen | [ShowCollections](https://milvus.io/docs/view-collections.md) | |
ListAliases | Alle Aliasnamen einer Sammlung anzeigen | ||
DescribeCollection | Anzeigen der Details einer Sammlung | ||
DescribeAlias | Anzeige der Details eines Alias | ||
GetStatistics | Abrufen der Statistiken einer Sammlung (z. B. die Anzahl der Entitäten in einer Sammlung) | ||
CreateCollection | Erstellen einer Sammlung | [CreateCollection](https://milvus.io/docs/create-collection.md) | |
DropCollection | Verwerfen einer Sammlung | ||
Laden | Laden einer Sammlung | [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) | |
Freigeben | Eine Sammlung freigeben | [ReleaseCollection](https://milvus.io/docs/load-and-release.md) | |
Flush | Persistiert alle 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](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) | |
Verdichtung | Manuelles Auslösen der Verdichtung | ||
RenameCollection | Umbenennen einer Sammlung | [RenameCollection](https://milvus.io/docs/modify-collection.md) | |
CreateAlias | Erzeugen eines Alias für eine Sammlung | ||
DropAlias | Den Alias einer Sammlung löschen | ||
FlushAll | Alle Sammlungen in einer Datenbank leeren | [FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md) | |
Partitionieren von Privilegien | HasPartition | Prüfen, ob eine Partition existiert | |
ShowPartitions | Alle Partitionen in einer Sammlung anzeigen | [ShowPartitions](https://milvus.io/docs/manage-partitions.md) | |
CreatePartition | Eine Partition erstellen | [CreatePartition](https://milvus.io/docs/manage-partitions.md) | |
DropPartition | Verwerfen einer Partition | [DropPartition](https://milvus.io/docs/manage-partitions.md) | |
Index Privilegien | IndexDetail | Anzeige der Details eines Indexes | |
CreateIndex | Erstellen eines Indexes | [CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating) | |
DropIndex | Verwerfen eines Index | [DropIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating) | |
Privilegien für die Ressourcenverwaltung | LoadBalance | Lastausgleich erreichen | |
CreateResourceGroup | Erstellen einer Ressourcengruppe | ||
DropResourceGroup | Verwerfen einer Ressourcengruppe | [DropResourceGroup](https://milvus.io/docs/resource_group.md) | |
UpdateResourceGroups | Aktualisieren einer Ressourcengruppe | [UpdateResourceGroups](https://milvus.io/docs/resource_group.md) | |
DescribeResourceGroup | Anzeigen der Details einer Ressourcengruppe | [DescribeResourceGroup](https://milvus.io/docs/resource_group.md) | |
ListResourceGroups | Zeigt alle Ressourcengruppen der aktuellen Instanz an | [ListResourceGroups](https://milvus.io/docs/resource_group.md) | |
TransferKnoten | Übertragen von Knoten zwischen Ressourcengruppen | ||
Replikate übertragen | Replikate zwischen Ressourcengruppen übertragen | ||
BackupRBAC | Erstellt ein Backup für alle RBAC-bezogenen Operationen in der aktuellen Instanz | BackupRBAC | |
WiederherstellenRBAC | Wiederherstellen eines Backups aller RBAC-bezogenen Operationen in der aktuellen Instanz | WiederherstellenRBAC | |
Entität Privilegien | Abfrage | Durchführen einer Abfrage | |
Suche | Durchführen einer Suche | ||
Einfügen | Entitäten einfügen | ||
Löschen | Entitäten löschen | ||
Upsertieren | Upsert Entitäten | ||
Importieren | Masseneinfügung oder -import von Entitäten | [Masseneinfügung/Import](https://milvus.io/docs/import-data.md) | |
RBAC-Berechtigungen | CreateOwnership | Erstellen eines Benutzers oder einer Rolle | [CreateUser/CreateRole](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d) |
UpdateUser | Aktualisieren des Passworts eines Benutzers | [UpdateCredential](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d) | |
DropOwnership | Löschen eines Benutzerpassworts oder einer Rolle | [DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh) | |
SelectOwnership | Alle Benutzer anzeigen, denen eine bestimmte Rolle gewährt wird | [SelectRole/SelectGrant](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue) | |
ManageOwnership | Verwalten eines Benutzers oder einer Rolle oder Erteilen einer Rolle an einen Benutzer | ||
SelectUser | Alle einem Benutzer gewährten Rollen anzeigen | [SelectUser](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue) | |
CreatePrivilegeGroup | Erstellen einer Privilegiengruppe | [CreatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
DropPrivilegeGroup | Löschen einer Berechtigungsgruppe | [DropPrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
ListPrivilegeGroups | Alle Berechtigungsgruppen in der aktuellen Instanz anzeigen | [ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
OperatePrivilegeGroup | Hinzufügen von Privilegien zu oder Entfernen von Privilegien aus einer Privilegiengruppe | [OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) |
Das folgende Beispiel zeigt, wie das Privileg PrivilegeSearch
auf collection_01
unter der Standarddatenbank sowie eine Privilegiengruppe namens privilege_group_1
der Rolle role_a
gewährt wird.
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":"*"
}'
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-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"
}'
Unten sehen Sie eine Beispielausgabe.
{
"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 Standarddatenbank sowie die Privilegiengruppe privilege_group_1
, die der Rolle role_a
gewährt wurden, entzogen werden können.
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":"*"
}'