milvus-logo
LFAI
フロントページへ
  • 管理ガイド

ロールへの特権または特権グループの付与

ロールを作成すると、そのロールに特権を付与することができます。このガイドでは、ロールに特権または特権グループを付与する方法を紹介します。

ロールへの特権または特権グループの付与

Milvus 2.5では、付与操作を効率化する新しいバージョンのAPIが導入されました。ロールに権限を付与する際に、オブジェクトタイプを調べる必要がなくなりました。以下にパラメータとその説明を示します。

  • role_name:特権または特権グループを付与する対象となるロールの名前です。

  • リソース:特定のインスタンス、データベース、コレクションを指定することができます。以下の表では、client.grantV2() メソッドでリソースを指定する方法を説明します。

レベル

リソース

付与方法

注意事項

コレクション

特定のコレクション

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="*")

データベース名として`*` 、コレクション名として`*`

  • 特権:ロールに付与する必要のある特定の権限または権限グループ。現在、Milvusでは56種類の権限を付与することができます。下の表はMilvusの権限の一覧です。

    下表のタイプ列は権限の検索を容易にするためのものであり、分類の目的のみに使用されます。権限を付与する際、タイプを理解する必要はありません。対応する権限を入力するだけです。

**タイプ

**特権

**説明

**クライアント側の関連APIの記述**。

データベース権限

データベース一覧

現在のインスタンスのすべてのデータベースを表示する

[ListDatabases](https://milvus.io/docs/manage_databases.md)

データベースの詳細を表示する

データベースの詳細を表示する

[DescribeDatabase](https://milvus.io/docs/manage_databases.md)

データベースの作成

データベースを作成する

[CreateDatabase](https://milvus.io/docs/manage_databases.md)

データベースの削除

データベースを削除する

[DropDatabase](https://milvus.io/docs/manage_databases.md)

データベースのプロパティを変更する

データベースのプロパティを変更する

[AlterDatabase](https://milvus.io/docs/manage_databases.md)

コレクション権限

GetFlushState

コレクションのフラッシュ操作の状態を確認する

[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

GetLoadState

コレクションのロード状態をチェックする

[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

GetLoadingProgress

コレクションのロード進行状況を確認する

[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)

コレクションの表示

コレクション権限ですべてのコレクションを表示する

[ShowCollections](https://milvus.io/docs/view-collections.md)

エイリアス一覧

コレクションのエイリアスをすべて表示する

[ListAliases](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/list_aliases.md)

コレクションの詳細表示

コレクションの詳細を表示する

[DescribeCollection](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_collection.md)

エイリアス

エイリアスの詳細を表示

[DescribeAlias](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/describe_alias.md)

GetStatistics

コレクションの統計情報を取得する (コレクション内のエンティティ数など)

[GetCollectionStatistics](https://milvus.io/api-reference/pymilvus/v2.5.x/MilvusClient/Collections/get_collection_stats.md)

コレクションの作成

コレクションを作成する

[CreateCollection](https://milvus.io/docs/create-collection.md)

コレクションの削除

コレクションを削除する

[DropCollection](https://milvus.io/docs/drop-collection.md)

ロード

コレクションをロードする

[LoadCollection](https://milvus.io/docs/load-and-release.md)/[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)/[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md)

リリース

コレクションを解放する

[ReleaseCollection](https://milvus.io/docs/load-and-release.md)

フラッシュ

コレクション内のすべてのエンティティを密封されたセグメントに永続化します。フラッシュ操作の後に挿入されたエンティティは、新しいセグメントに格納されます。

[Flush](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)/[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)

コンパクション

コンパクションを手動で起動する。

[Compact](https://milvus.io/docs/v2.0.x/compact_data.md)

コレクション名の変更

コレクションの名前を変更する

[RenameCollection](https://milvus.io/docs/modify-collection.md)

エイリアスの作成

コレクションのエイリアスを作成します。

[CreateAlias](https://milvus.io/docs/manage-aliases.md)

エイリアスの削除

コレクションのエイリアスを削除する

[DropAlias](https://milvus.io/docs/manage-aliases.md)

FlushAll

データベース内のすべてのコレクションをフラッシュします。

[FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md)

パーティション権限

HasPartition

パーティションが存在するかチェックする

[HasPartition](https://milvus.io/docs/manage-partitions.md)

パーティションの表示

コレクション内のすべてのパーティションを表示する

[ShowPartitions](https://milvus.io/docs/manage-partitions.md)

パーティションの作成

パーティションを作成する

[CreatePartition](https://milvus.io/docs/manage-partitions.md)

パーティションの削除

パーティションを削除する

[DropPartition](https://milvus.io/docs/manage-partitions.md)

インデックスの権限

インデックスの詳細

インデックスの詳細を見る

[DescribeIndex/GetIndexState/GetIndexBuildProgress](https://milvus.io/docs/index-vector-fields.md?tab=floating)

インデックスの作成

インデックスを作成する

[CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)

インデックスの削除

インデックスを削除する

[DropIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating)。

リソース管理権限

ロードバランス

ロードバランスをとる

[ロードバランス](https://milvus.io/docs/resource_group.md)

リソースグループの作成

リソースグループを作成する

[CreateResourceGroup](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/create_resource_group.md)

リソースグループの削除

リソースグループを削除する

[DropResourceGroup](https://milvus.io/docs/resource_group.md)

リソースグループの更新

リソースグループを更新する

[UpdateResourceGroups](https://milvus.io/docs/resource_group.md)

リソースグループの詳細表示

リソースグループの詳細を表示する

[DescribeResourceGroup](https://milvus.io/docs/resource_group.md)

リソースグループの一覧

現在のインスタンスの全てのリソースグループを表示する

[ListResourceGroups](https://milvus.io/docs/resource_group.md)

ノード転送

リソースグループ間でノードを転送する

[TransferNode](https://milvus.io/docs/resource_group.md)

トランスファーレプリカ

リソースグループ間でレプリカを転送する

[TransferReplica](https://milvus.io/docs/resource_group.md)。

バックアップRBAC

現在のインスタンスのすべてのRBAC関連操作のバックアップを作成する

バックアップRBAC

リストアRBAC

現在のインスタンスのすべてのRBAC関連操作のバックアップをリストアする

リストアRBAC

エンティティ権限

クエリ

クエリを実行する

[クエリー](https://milvus.io/docs/get-and-scalar-query.md)

検索

検索を行う

[検索](https://milvus.io/docs/single-vector-search.md)

挿入

エンティティを挿入する

[挿入](https://milvus.io/docs/insert-update-delete.md)

削除

エンティティを削除する

[削除](https://milvus.io/docs/delete-entities.md)

アップサート

エンティティの挿入

[アップサート](https://milvus.io/docs/upsert-entities.md)

インポート

エンティティの一括挿入またはインポート

[一括挿入/インポート](https://milvus.io/docs/import-data.md)

RBAC権限

オーナーシップの作成

ユーザーまたはロールの作成

[CreateUser/CreateRole](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)

ユーザーの更新

ユーザのパスワードを更新する

[UpdateCredential](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d)。

所有権の削除

ユーザのパスワードまたはロールを削除する

[DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh)

オーナーシップの選択

特定のロールが付与されているすべてのユーザを表示する

[SelectRole/SelectGrant](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

オーナーシップの管理

ユーザまたはロールを管理する、またはユーザにロールを付与する

[OperateUserRole/OperatePrivilege/OperatePrivilegeV2](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

ユーザの選択

ユーザに付与されたすべてのロールを表示する

[SelectUser](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue)

特権グループの作成

特権グループを作成する

[特権グループの作成](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

特権グループの削除

特権グループを削除する

[DropPrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

特権グループの一覧表示

現在のインスタンスのすべての特権グループを表示する

[ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

特権グループの操作

特権グループへの特権の追加または特権グループからの特権の削除

[OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg)

以下の例では、privilege_group_1 という特権グループと同様に、role_a というロールに、デフォルトデータベースのcollection_01 上の特権PrivilegeSearch を付与する方法を示します。

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

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='*',
)
import io.milvus.v2.service.rbac.request.GrantPrivilegeReqV2

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.GrantV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "collection_01", "privilege_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.GrantV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});

await milvusClient.grantPrivilege({
   roleName: 'role_a',
   object: 'Collection', 
   objectName: 'collection_01',
   privilegeName: 'Search'
 });
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "privilege_group_1",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

ロールの記述

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

from pymilvus import MilvusClient

client.describe_role(role_name="role_a")
import io.milvus.v2.service.rbac.response.DescribeRoleResp;
import io.milvus.v2.service.rbac.request.DescribeRoleReq

DescribeRoleReq describeRoleReq = DescribeRoleReq.builder()
        .roleName("role_a")
        .build();
DescribeRoleResp resp = client.describeRole(describeRoleReq);
List<DescribeRoleResp.GrantInfo> infos = resp.getGrantInfos();
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.ListRoles(context.Background())
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")

await milvusClient.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a"
}'

以下は出力例です。

{
     "role": "role_a",
     "privileges": [
         {
             "collection_name": "collection_01",
             "db_name": "default",
             "role_name": "role_a",
             "privilege": "Search",
             "grantor_name": "root"
         },
         "privilege_group_1"
     ]
}

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

次の例では、role_a ロールに付与された特権グループprivilege_group_1 と同様に、デフォルトデータベースcollection_01 の特権PrivilegeSearch を取り消す方法を示します。

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

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='*',
)
import io.milvus.v2.service.rbac.request.RevokePrivilegeReqV2

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("Search")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("privilege_group_1")
        .collectionName("collection_01")
        .dbName("default")
        .build());

client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
        .roleName("role_a")
        .privilege("ClusterReadOnly")
        .collectionName("*")
        .dbName("*")
        .build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"

client.RevokeV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "collection_01", "privielge_group_1", entity.WithOperatePrivilegeDatabase("default"))

client.RevokeV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "Search",
    "collectionName": "collection_01",
    "dbName":"default"
}'

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "roleName": "role_a",
    "privilege": "ClusterReadOnly",
    "collectionName": "*",
    "dbName":"*"
}'

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?