メインコンテンツまでスキップ

ビルトイン認証

主要な概念

Authorizationとは、ユーザーIDがDorisリソースへのアクセスと操作において制限されるメカニズムを指します。

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

権限

権限はnode、catalog、database、またはtableに適用されます。異なる権限は異なる操作許可を表します。

全権限

PermissionObject タイプ詳細
Admin_privGlobalスーパー管理者権限。
Node_privGlobalNode変更権限。FE、BE、BROKERノードの追加、削除、廃止を含みます。
Grant_privGlobal, カタログ, Db, table, Resource, Workload Group権限変更権限。ユーザー/ロールの付与、取り消し、追加/削除/変更などの操作を許可します。
他のユーザー/ロールに権限を付与する際、バージョン2.1.2以前では、現在のユーザーは対応するレベルのGrant_priv権限のみが必要でした。バージョン2.1.2以降では、現在のユーザーは付与したいリソースの権限も必要です。
他のユーザーにロールを割り当てるには、GlobalレベルのGrant_priv権限が必要です。
Select_privGlobal, カタログ, Db, table, ColumnSelect権限。データのクエリを許可します。
Load_privGlobal, カタログ, Db, tableLoad権限。Load、Insert、Deleteなどを含みます。
Alter_privGlobal, カタログ, Db, tableAlter権限。database/tableの名前変更、列の追加/削除/変更、パーティションの追加/削除などを含みます。
Create_privGlobal, カタログ, Db, tableCreate権限。catalog、database、table、viewの作成を許可します。
Drop_privGlobal, カタログ, Db, tableDrop権限。catalog、database、table、viewの削除を許可します。
Usage_privResource, Workload GroupResourceとWorkload Groupの使用権限。
Show_view_privGlobal, カタログ, 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はユーザーが接続するホストアドレスを識別します。

Authorization機能

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権限を持つユーザーを作成できます。このユーザーは指定されたデータベースに対してのみ権限を付与できます。