特権グループの作成

特権の付与プロセスを効率化するために、複数の特権を特権グループにまとめることをお勧めします。

特権グループと特権の比較

特権グループは複数の特権で構成されます。

Privilege Group Illustrated 特権グループの図解

上図のように、あるロールに3つの異なる権限を付与する必要があるとします。

  • 特権グループを使用しない場合、権限を3回付与する必要があります。

  • 特権グループを使用する場合は、特権グループを作成し、この特権グループに3つの特権を追加して、ロールAに特権グループを付与するだけです。

特権グループを使用すると、ロールに対して複数の特権を一括して付与することができます。

組み込みの特権グループ

Milvusでは、使いやすさを考慮し、コレクション、データベース、インスタンスレベルで合計9つの組み込み権限を提供しています:COLL_RO、COLL_RW、COLL_ADMIN、DB_RO、DB_RW、DB_Admin、Cluster_RO、Cluster_RW、Cluster_Adminです。

3つのレベルの組み込み特権グループにはカスケード関係はありません。インスタンス・レベルで権限グループを設定しても、そのインスタンス配下のすべてのデータベースとコレクションの権限は自動的に設定されません。データベース・レベルとコレクション・レベルの権限は手動で設定する必要があります。

以下の表では、組み込みの各特権グループに含まれる権限について説明します。

コレクション・レベル

  • CollectionReadOnly (COLL_RO): コレクション・データの読み取り権限が含まれます。

  • CollectionReadWrite (COLL_RW): コレクションデータの読み取りと書き込みの権限が含まれます。

  • CollectionAdmin (COLL_ADMIN): コレクションデータの読み取りと書き込み、およびコレクションを管理する権限が含まれます。

下の表は、コレクションレベルの3つの組み込み特権グループに含まれる特定の特権の一覧です:

特権

コレクション読み取り専用

コレクションReadWrite

コレクション管理

クエリ

✔️

✔️

✔️

検索

✔️

✔️

✔️

インデックス詳細

✔️

✔️

✔️

フラッシュ状態

✔️

✔️

✔️

GetLoadState

✔️

✔️

✔️

GetLoadingProgress

✔️

✔️

✔️

パーティション

✔️

✔️

✔️

パーティションの表示

✔️

✔️

✔️

エイリアス一覧

✔️

✔️

✔️

コレクションを記述する

✔️

✔️

✔️

エイリアス

✔️

✔️

✔️

GetStatistics

✔️

✔️

✔️

インデックス作成

✔️

✔️

ドロップインデックス

✔️

✔️

パーティション作成

✔️

✔️

パーティションの削除

✔️

✔️

ロード

✔️

✔️

リリース

✔️

✔️

挿入

✔️

✔️

削除

✔️

✔️

アップサート

✔️

✔️

インポート

✔️

✔️

フラッシュ

✔️

✔️

圧縮

✔️

✔️

ロードバランス

✔️

✔️

エイリアス作成

✔️

エイリアスの削除

✔️

データベースレベル

  • DatabaseReadOnly (DB_RO): データベースデータの読み取り権限を含む

  • DatabaseReadWrite (DB_RW) : デー タ ベース デー タ の読み書 き 権限を含む

  • DatabaseAdmin (DB_Admin): データベース・データの読み取りと書き込み、およびデータベースの管理を行う権限が含まれます。

以下の表は、データベース・レベルの 3 つの組み込み特権グループに含まれる具体的な特権の一覧です:

特権

データベース読み取り専用

データベースReadWrite

データベース管理

コレクションの表示

✔️

✔️

✔️

データベース

✔️

✔️

✔️

コレクションの作成

✔️

✔️

✔️

ドロップコレクション

✔️

アルターデータベース

✔️

✔️

クラスタ・レベル

  • ClusterReadOnly (Cluster_RO): インスタンス・データの読み取り権限が含まれます。

  • ClusterReadWrite (Cluster_RW): インスタンス・データを読み書きする権限が含まれます。

  • ClusterAdmin (Cluster_Admin): インスタンス・データの読み取りと書き込み、およびインスタンスの管理を行う権限が含まれます。

以下の表は、インスタンス・レベルの3つの組み込み特権グループに含まれる具体的な特権の一覧です:

特権

クラスタ読み取り専用

クラスタ読み取り専用

クラスタ管理

データベース一覧

✔️

✔️

✔️

名前の変更

✔️

オーナーシップの作成

✔️

ユーザーの更新

✔️

ドロップオーナーシップ

✔️

セレクトオーナーシップ

✔️

✔️

✔️

オーナーシップの管理

✔️

ユーザー選択

✔️

✔️

✔️

バックアップRBAC

✔️

リストアRBAC

✔️

リソースグループの作成

✔️

リソースグループの削除

✔️

リソースグループの更新

✔️

✔️

DescribeResourceGroup

✔️

✔️

✔️

リソースグループの一覧

✔️

✔️

✔️

転送ノード

✔️

✔️

トランスファーレプリカ

✔️

✔️

データベースの作成

✔️

データベースの削除

✔️

フラッシュオール

✔️

✔️

特権グループの作成

✔️

特権グループの削除

✔️

特権グループのリスト

✔️

特権グループの操作

✔️

手順

特権グループを作成し、その特権グループに特権を追加します。

特権グループの作成

次の例では、privilege_group_1 という名前の特権グループを作成する方法を示します。

from pymilvus import MilvusClient
client.create_privilege_group(group_name='privilege_group_1'
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.CreatePrivilegeGroup(ctx, milvusclient.NewCreatePrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.CreatePrivilegeGroupReq;

client.createPrivilegeGroup(CreatePrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.createPrivilegeGroup({
  group_name: 'privilege_group_1',
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

特権グループへの特権の追加

次の例では、作成したばかりの特権グループprivilege_group_1 に特権PrivilegeBackupRBACPrivilegeRestoreRBAC を追加する方法を示します。

from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])
import "github.com/milvus-io/milvus/client/v2/milvusclient"

privileges := []string{"Query", "Search"}
err = client.AddPrivilegesToGroup(ctx, milvusclient.NewAddPrivilegesToGroupOption("privilege_group_1", privileges...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.AddPrivilegesToGroupReq;

client.addPrivilegesToGroup(AddPrivilegesToGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Arrays.asList("Query", "Search"))
        .build());
await client.addPrivilegesToGroup({
  group_name: privilege_group_1,
  privileges: ['Query', 'Search'],
});

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/add_privileges_to_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Query", "Search"]
}'

特権グループからの特権の削除

次の例では、特権グループprivilege_group_1 から特権PrivilegeRestoreRBAC を削除する方法を示します。

from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.RemovePrivilegesFromGroup(ctx, milvusclient.NewRemovePrivilegesFromGroupOption("privilege_group_1", []string{"Search"}...))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.RemovePrivilegesFromGroupReq;

client.removePrivilegesFromGroup(RemovePrivilegesFromGroupReq.builder()
        .groupName("privilege_group_1")
        .privileges(Collections.singletonList("Search"))
        .build());
await client.removePrivilegesFromGroup({
  group_name: "privilege_group_1",
  privileges: ["Search"],
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/remove_privileges_from_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1",
    "privileges":["Search"]
}'

特権グループの一覧表示

以下の例では、既存の特権グループをすべて一覧表示する方法を示します。

from pymilvus import MilvusClient
client.list_privilege_groups()
import "github.com/milvus-io/milvus/client/v2/milvusclient"

groups, err := client.ListPrivilegeGroups(ctx, milvusclient.NewListPrivilegeGroupsOption())
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.PrivilegeGroup;
import io.milvus.v2.service.rbac.request.ListPrivilegeGroupsReq;
import io.milvus.v2.service.rbac.response.ListPrivilegeGroupsResp;

ListPrivilegeGroupsResp resp = client.listPrivilegeGroups(ListPrivilegeGroupsReq.builder()
        .build());
List<PrivilegeGroup> groups = resp.getPrivilegeGroups();
await client.listPrivilegeGroups();
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'

以下は出力例です。

PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>

特権グループの削除

次の例は、特権グループprivilege_group_1 を削除する方法を示しています。

from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')
import "github.com/milvus-io/milvus/client/v2/milvusclient"

err = client.DropPrivilegeGroup(ctx, milvusclient.NewDropPrivilegeGroupOption("privilege_group_1"))
if err != nil {
    fmt.Println(err.Error())
    // handle error
}
import io.milvus.v2.service.rbac.request.DropPrivilegeGroupReq;

client.dropPrivilegeGroup(DropPrivilegeGroupReq.builder()
        .groupName("privilege_group_1")
        .build());
await client.dropPrivilegeGroup({group_name: 'privilege_group_1'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "privilegeGroupName":"privilege_group_1"
}'

Try Managed Milvus for Free

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

Get Started
フィードバック

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