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

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

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

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

📘Notes

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

ロールの作成

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

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

from pymilvus import MilvusClient

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

List roles

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

from pymilvus import MilvusClient

client.list_roles()

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

['role_a']

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

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

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

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

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

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

以下の例では、カスタム特権グループ privilege_group_1 と組み込み特権グループ ClusterReadOnly をロール role_a に付与する方法を示しています。

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

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

    次の表は、リソースの指定方法を説明しています。

    レベル

    リソース

    付与方法

    備考

    コレクション

    特定のコレクション

     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 に付与された権限を表示する方法を示します。

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")

以下は出力例です。

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

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

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

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