Rollen an Benutzer vergeben
Nach der Erstellung einer Rolle und der Gewährung von Privilegien für die Rolle können Sie die Rolle an Benutzer vergeben, damit diese auf Ressourcen zugreifen und Aktionen durchführen können, die durch die Rolle definiert sind. Sie können einem Benutzer mehrere Rollen zuweisen oder eine Rolle an mehrere Benutzer vergeben. In diesem Handbuch wird beschrieben, wie Sie Benutzern Rollen zuweisen können.
Dem eingebauten Benutzer root in Milvus wurde bereits die Rolle admin zugewiesen, die über alle Berechtigungen verfügt. Sie brauchen ihm keine weiteren Rollen zuzuweisen.
Einem Benutzer eine Rolle zuweisen
Das folgende Beispiel zeigt, wie Sie dem Benutzer user_1 die Rolle role_a zuweisen.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.grant_role(user_name="user_1", role_name="role_a")
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.rbac.request.GrantRoleReq;
String CLUSTER_ENDPOINT = "http://localhost:19530";
String TOKEN = "root:Milvus";
ConnectConfig connectConfig = ConnectConfig.builder()
.uri(CLUSTER_ENDPOINT)
.token(TOKEN)
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
GrantRoleReq grantRoleReq = GrantRoleReq.builder()
.roleName("role_a")
.userName("user_1")
.build();
client.grantRole(grantRoleReq);
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.GrantRole(ctx, milvusclient.NewGrantRoleOption("user_1", "role_a"))
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.grantRole({
username: 'user_1',
roleName: 'role_a'
});
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/grant_role" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"userName": "user_1"
}'
Beschreiben Sie den Benutzer
Sobald Sie einem Benutzer eine Rolle zugewiesen haben, können Sie mit der Methode describe_user() überprüfen, ob die Zuweisung erfolgreich war.
Das folgende Beispiel zeigt, wie Sie die Rolle(n) des Benutzers user_1 überprüfen können.
from pymilvus import MilvusClient
client.describe_user(user_name="user_1")
import io.milvus.v2.service.rbac.request.DescribeUserReq;
import io.milvus.v2.service.rbac.response.DescribeUserResp;
DescribeUserReq describeUserReq = DescribeUserReq.builder()
.userName("user_1")
.build();
DescribeUserResp describeUserResp = client.describeUser(describeUserReq);
user, err := client.DescribeUser(ctx, milvusclient.NewDescribeUserOption("user_1"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
await client.describeUser({username: 'user_1'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"userName": "user_1"
}'
Nachfolgend finden Sie eine Beispielausgabe.
{'user_name': 'user_1', 'roles': 'role_a'}
Eine Rolle widerrufen
Sie können auch eine Rolle widerrufen, die einem Benutzer zugewiesen wurde.
Das folgende Beispiel zeigt, wie die dem Benutzer user_1 zugewiesene Rolle role_a widerrufen werden kann.
from pymilvus import MilvusClient
client.revoke_role(
user_name='user_1',
role_name='role_a'
)
import io.milvus.v2.service.rbac.request.RevokeRoleReq;
client.revokeRole(RevokeRoleReq.builder()
.userName("user_1")
.roleName("role_a")
.build());
err = client.RevokeRole(ctx, milvusclient.NewRevokeRoleOption("user_1", "role_a"))
if err != nil {
fmt.Println(err.Error())
// handle error
}
await client.revokeRole({
username: 'user_1',
roleName: 'role_a'
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/revoke_role" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"userName": "user_1",
"roleName": "role_a"
}'