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

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

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

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

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つの組み込み権限グループが提供されています。各組み込み権限グループに含まれる具体的な権限の詳細については、組み込み権限グループ を参照してください。

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

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: ロールに付与する権限グループです。使用可能なオプションについては、権限と権限グループ を参照してください。

  • 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']