ユーザ、権限、ロール
このトピックでは、Milvusにおけるロールベースアクセスコントロール(RBAC)の概要を説明し、ユーザ、ロール、オブジェクト、権限の定義と関係について詳しく説明します。
以下の図にオブジェクト、権限、ロール、ユーザの関係を示します。
ユーザとロール
主要概念
Milvusリソースへのアクセスコントロールを管理するためには、RBACの主要な構成要素であるオブジェクトタイプ、オブジェクト名、ユーザ、ロール、権限を理解することが重要です。
オブジェクトタイプ: 特権が割り当てられるオブジェクトのカテゴリ。オブジェクト タイプには次のようなものがあります:
Global:システム全体のオブジェクト。すべてのコレクション、ユーザー、またはシステム全体の設定に影響するアクションをユーザーが実行できます。Collection:コレクション固有のオブジェクト : インデックスの作成、データのロード、データの挿入または削除、特定のコレクション内のデータのクエリなどのアクションを実行できます。User:ユーザ資格情報の更新やユーザ詳細の表示など、ユーザがデータベース・ユーザの資格情報およびロールを管理できるようにします。
オブジェクト名:アクセスを制御するオブジェクトの具体的な名前。たとえば
- オブジェクトのタイプが
Globalの場合、オブジェクト名にはワイルドカード (*) を設定する必要があります。 - オブジェクト・タイプが
Collectionの場合、オブジェクト名はコレクション名です。 - オブジェクト・タイプが
Userの場合、オブジェクト名はデータベース・ユーザの名前です。
- オブジェクトのタイプが
ユーザー(User): Milvusと相互作用する個人またはアプリケーションで、ユーザー名と対応するパスワードから構成される。
特権:実行可能なアクションとアクセス可能なリソースを定義する。権限はユーザに直接付与されるのではなく、ロールに割り当てられる。
ロール:ユーザーが特定のオブジェクトに対して持つ権限のセットを定義します。ロールがユーザにバインドされると、ユーザはそのロールに付与されたすべての特権を継承します。
例権限の付与
次のコード・スニペットは、特定のコレクションに対してCreateIndex 特権をロールに付与する方法を示しています:
milvusClient.grant_privilege(
role_name="CUSTOM_ROLE_NAME",
object_type="Collection", # Valid value: Global, Collection or User.
privilege="CreateIndex", # See the table below for valid privilege names and relevant API descriptions.
object_name="YOUR_COLLECTION_NAME" # The name of the collection to grant access to. Use "*" to grant access to all collections.
)
GrantPrivilegeReq grantPrivilegeReq = GrantPrivilegeReq.builder()
.roleName("roleName")
.objectName("CollectionName") // The name of the collection to grant access to. Use "*" to grant access to all collections.
.objectType("Collection") // Valid value: Global, Collection or User.
.privilege("CreateIndex") // See the table below for valid privilege names and relevant API descriptions.
.build();
client.grantPrivilege(grantPrivilegeReq);
milvusClient.grantPrivilege({
roleName: 'roleName',
object: 'Collection', // Valid value: Global, Collection or User.
objectName: 'CollectionName', // The name of the collection to grant access to. Use "*" to grant access to all collections.
privilegeName: 'CreateIndex' // See the table below for valid privilege names and relevant API descriptions.
})
権限関連APIの詳細については、grant_privilegeと revoke_privilegeを参照してください。
特権関連APIについての詳細は、grantPrivilegeと revokePrivilegeを参照してください。
特権関連 API の詳細については、grantPrivilegeおよびrevokePrivilege を参照してください。
デフォルトのユーザとロール
Milvus はデフォルトでroot ユーザーをデフォルトパスワードMilvus で作成します。root ユーザーにはadmin 権限が付与されます。これは、このroot ユーザーがすべてのリソースにアクセスでき、すべてのアクションを実行できることを意味します。
ユーザがpublic ロールと関連付けられている場合、そのユーザには以下の権限が与えられます:
DescribeCollectionShowCollectionsIndexDetail
オブジェクト・タイプと権限のリスト
次の表は、RBACを有効にするときに選択できる値の一覧です。
| オブジェクト・タイプ | 特権名 | クライアント側の関連APIの説明 |
|---|---|---|
| コレクション | 作成インデックス | インデックス作成 |
| コレクション | ドロップインデックス | ドロップインデックス |
| コレクション | インデックスの詳細 | DescribeIndex/GetIndexState/GetIndexBuildProgress(インデックス構築状況) |
| コレクション | ロード | LoadCollection/GetLoadingProgress/GetLoadState |
| コレクション | ロード進行状況取得 | ロード進行状況の取得 |
| コレクション | ロード状態取得 | ロード状態取得 |
| コレクション | リリース | リリースコレクション |
| コレクション | 挿入 | インサート |
| コレクション | 削除 | 削除 |
| コレクション | アップサート | アップサート |
| コレクション | 検索 | 検索 |
| コレクション | フラッシュ | フラッシュ/フラッシュ状態取得 |
| コレクション | フラッシュ状態取得 | フラッシュ状態の取得 |
| コレクション | クエリー | クエリー |
| コレクション | 統計 | コレクション統計 |
| コレクション | コンパクション | コンパクト |
| コレクション | インポート | 一括挿入/インポート |
| コレクション | ロードバランス | ロードバランス |
| コレクション | パーティション作成 | パーティションの作成 |
| コレクション | ドロップパーティション | ドロップパーティション |
| コレクション | パーティションの表示 | パーティションを表示 |
| コレクション | パーティション | パーティションを持つ |
| グローバル | すべて | このテーブルのすべてのAPI操作権限 |
| グローバル | コレクションの作成 | コレクションの作成 |
| グローバル | ドロップコレクション | ドロップコレクション |
| グローバル | DescribeCollection | DescribeCollection |
| グローバル | コレクションの表示 | コレクションを表示 |
| グローバル | コレクション名の変更 | リネームコレクション |
| グローバル | すべてをフラッシュ | すべてをフラッシュ |
| グローバル | オーナーシップの作成 | CreateUser CreateRole |
| グローバル | 所有権の削除 | 削除クレデンシャル DropRole |
| グローバル | オーナーシップ選択 | セレクトロール/セレクトグラント |
| グローバル | オーナーシップの管理 | OperateUserRole(ユーザー役割の操作) OperatePrivilege(権限の操作 |
| グローバル | リソースグループの作成 | リソースグループの作成 |
| グローバル | リソースグループの削除 | DropResourceグループ |
| グローバル | DescribeResourceGroup | リソースグループ |
| グローバル | リソースグループの一覧 | リソースグループの一覧 |
| グローバル | 転送ノード | 転送ノード |
| グローバル | トランスファーレプリカ | トランスファーレプリカ |
| グローバル | データベースの作成 | データベースの作成 |
| グローバル | データベースの削除 | データベースの削除 |
| グローバル | データベース一覧 | リストデータベース |
| グローバル | エイリアスの作成 | エイリアス作成 |
| グローバル | エイリアスの削除 | ドロップエイリアス |
| グローバル | エイリアスの記述 | エイリアス記述 |
| グローバル | エイリアス一覧 | エイリアス一覧 |
| ユーザ | 更新ユーザ | 更新クレデンシャル |
| ユーザー | ユーザー選択 | ユーザー選択 |
次のページ
- RBACを有効にする方法について説明します。