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

組み込みAuthorization

主要概念

Authorizationとは、ユーザーのアイデンティティがDorisリソースへのアクセスや操作を制限されるメカニズムを指します。

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

権限

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

全権限

PermissionObject タイプ詳細
Admin_privGlobalスーパー管理者権限。
Node_privGlobalノード変更権限。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権限。データベース/テーブルの名前変更、列の追加/削除/変更、パーティションの追加/削除などを含みます。
Create_privGlobal, カタログ, Db, tableCreate権限。カタログ、データベース、テーブル、ビューの作成を可能にします。
Drop_privGlobal, カタログ, Db, tableDrop権限。カタログ、データベース、テーブル、ビューの削除を可能にします。
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はユーザーが接続するホストアドレスを識別します。

認可メカニズム

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