クラスターユーザーの管理(SDK)
Zilliz Cloudでは、クラスターユーザーを作成し、権限を定義するためにクラスターロールを割り当てることで、データセキュリティを実現できます。
このガイドでは、クラスターユーザーの作成、ユーザーへのロール付与、ユーザーからのロール取り消し、および最終的なユーザー削除の方法を説明します。クラスターロールの詳細については、クラスターロールの管理(コンソール)を参照してください。
ユーザーを作成
以下の例は、ユーザー名user_1およびパスワードP@ssw0rdを持つユーザーを作成する方法を示しています。ユーザーのユーザー名とパスワードは、以下の規則に従う必要があります:
-
ユーザー名:文字で始まり、大文字または小文字の英字、数字、およびアンダースコアのみを含めることができます。
-
パスワード:8〜64文字の長さで、大文字、小文字、数字、および特殊文字のうち3つ以上を含める必要があります。
- Python
- Java
- NodeJS
- cURL
from pymilvus import MilvusClient
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)
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("YOUR_CLUSTER_ENDPOINT")
.token("YOUR_CLUSTER_TOKEN")
.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 = "YOUR_CLUSTER_ENDPOINT";
const token = "YOUR_CLUSTER_TOKEN";
const client = new MilvusClient({address, token});
await milvusClient.createUser({
username: 'user_1',
password: 'P@ssw0rd',
});
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
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"
}'
ユーザーを一覧表示
複数のユーザーを作成した後、すべての既存のユーザーを一覧表示して確認できます。
- Python
- Java
- NodeJS
- cURL
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 '{}'
以下は出力例です。rootは自動的に生成されたデフォルトユーザーです。user_1は作成されたばかりの新しいユーザーです。
['root', 'user_1']
ユーザーにロールを付与
以下の例は、ロールrole_aをユーザーuser_1に付与する方法を示しています。
- Python
- Java
- NodeJS
- cURL
from pymilvus import MilvusClient
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)
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 = "YOUR_CLUSTER_ENDPOINT";
String TOKEN = "YOUR_CLUSTER_TOKEN";
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);
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "YOUR_CLUSTER_ENDPOINT";
const token = "YOUR_CLUSTER_TOKEN";
const client = new MilvusClient({address, token});
milvusClient.grantRole({
username: 'user_1',
roleName: 'role_a'
})
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
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"
}'
ユーザーの説明
ユーザーにロールを付与すると、describe_user()メソッドを使用して付与操作が成功したか確認できます。
以下の例は、ユーザーuser_1のロールを確認する方法を示しています。
- Python
- Java
- NodeJS
- cURL
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);
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
milvusClient.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"
}'
以下は出力例です。
{'user_name': 'user_1', 'roles': 'role_a'}
ロールを取り消し
ユーザーに割り当てられたロールを取り消すこともできます。
以下の例は、ユーザーuser_1に割り当てられたロールrole_aを取り消す方法を示しています。
- Python
- Java
- NodeJS
- cURL
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());
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"
}'
ユーザーを削除
以下の例は、ユーザーuser_1を削除する方法を示しています。
rootユーザーは削除できません。
- Python
- Java
- NodeJS
- cURL
from pymilvus import MilvusClient
client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)
# create a user
client.drop_user(user_name="user_1")
import io.milvus.v2.client.ConnectConfig
import io.milvus.v2.client.MilvusClientV2
import io.milvus.v2.service.rbac.request.DropUserReq
ConnectConfig connectConfig = ConnectConfig.builder()
.uri("YOUR_CLUSTER_ENDPOINT")
.token("YOUR_CLUSTER_TOKEN")
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
DropUserReq dropUserReq = DropUserReq.builder()
.userName("user_1")
.build();
client.dropUser(dropUserReq);
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "YOUR_CLUSTER_ENDPOINT";
const token = "YOUR_CLUSTER_TOKEN";
const client = new MilvusClient({address, token});
milvusClient.deleteUser({
username: 'user_1'
})
export CLUSTER_ENDPOINT="YOUR_CLUSTER_ENDPOINT"
export TOKEN="YOUR_CLUSTER_TOKEN"
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"userName": "user_1"
}'
ユーザーが削除されたら、すべての既存のユーザーを一覧表示して、削除操作が成功したか確認できます。
- Python
- Java
- NodeJS
- cURL
from pymilvus import MilvusClient
client.list_users()
import io.milvus.v2.service.rbac.request.listUsersReq
List<String> resp = client.listUsers();
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
milvusClient.listUsers()
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/users/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'
以下は出力例です。リストにuser_1はありません。削除操作は成功しました。
['root']