データアクセス制御の概要
CelerData はロールベースのアクセス制御 (RBAC) フレームワークを採用しており、クラスタ管理者が CelerData クラスター内のオブジェクトやデータへのアクセスを正確に管理および規制することができます。
CelerData の RBAC フレームワークは、以下の主要な概念に基づいています。
- オブジェクト: アクセスが許可されるエンティティ。たとえば、catalog、データベース、またはテーブルなど。無許可のアクセスは禁止されています。
- 特権: オブジェクトへのアクセスの定義されたレベル。アクセスの付与の粒度を制御するために、いくつかの異なる特権が使用されます。
- ユーザー: CelerData によって認識されるユーザーアイデンティティ。認証されたユーザーは直接 CelerData にログインできます。
- ロール: 特権を付与できるエンティティ。ロールは他のロールやユーザーに割り当てることができます。
オブジェクトと特権
CelerData のオブジェクトは、表現する概念に関連した論理階層を持っています。たとえば、データベースは Catalog に含まれ、テーブル、ビュー、マテリアライズドビュー、関数はデータベースに含まれます。
以下の図は、CelerData クラスター内のオブジェクトの完全な階層を示しています。
各オブジェクトには、付与可能な特権項目のセットがあります。これらの特権は、これらのオブジェクトに対して実行できる操作を定義します。ロールやユーザーに対して GRANT および REVOKE コマンドを通じて特権を付与および取り消すことができます。
ユーザー
CelerData クラスター内では、各ユーザーは一意のユーザー名によって識別され、これはユーザーの唯一の識別子です。
ユーザーに特権を付与する
ユーザーは特権を付与できるエンティティです。特権とロールの両方をユーザーに割り当てることができます。各ユーザーアイデンティティの最大特権範囲は、そのユーザーアイデンティティに割り当てられたロールの特権と自身の特権の和です。CelerData は、各ユーザーが許可された操作のみを実行できるようにします。
ほとんどの場合、ロールを使用して特権を渡すことをお勧めします。たとえば、ロールを作成した後、そのロールに特権を付与し、次にそのロールをユーザーに割り当てることができます。特別な特権や一時的な特権を付与したい場合は、直接ユーザーに付与することができます。これにより、特権管理が簡素化され、柔軟性が提供されます。
ロール
ロールは特権を付与および取り消すことができるエンティティです。ロールは、ユーザーに割り当てられる特権のコレクションと見なすことができ、必要な操作を実行できるようにします。ユーザーは複数のロールを割り当てられ、異なる特権セットを使用して異なる操作を実行できます。管理を簡素化するために、CelerData は ロールを通じて特権を管理することを推奨しています。特別な特権や一時的な特権は、直接ユーザーに付与することができます。
管理を容易にするために、CelerData は特定の特権を持ついくつかの システム定義ロール を提供しており、日常の管理および保守の要件を満たすのに役立ちます。また、特定のビジネスニーズやセキュリティニーズを満たすために カスタムロール を柔軟に作成することもできます。システム定義ロールの特権範囲は変更できないことに注意してください。
ロールがアクティブ化されると、ユーザーはそのロールによって許可された操作を実行できます。ユーザーがログインすると自動的にアクティブ化されるデフォルトロールを設定できます。
システム定義ロール
CelerData はいくつかの種類のシステム定義ロールを提供しています。
db_admin
: catalog、データベース、テーブル、ビュー、マテリアライズドビュー、関数、グローバル関数に対するすべての操作を実行する特権を含む、データベース管理特権を持っています。user_admin
: ユーザーとロールに対する管理特権を持ち、ユーザーとロールの作成、特権の付与および取り消しを行う特権を含みます。public
: このロールはすべてのユーザーが所有し、すべてのセッションでデフォルトでアクティブ化され、新しいユーザーの追加を含みます。public
ロールにはデフォルトで特権はありません。このロールの特権範囲を変更することができます。
カスタムロール
特定のビジネス要件を満たすためにカスタムロールを作成し、その特権範囲を変更できます。同時に、管理の便宜のために、ロールを他のロールに割り当てて特権の階層と継承を作成できます。これにより、ロールに関連付けられた特権が他のロールに継承されます。
ロール階層と特権継承
以下の図は、特権継承の例を示しています。
注意
ロールの継承レベルの最大数は16です。継承関係は双方向にすることはできません。
図に示されているように:
role_s
はrole_p
に割り当てられています。role_p
はrole_s
のpriv_1
を暗黙的に継承します。role_p
はrole_g
に割り当てられています。role_g
はrole_p
のpriv_2
とrole_s
のpriv_1
を暗黙的に継承します。- ロールがユーザーに割り当てられると、そのユーザーもこのロールの特権を持つことになります。
アクティブロール
CelerData では、ユーザーのすべてのロールが常にアクティブ化されます。SELECT CURRENT_ROLE();
を使用して、現在のセッションでアクティブなすべてのロールを表示できます。
参照
- CelerData がサポートする特権の詳細については、Privileges を参照してください。
- 特権管理の詳細な手順については、Manage user privileges を参照してください。