メインコンテンツまでスキップ
バージョン: 2.1

ビルトイン認可

主要概念

Authorizationとは、ユーザーアイデンティティがDorisリソースへのアクセスと操作を制限される仕組みを指します。

Dorisは権限管理にRole-Based Access Control (RBAC)モデルを使用しています。

権限

権限は、ノード、カタログ、データベース、またはテーブルに適用されます。異なる権限は異なる操作許可を表します。

すべての権限

権限オブジェクトタイプ説明
Admin_privGlobalスーパー管理者権限。
Node_privGlobalノード変更権限。FE、BE、BROKERノードの追加、削除、廃止を含みます。
Grant_privGlobal, Catalog, Db, Table, Resource, Workload Group権限変更権限。ユーザー/ロールの付与、取り消し、追加/削除/変更などの操作を許可します。
他のユーザー/ロールに権限を付与する際、バージョン2.1.2以前では、現在のユーザーは対応するレベルのGrant_priv権限のみが必要でした。バージョン2.1.2以降では、現在のユーザーは付与したいリソースの権限も必要です。
他のユーザーにロールを割り当てるには、GlobalレベルのGrant_priv権限が必要です。
Select_privGlobal, Catalog, Db, Table, ColumnSelect権限。データのクエリを許可します。
Load_privGlobal, Catalog, Db, TableLoad権限。Load、Insert、Deleteなどを含みます。
Alter_privGlobal, Catalog, Db, TableAlter権限。データベース/テーブルの名前変更、カラムの追加/削除/変更、パーティションの追加/削除などを含みます。
Create_privGlobal, Catalog, Db, TableCreate権限。カタログ、データベース、テーブル、ビューの作成を許可します。
Drop_privGlobal, Catalog, Db, TableDrop権限。カタログ、データベース、テーブル、ビューの削除を許可します。
Usage_privResource, Workload GroupResourceとWorkload Groupの使用権限。
Show_view_privGlobal, Catalog, Db, TableSHOW CREATE VIEW実行権限。

ロール

Dorisではカスタム名のロールを作成できます。ロールは権限の集合として見ることができます。新しいユーザーにロールを割り当てることで、そのロールの権限が自動的に付与されます。その後のロールの権限変更は、そのロールに属するすべてのユーザーの権限にも影響します。

組み込みロール

組み込みロールはDorisによって作成されるデフォルトロールで、デフォルト権限を持ち、operatorとadminが含まれます。

  • operator: Admin_privとNode_privを持ちます
  • admin: Admin_privを持ちます

ユーザー

Dorisでは、user_identityがユーザーを一意に識別します。user_identityuser_namehostの2つの部分で構成され、usernameはユーザー名です。hostはユーザーが接続するホストアドレスを識別します。

認証メカニズム

Dorisの権限設計はRBAC (Role-Based Access Control)モデルに基づいており、ユーザーとロール、ロールと権限を関連付け、ユーザーはロールを通じて間接的に権限と関連付けられます。

ロールが削除されると、ユーザーは自動的にそのロールのすべての権限を失います。

ユーザーとロールの関連付けが解除されると、ユーザーは自動的にそのロールのすべての権限を失います。

ロールの権限が追加または削除されると、ユーザーの権限も変更されます。

┌────────┐        ┌────────┐         ┌────────┐
│ user1 ├────┬───► role1 ├────┬────► priv1 │
└────────┘ │ └────────┘ │ └────────┘
│ │
│ │
│ ┌────────┐ │
│ │ role2 ├────┤
┌────────┐ │ └────────┘ │ ┌────────┐
│ user2 ├────┘ │ ┌─► priv2 │
└────────┘ │ │ └────────┘
┌────────┐ │ │
┌──────► role3 ├────┘ │
│ └────────┘ │
│ │
│ │
┌────────┐ │ ┌────────┐ │ ┌────────┐
│ userN ├─┴──────► roleN ├───────┴─► privN │
└────────┘ └────────┘ └────────┘

上記の通り:

user1とuser2は両方ともrole1を通じてpriv1権限を持っています。

userNはrole3を通じてpriv1権限を、roleNを通じてpriv2とprivN権限を持っているため、userNはpriv1、priv2、privN権限を持っています。

注意事項

  • 便宜上、ユーザーには直接権限を付与できます。内部的には、各ユーザーに対してデフォルトロールが作成され、ユーザーに権限を付与することはデフォルトロールに権限を付与することと同等です。
  • デフォルトロールは削除できず、他のユーザーに割り当てることもできず、ユーザーが削除されると自動的に削除されます。

関連コマンド

ベストプラクティス

以下はDorisの権限システムを使用する例です。

  1. シナリオ1

    Dorisクラスターのユーザーは管理者(Admin)、開発エンジニア(RD)、ユーザー(Client)に分けられます。管理者はクラスター全体に対するすべての権限を持ち、主にクラスターの設定、ノード管理などを担当します。開発エンジニアはビジネスモデリングを担当し、データベースとテーブルの作成、データのインポートと変更などを行います。ユーザーは異なるデータベースとテーブルにアクセスしてデータを取得します。

    このシナリオでは、管理者にはADMINまたはGRANT権限を付与できます。RDには任意または指定されたデータベースとテーブルに対するCREATE、DROP、ALTER、LOAD、SELECT権限を付与できます。Clientには任意または指定されたデータベースとテーブルに対するSELECT権限を付与できます。同時に、複数ユーザーの権限管理を簡素化するために異なるロールを作成できます。

  2. シナリオ2

    クラスターに複数のビジネスがあり、各ビジネスは1つまたは複数のデータセットを使用する可能性があります。各ビジネスは独自のユーザーを管理する必要があります。このシナリオでは、管理者は各データベースに対してDATABASEレベルのGRANT権限を持つユーザーを作成できます。このユーザーは指定されたデータベースに対してのみ権限を付与できます。