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

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

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

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

📘Notes

この機能は Dedicated クラスターでのみ利用可能です。

ロールの作成

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

ロール名は文字で始まる必要があり、大文字または小文字の文字、数字、およびアンダースコアのみを含めることができます。

from pymilvus import MilvusClient

client.create_role(role_name="role_a")

List roles

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

from pymilvus import MilvusClient

client.list_roles()

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

['role_a']

ロールに特権または特権グループを付与する

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

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

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

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

📘Notes

特定の特権とカスタム特権グループをロールに付与する必要がある場合は、まず サポートチケットを作成 して、この機能を有効化していただく必要があります。

以下の例では、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": [
"Search"
]
}

ロールから特権または特権グループを取り消す

次の例では、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 を削除する方法を示します。

📘Notes

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

from pymilvus import MilvusClient

client.drop_role(role_name="role_a")

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

from pymilvus import MilvusClient

client.list_roles()

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

['admin']