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

クラスターロールの管理(SDK)

クラスターロールは、ユーザーがクラスター内で持つ権限を定義します。より具体的には、クラスターロールはクラスターユーザーのクラスター、データベース、およびコレクションレベルでの権限を制御します。

このガイドでは、ロールの作成方法、組み込み権限グループをロールに付与する方法、ロールから権限グループを取り消す方法、最後にロールを削除する方法を説明します。組み込み権限グループの詳細については、権限を参照してください。

📘注意

この機能は専用クラスターでのみ利用できます。

ロールの作成

以下の例は、role_aという名前のロールを作成する方法を示しています。

ロール名は以下のルールに従う必要があります:

  • 文字で始まり、英大文字、英小文字、数字、およびアンダースコアのみを含めることができます。
from pymilvus import MilvusClient

client.create_role(role_name="role_a")
import io.milvus.v2.service.rbac.request.CreateRoleReq;

ロール一覧表示

いくつかのロールを作成した後、既存のすべてのロールを一覧表示および表示できます。

from pymilvus import MilvusClient

client.list_roles()

以下は出力例です。role_aは新しく作成されたロールです。

['role_a']

ロールへの権限または権限グループの付与

Zilliz Cloudでは、ロールに以下を付与できます:

  • 権限:Zilliz Cloudはさまざまな種類の権限を提供します。詳細については、すべての権限を参照してください。

  • 組み込み権限グループ:Zilliz Cloudは9つの組み込み権限グループを提供します。各組み込み権限グループに含まれる特定の権限の詳細については、組み込み権限グループを参照してください。

  • カスタム権限グループ:組み込み権限がニーズを満たさない場合、異なる権限を組み合わせて独自のカスタム権限グループを作成できます。詳細については、カスタム権限グループを参照してください。

📘注意

特定の権限およびカスタム権限グループをロールに付与する必要がある場合は、まずサポートチケットを作成して、当社がこの機能を有効にできるようにしてください。

以下の例は、defaultデータベース配下のcollection_01に対する権限PrivilegeSearchおよびprivilege_group_1という名前のカスタム権限グループを、ロールrole_aに付与する方法を示しています。

from pymilvus import MilvusClient

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='*',
)

ロールの詳細表示

以下の例は、describe_roleメソッドを使用してロールrole_aに付与された権限を表示する方法を示しています。

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")

以下は出力例です。

{
"role": "role_a",
"privileges": [
"COLL_ADMIN"
]
}

ロールからの権限または権限グループの取り消し

以下の例は、defaultデータベース配下のcollection_01に対する権限PrivilegeSearchおよびロールrole_aに付与された権限グループprivilege_group_1を取り消す方法を示しています。

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='*',
)

ロールの削除

以下の例は、ロールrole_aを削除する方法を示しています。

📘注意

組み込みロールadminは削除できません。

from pymilvus import MilvusClient

client.drop_role(role_name="role_a")

ロールが削除されたら、既存のすべてのロールを一覧表示して削除操作が成功したかどうかを確認できます。

from pymilvus import MilvusClient

client.list_roles()

以下は出力例です。リストにはrole_aがありません。削除操作は成功しました。

['admin']