Créer des utilisateurs et des rôles
Milvus permet un contrôle d'accès précis grâce à la méthode RBAC. Vous pouvez commencer par créer des utilisateurs et des rôles, puis attribuer des privilèges ou des groupes de privilèges aux rôles, et enfin gérer le contrôle d'accès en accordant des rôles aux utilisateurs. Cette méthode garantit l'efficacité et la sécurité de la gestion des accès. Cette page présente la création d'utilisateurs et de rôles dans Milvus.
Utilisateur
Après l'initialisation d'une instance Milvus, un utilisateur racine est automatiquement généré pour l'authentification lors de la première connexion à Milvus. Le nom d'utilisateur de l'utilisateur racine est root
et le mot de passe est Milvus
. Le rôle par défaut de l'utilisateur racine est admin
, qui a accès à toutes les ressources. Pour garantir la sécurité des données, veuillez conserver les informations d'identification de l'utilisateur racine afin d'éviter tout accès non autorisé.
Pour les opérations quotidiennes, nous recommandons de créer des utilisateurs au lieu d'utiliser l'utilisateur racine.
Créer un utilisateur
L'exemple suivant montre comment créer un utilisateur avec le nom d'utilisateur user_1
et le mot de passe P@ssw0rd
. Le nom d'utilisateur et le mot de passe de l'utilisateur doivent respecter les règles suivantes.
Nom d'utilisateur : doit commencer par une lettre et ne peut inclure que des lettres majuscules ou minuscules, des chiffres et des traits de soulignement.
Mot de passe : il doit être composé de 8 à 64 caractères et doit inclure trois des éléments suivants : lettres majuscules, lettres minuscules, chiffres et caractères spéciaux.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.create_user(user_name="user_1", password="P@ssw0rd")
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.rbac.request.CreateUserReq;
ConnectConfig connectConfig = ConnectConfig.builder()
.uri("http://localhost:19530")
.token("root:Milvus")
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
CreateUserReq createUserReq = CreateUserReq.builder()
.userName("user_1")
.password("P@ssw0rd")
.build();
client.createUser(createUserReq);
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.createUser({
username: 'user_1',
password: 'P@ssw0rd',
});
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"userName": "user_1",
"password": "P@ssw0rd"
}'
Mise à jour du mot de passe
Après avoir créé un utilisateur, vous pouvez mettre à jour le mot de passe en cas d'oubli.
Le nouveau mot de passe doit également respecter la règle suivante.
- Il doit être composé de 8 à 64 caractères et inclure trois des éléments suivants : lettres majuscules, lettres minuscules, chiffres et caractères spéciaux.
L'exemple suivant montre comment mettre à jour le mot de passe de l'utilisateur user_1
en NewP@ssw0rd
.
from pymilvus import MilvusClient
client.update_password(
user_name="user_1",
old_password="P@ssw0rd",
new_password="NewP@ssw0rd"
)
import io.milvus.v2.service.rbac.request.UpdatePasswordReq;
UpdatePasswordReq updatePasswordReq = UpdatePasswordReq.builder()
.userName("user_1")
.password("P@ssw0rd")
.newPassword("NewP@ssw0rd")
.build();
client.updatePassword(updatePasswordReq);
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.updateUser({
username: 'user_1',
newPassword: 'P@ssw0rd',
oldPassword: 'NewP@ssw0rd',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/update_password" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"newPassword": "P@ssw0rd!",
"userName": "user_1",
"password": "P@ssw0rd"
}'
Lister les utilisateurs
Après avoir créé plusieurs utilisateurs, vous pouvez dresser la liste de tous les utilisateurs existants et les afficher.
from pymilvus import MilvusClient
client.list_users()
List<String> resp = client.listUsers();
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.listUsers();
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'
Voici un exemple de résultat. root
est l'utilisateur par défaut généré automatiquement dans Milvus. user_1
est le nouvel utilisateur qui vient d'être créé.
['root', 'user_1']
Rôle
Milvus fournit un rôle intégré appelé admin
, qui est un rôle d'administrateur pouvant accéder aux ressources sous toutes les instances et disposant de privilèges pour toutes les opérations. Pour une gestion plus fine des accès et une meilleure sécurité des données, il est recommandé de créer des rôles personnalisés en fonction de vos besoins.
Créer un rôle
L'exemple suivant montre comment créer un rôle nommé role_a
.
Le nom du rôle doit respecter la règle suivante.
- Il doit commencer par une lettre et ne peut comprendre que des lettres majuscules ou minuscules, des chiffres et des traits de soulignement."
from pymilvus import MilvusClient
client.create_role(role_name="role_a")
import io.milvus.v2.service.rbac.request.CreateRoleReq;
CreateRoleReq createRoleReq = CreateRoleReq.builder()
.roleName("role_a")
.build();
client.createRole(createRoleReq);
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.createRole({
roleName: 'role_a',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a"
}'
Lister les rôles
Après avoir créé plusieurs rôles, vous pouvez lister et visualiser tous les rôles existants.
from pymilvus import MilvusClient
client.list_roles()
List<String> roles = client.listRoles();
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.listRoles(
includeUserInfo: True
);
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'
Voici un exemple de sortie. admin
est le rôle par défaut dans Milvus. role_a
est le nouveau rôle qui vient d'être créé.
['admin', 'role_a']