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

クラスターロールの管理(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 以降を実行しているクラスターでは、個別の権限はサポートされなくなりました。

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

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