背景情報
Hologres は PostgreSQL と互換性があり、標準 PostgreSQL 権限モデルを使用できます。詳細については、「標準 PostgreSQL 権限モデル」をご参照ください。標準 PostgreSQL 権限モデルは、権限を厳密に分割します。このモデルは、実際のビジネス シナリオでは使用が複雑です。以下のような典型的な課題があります。
ユーザーに権限を付与する必要がある場合は、多数の権限付与文を実行する必要があります。
ロールごとに異なる権限が必要になるため、権限の付与が煩雑になります。さらに、ユーザーに権限を付与する際に権限付与文が不足していると、ユーザーは対応する操作を実行できません。
新しいユーザーごとに同じ権限付与文を実行する必要があるため、時間がかかります。
Hologres は参照用に標準 PostgreSQL 権限付与文を提供していますが、ご自身の習慣により、さまざまな権限に対して正しい権限付与文を実行できない場合があります。これは、権限管理の混乱につながり、ビジネスにリスクをもたらすだけでなく、管理、時間、および使用のコストが増加する可能性があります。
前述の課題を解消するために、Hologres は標準 PostgreSQL 権限モデルに基づいていますが、権限を粗粒度で管理する SPM を開発しました。SPM はデータベース レベルで権限を管理し、admin、developer、writer、および viewer のロールを提供します。データベース内のオブジェクトに対する権限は、少数の関数を使用して便利かつ安全に管理できます。
SPM の概要
SPM は、データベースごとに次のロールを提供します。
{db}_admin: データベース管理者
{db}_developer: 開発者
{db}_writer: リーダーおよびライター
{db}_viewer: アナリスト
次の表に、各ロールの権限を示します。
ロール | 権限 |
{db}_admin | データベースの管理者。 {db}_developer、{db}_writer、および {db}_viewer グループの権限を持ちます。 データベースを所有し、データベースを削除する権限を持ちます。 データベースの {db}_admin、{db}_developer、{db}_writer、および {db}_viewer グループのメンバーを追加および削除する権限を持ちます。 データベース内のスキーマなどのオブジェクトをクエリ、追加、変更、および削除する権限を持ちます。 データベースの構成を変更する権限を持ちます。
|
{db}_developer | データベースの開発者。 {db}_writer および {db}_viewer グループの権限を持ちます。 データベース内のすべてのスキーマのすべての非システム オブジェクト (テーブル、外部テーブル、およびビュー、関数、プロシージャ、外部サーバー、外部データラッパー、型、言語などのテーブルのようなオブジェクトを含む) を所有します。さらに、開発者はすべてのスキーマのテーブルをクエリ、追加、変更、および削除できます。 すべてのスキーマに対する USAGE 権限と CREATE 権限を持ち、データ定義言語 (DDL) 文を実行して、すべての非システム スキーマにテーブル、ビュー、および外部テーブルを作成できます。
|
{db}_writer | データベースのリーダーおよびライター。 {db}_viewer グループの権限を持ちます。 すべてのスキーマのすべてのテーブル、外部テーブル、およびビューなどのテーブルのようなオブジェクトに対して SELECT、INSERT、UPDATE、および DELETE 文を実行する権限を持ちます。 データベース内のすべてのスキーマをクエリ、追加、変更、および削除する権限を持ちます。 データベースの開発者が所有するすべてのオブジェクト (関数、プロシージャ、外部サーバー、外部データラッパー、型、言語を含む) にアクセスして使用できます。 すべてのスキーマに対する USAGE 権限を持ちますが、DDL 文を実行することはできません。
|
{db}_viewer | データベースのアナリスト。 すべてのスキーマのすべてのテーブル、外部テーブル、およびビューなどのテーブルのようなオブジェクトに対する SELECT 権限を持ちます。 データベースの開発者が所有するすべてのオブジェクト (関数、プロシージャ、外部サーバー、外部データラッパー、型、言語を含む) にアクセスして使用できます。 すべてのスキーマに対する USAGE 権限を持ちます。
|