権限と権限グループ
権限とは、クラスター、データベース、コレクションなどの特定のZilliz Cloudリソースに対する特定の操作の許可を指します。権限はロールに割り当てられ、その後ユーザーに付与され、ユーザーがリソースに対して実行できる操作を定義します。権限の例として、collection_01という名前のコレクションにデータを挿入する許可があります。
権限グループは個々の権限の組み合わせです。ロール付与プロセスを簡略化するために、一般的に使用される権限の権限グループを作成できます。使いやすさのために、Zilliz Cloudはコレクション、データベース、およびクラスターレベルの合計9つの組み込み権限グループを提供します。
以下の図は、権限と権限グループの異なる付与プロセスを示しています。

このトピックでは、Zilliz Cloudで利用可能な組み込み権限グループと権限の詳細を説明します。
権限グループ
組み込み権限グループ
Zilliz Cloudは、ロールの作成時に直接付与できる、コレクション、データベース、およびクラスターレベルの合計9つの組み込み権限グループを提供します。
組み込み権限グループの3つのレベルにはカスケード関係がありません。クラスターレベルで権限グループを設定しても、そのインスタンス配下のすべてのデータベースおよびコレクションに自動的に権限が設定されるわけではありません。データベースおよびコレクションレベルの権限は手動で設定する必要があります。
コレクションレベルの権限グループ
-
CollectionReadOnly (COLL_RO):コレクションデータの読み取り権限を含む
-
CollectionReadWrite (COLL_RW):コレクションデータの読み書き権限を含む
-
CollectionAdmin (COLL_ADMIN):コレクションデータの読み書きおよびコレクション管理の権限を含む
以下の表は、コレクションレベルの3つの組み込み権限グループに含まれる特定の権限をリストしています:
権限 | CollectionReadOnly | CollectionReadWrite | CollectionAdmin |
|---|---|---|---|
Query | ✔️ | ✔️ | ✔️ |
Search | ✔️ | ✔️ | ✔️ |
IndexDetail | ✔️ | ✔️ | ✔️ |
GetFlushState | ❌ | ✔️ | ✔️ |
GetLoadState | ✔️ | ✔️ | ✔️ |
GetLoadingProgress | ✔️ | ✔️ | ✔️ |
HasPartition | ✔️ | ✔️ | ✔️ |
ShowPartitions | ✔️ | ✔️ | ✔️ |
ListAliases | ✔️ | ✔️ | ✔️ |
DescribeCollection | ✔️ | ✔️ | ✔️ |
DescribeAlias | ✔️ | ✔️ | ✔️ |
GetStatistics | ✔️ | ✔️ | ✔️ |
CreateIndex | ❌ | ✔️ | ✔️ |
DropIndex | ❌ | ✔️ | ✔️ |
CreatePartition | ❌ | ✔️ | ✔️ |
DropPartition | ❌ | ✔️ | ✔️ |
Load | ✔️ | ✔️ | ✔️ |
Release | ❌ | ✔️ | ✔️ |
Insert | ❌ | ✔️ | ✔️ |
Delete | ❌ | ✔️ | ✔️ |
Upsert | ❌ | ✔️ | ✔️ |
Import | ❌ | ✔️ | ✔️ |
Flush | ❌ | ✔️ | ✔️ |
Compaction | ❌ | ❌ | ✔️ |
LoadBalance | ❌ | ✔️ | ✔️ |
CreateAlias | ❌ | ✔️ | ✔️ |
DropAlias | ❌ | ✔️ | ✔️ |
AddCollectionField | ❌ | ✔️ | ✔️ |
データベースレベルの権限グループ
-
DatabaseReadOnly (DB_RO):データベースデータの読み取り権限を含む
-
DatabaseReadWrite (DB_RW):データベースデータの読み書き権限を含む
-
DatabaseAdmin (DB_Admin):データベースデータの読み書きおよびデータベース管理の権限を含む
以下の表は、データベースレベルの3つの組み込み権限グループに含まれる特定の権限をリストしています:
権限 | DatabaseReadOnly | DatabaseReadWrite | DatabaseAdmin |
|---|---|---|---|
ShowCollections | ✔️ | ✔️ | ✔️ |
DescribeDatabase | ✔️ | ✔️ | ✔️ |
CreateCollection | ❌ | ✔️ | ✔️ |
DropCollection | ❌ | ✔️ | ✔️ |
AlterDatabase | ❌ | ❌ | ❌ |
クラスターレベルの権限グループ
-
ClusterReadOnly (Cluster_RO):インスタンスデータの読み取り権限を含む
-
ClusterReadWrite (Cluster_RW):インスタンスデータの読み書き権限を含む
-
ClusterAdmin (Cluster_Admin):インスタンスデータの読み書きおよびインスタンス管理の権限を含む
以下の表は、クラスターレベルの3つの組み込み権限グループに含まれる特定の権限をリストしています:
権限 | ClusterReadOnly | ClusterReadWrite | ClusterAdmin |
|---|---|---|---|
ListDatabases | ✔️ | ✔️ | ✔️ |
RenameCollection | ❌ | ✔️ | ✔️ |
CreateOwnership | ❌ | ❌ | ✔️ |
UpdateUser | ❌ | ❌ | ✔️ |
DropOwnership | ❌ | ❌ | ✔️ |
SelectOwnership | ❌ | ❌ | ✔️ |
ManageOwnership | ❌ | ❌ | ✔️ |
SelectUser | ❌ | ❌ | ✔️ |
BackupRBAC | ❌ | ❌ | ❌ |
RestoreRBAC | ❌ | ❌ | ❌ |
CreateResourceGroup | ❌ | ❌ | ❌ |
DropResourceGroup | ❌ | ❌ | ❌ |
UpdateResourceGroups | ❌ | ❌ | ❌ |
DescribeResourceGroup | ❌ | ❌ | ❌ |
ListResourceGroups | ❌ | ❌ | ❌ |
TransferNode | ❌ | ❌ | ❌ |
TransferReplica | ❌ | ❌ | ❌ |
CreateDatabase | ❌ | ✔️ | ✔️ |
DropDatabase | ❌ | ✔️ | ✔️ |
FlushAll | ❌ | ❌ | ❌ |
CreatePrivilegeGroup | ❌ | ❌ | ❌ |
DropPrivilegeGroup | ❌ | ❌ | ❌ |
ListPrivilegeGroups | ✔️ | ✔️ | ✔️ |
OperatePrivilegeGroup | ❌ | ❌ | ❌ |
カスタム権限グループ
組み込み権限がニーズを満たさない場合、SDKを使用してカスタム権限グループを作成し、権限グループに指定された権限を追加できます。
以下にリストされた権限で独自の権限グループを作成するか、権限を持つカスタムロールを作成するには、お問い合わせください。
カスタム権限グループの作成
以下の例は、privilege_group_1という名前の権限グループを作成する方法を示しています。
- Python
- Go
- Java
- NodeJS
- cURL
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"
}'
カスタム権限グループが作成されると、権限グループに権限を追加できます。
カスタム権限グループへの権限追加
以下の例は、権限PrivilegeBackupRBACおよびPrivilegeRestoreRBACを直前に作成した権限グループprivilege_group_1に追加する方法を示しています。Zilliz Cloudで利用可能なすべての権限の詳細については、すべての権限を参照してください。
- Python
- Go
- Java
- NodeJS
- cURL
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"]
}'
権限が権限グループに追加されると、ロールに権限グループを付与できます。詳細については、クラスターロールの管理(SDK)を参照してください。
カスタム権限グループからの権限削除
以下の例は、権限グループprivilege_group_1から権限PrivilegeRestoreRBACを削除する方法を示しています。
- Python
- Go
- Java
- NodeJS
- cURL
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"]
}'
権限グループ一覧表示
以下の例は、既存のすべての権限グループを一覧表示する方法を示しています。
- Python
- Go
- Java
- NodeJS
- cURL
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を削除する方法を示しています。
- Python
- Go
- Java
- NodeJS
- cURL
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"
}'
すべての権限
以下のものはZilliz Cloudで利用可能なすべての権限です。
以下にリストされた権限で独自の権限グループを作成するか、権限を持つカスタムロールを作成するには、お問い合わせください。
データベース権限
権限 | 説明 |
|---|---|
ListDatabases | 現在のインスタンス内のすべてのデータベースを表示 |
DescribeDatabase | データベースの詳細を表示 |
CreateDatabase | データベースを作成 |
DropDatabase | データベースを削除 |
AlterDatabase | データベースのプロパティを変更 |
コレクション権限
権限 | 説明 |
|---|---|
GetFlushState | コレクションフラッシュ操作の状態を確認 |
GetLoadState | コレクションの読み込み状態を確認 |
GetLoadingProgress | コレクションの読み込み進行状況を確認 |
ShowCollections | コレクション権限を持つすべてのコレクションを表示 |
ListAliases | コレクションのすべてのエイリアスを表示 |
DescribeCollection | コレクションの詳細を表示 |
DescribeAlias | エイリアスの詳細を表示 |
GetStatistics | コレクションの統計情報を取得(例:コレクション内のエンティティ数) |
CreateCollection | コレクションを作成 |
DropCollection | コレクションを削除 |
Load | コレクションを読み込む |
Release | コレクションを解放する |
Flush | すべてのエンティティを封印されたセグメントに永続化する。フラッシュ操作後に挿入されたいずれのエンティティも新しいセグメントに保存される。 |
Compaction | 手動でコンパクションをトリガーする |
RenameCollection | コレクション名を変更する |
CreateAlias | コレクションのエイリアスを作成する |
DropAlias | コレクションのエイリアスを削除する |
FlushAll | データベース内のすべてのコレクションをフラッシュする |
AddCollectionField | 既存のコレクションにフィールドを追加する |
パーティション権限
権限 | 説明 |
|---|---|
HasPartition | パーティションが存在するかどうかを確認 |
ShowPartitions | コレクション内のすべてのパーティションを表示 |
CreatePartition | パーティションを作成 |
DropPartition | パーティションを削除 |
インデックス権限
権限 | 説明 |
|---|---|
IndexDetail | インデックスの詳細を表示 |
CreateIndex | インデックスを作成 |
DropIndex | インデックスを削除 |
リソース管理権限
権限 | 説明 |
|---|---|
LoadBalance | 負荷分散を実現する |
CreateResourceGroup | リソースグループを作成 |
DropResourceGroup | リソースグループを削除 |
UpdateResourceGroups | リソースグループを更新 |
DescribeResourceGroup | リソースグループの詳細を表示 |
ListResourceGroups | 現在のインスタンスのすべてのリソースグループを表示 |
TransferNode | リソースグループ間でノードを転送 |
TransferReplica | リソースグループ間でレプリカを転送 |
BackupRBAC | 現在のインスタンス内のすべてのRBAC関連操作のバックアップを作成 |
RestoreRBAC | 現在のインスタンス内のすべてのRBAC関連操作のバックアップを復元 |
エンティティ権限
権限 | 説明 |
|---|---|
Query | クエリを実行 |
Search | 検索を実行 |
Insert | エンティティを挿入 |
Delete | エンティティを削除 |
Upsert | エンティティをアップサート |
Import | エンティティを一括挿入またはインポート |
RBAC権限
権限 | 説明 |
|---|---|
CreateOwnership | ユーザーまたはロールを作成 |
UpdateUser | ユーザーのパスワードを更新 |
DropOwnership | ユーザーのパスワードまたはロールを削除 |
SelectOwnership | 特定のロールが付与されたすべてのユーザーを表示 |
ManageOwnership | ユーザーまたはロールを管理する、またはユーザーにロールを付与する |
SelectUser | ユーザーに付与されたすべてのロールを表示 |
CreatePrivilegeGroup | 権限グループを作成 |
DropPrivilegeGroup | 権限グループを削除 |
ListPrivilegeGroups | 現在のインスタンス内のすべての権限グループを表示 |
OperatePrivilegeGroup | 権限グループに権限を追加または権限グループから権限を削除 |