メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

クラスタ資格情報(SDK)

Zilliz Cloudは、Web UI上でクラスター資格情報を管理するだけでなく、資格情報管理用のSDKを提供することで機能を拡張しています。この統合により、柔軟性が向上し、Web UI単体よりも多くのカスタマイズオプションが提供されます。

バックエンドには、3つの組み込みロールオプションがあります。

  • db_admin:クラスタと関連リソースを完全に制御します。

  • db_rw:クラスター内のコレクションとインデックスの読み取り、書き込み、および管理の許可。

  • db_ro:ほとんどのクラスタリソースの表示権がありますが、作成、変更、削除の機能はありません。

詳細については、クラスタロールの管理(コンソール)を参照してください。

クラスターの役割とユーザーを一覧表示する

クラスタ内のすべての組み込みロールとユーザーを次のようにリストできます。

from pymilvus import MilvusClient

CLUSTER_ENDPOINT = "YOUR_CLUSTER_ENDPOINT"
TOKEN = "YOUR_CLUSTER_TOKEN"

# 1. Set up a Milvus client
client = MilvusClient(
uri=CLUSTER_ENDPOINT,
token=TOKEN
)

# 2. List roles and users
roles = client.list_roles()

print(roles)

# Output
#
# ["db_admin", "db_ro", "db_rw"]

users = client.list_users()

print(users)

# Output
#
# ["db_admin"]

クラスタユーザの作成

クラスターユーザーを作成するには、次のコードスニペットを使用します。

# 3. Create a user

if 'user1' not in users:
client.create_user(
user_name="user1",
password="p@ssw0rd!"
)

users = client.list_users()

print(users)

# Output
#
# ["db_admin", "user1"]

クラスターユーザーを作成したら、そのユーザー名とパスワードを使用してクラスターに接続できます。詳細については、Clusterに接続を参照してください。詳細については、Authenticate User Access and Enable RBAC を参照してください。

ユーザーの資格情報を更新する

ユーザーのパスワードを更新するには、以下のコードを使用してください

# 4. Update a user credentials

client.update_password(
user_name="user1",
old_password="p@ssw0rd!",
new_password="p@ssw0rd123!"
)

役割を説明する

ユーザーにロールを割り当てる前に、ロールが持つ権限を確認することをお勧めします。Zilliz Cloudには、異なる権限を持つdb_rodb_admindb_rwの3つのプリセットロールがあります。

次のコードスニペットは、db_roロールの詳細を示しています。

# 5. Describe the role
res = client.describe_role(role_name="db_ro")

print(res)

# Output
#
# {
# "role": "db_ro",
# "privileges": [
# {
# "object_type": "Collection",
# "object_name": "*",
# "db_name": "default",
# "role_name": "db_ro",
# "privilege": "GetLoadState"
# },
# {
# "object_type": "Collection",
# "object_name": "*",
# "db_name": "default",
# "role_name": "db_ro",
# "privilege": "GetLoadingProgress"
# },
# {
# "object_type": "Collection",
# "object_name": "*",
# "db_name": "default",
# "role_name": "db_ro",
# "privilege": "HasPartition"
# },
# "(10 more items hidden)"
# ]
# }

クラスターユーザーに役割を割り当てる

user 1にdb_roロールを割り当て:

# 6. Assign a role to a user

client.grant_role(
user_name="user1",
role_name="db_ro"
)

# 7. Describe a user

user_info = client.describe_user(
user_name="user1"
)

print(user_info)

# Output
#
# {
# "user_name": "user1",
# "roles": "(\"db_ro\")"
# }

ユーザーから役割を取り消す

ユーザーからロールを取り消すには:

# 8. Revoke a role from a user

client.revoke_role(
user_name="user1",
role_name="db_ro"
)

ユーザーを削除

ユーザーが不要になった場合は、以下のように削除してください:

# 9. Drop a user

client.drop_user(
user_name="user1"
)