メインコンテンツまでスキップ

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

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

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

📘Notes

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

ロールを作成する

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

ロール名は英字で始まる必要があり、使用できる文字は大文字・小文字の英字、数字、アンダースコアのみです。

python
from pymilvus import MilvusClient

client.create_role(role_name="role_a", description="a cluster read only role")

ロールを一覧表示する

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

python
from pymilvus import MilvusClient

client.list_roles()

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

bash
['role_a']

ロールに権限グループを付与する

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

  • 組み込み権限グループ: Zilliz Cloud には9つの組み込み権限グループがあります。各グループに含まれる具体的な権限の詳細については、Built-in privilege groups を参照してください。

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

📘Notes
  • カスタム権限グループをロールに付与する場合は、機能を有効化するため サポートチケットを作成 してください。

  • Milvus 2.5.x 以降を実行しているクラスターでは、個別の権限はサポートされなくなりました。

次の例は、privilege_group_1 という名前のカスタム権限グループと、組み込み権限グループ ClusterReadOnly をロール role_a に付与する方法を示しています。

python
from pymilvus import MilvusClient

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

パラメーターとその説明は以下のとおりです。

  • role_name: 権限グループを付与する対象のロール名です。

  • privilege: ロールに付与する権限グループです。指定可能な値については、Privileges & Privilege Groups を参照してください。

  • Resource: 権限グループの対象となるリソースです。特定のクラスター、データベース、またはコレクションを指定できます。

    リソースの指定方法については、下表を参照してください。

    レベル

    リソース

    付与方法

    備考

    コレクション

    特定のコレクション

     client.grant_privilege_v2(     role_name="roleA",      privilege="CollectionAdmin",     collection_name="col1",      db_name="db1" )

    対象のコレクション名と、そのコレクションが属するデータベース名を入力します。

    特定のデータベース配下のすべてのコレクション

     client.grant_privilege_v2(     role_name="roleA",      privilege="CollectionAdmin",     collection_name="*",      db_name="db1" )

    対象のデータベース名と、コレクション名としてワイルドカード * を入力します。

    データベース

    特定のデータベース

     client.grant_privilege_v2(     role_name="roleA",      privilege="DatabaseAdmin",      collection_name="*",      db_name="db1" )

    対象のデータベース名と、コレクション名としてワイルドカード * を入力します。

    現在のインスタンス配下のすべてのデータベース

     client.grant_privilege_v2(     role_name="roleA",      privilege="DatabaseAdmin",      collection_name="*",      db_name="*" )

    データベース名として * を、コレクション名として * を入力します。

    インスタンス

    現在のインスタンス

     client.grant_privilege_v2(     role_name="roleA",      privilege="ClusterAdmin",      collection_name="*",      db_name="*" )

    データベース名として * を、コレクション名として * を入力します。

ロールの詳細確認

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

python
from pymilvus import MilvusClient

client.describe_role(role_name="role_a")

以下は出力例です。

python
{
"role": "role_a",
"descripton": "a cluster read only role",
"privilege": "ClusterReadOnly"
}

ロールから権限グループを取り消す

次の例では、ロール role_a に付与されたカスタム権限グループ privilege_group_1 および組み込み権限グループ ClusterReadOnly を取り消す方法を示します。

python
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 は削除できません。

python
from pymilvus import MilvusClient

client.drop_role(role_name="role_a")

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

python
from pymilvus import MilvusClient

client.list_roles()

以下は出力例です。リストに role_a が含まれていない場合、削除操作は成功しています。

bash
['admin']
Ctrl I