すべてのプロダクト
Search
ドキュメントセンター

Hologres:Hologres 権限モデルの概要

最終更新日:Aug 23, 2026

このトピックでは、Hologres のユーザー認証方法と、開発権限の付与に使用できる標準 PostgreSQL 権限モデル、簡易権限モデル (SPM)、スキーマレベル権限モデル (SLPM) という 3 つの権限モデルについて説明します。

Hologres の認証フロー

以下の図に、完全な認証フローを示します。Hologres authentication flow

ユーザー

Alibaba Cloud アカウントで Hologres にアクセスするには、管理者が事前にcreate user "xxx" を実行して、そのアカウントを Hologres ユーザーとして登録する必要があります。登録しない場合、「role "xxx" does not exist」というエラーが返されます。ユーザーはインスタンスレベルで存在します。ユーザーを追加または削除すると、そのユーザーはインスタンスに追加または削除されます。テーブルの作成などの操作にはデータベースレベルの権限が必要です。この権限は特定のデータベース内で付与されるもので、データベース間では使用できません。

説明

select * from pg_user; を実行すると、現在のインスタンスのスーパーユーザーを表示できます。

権限モデル

Hologres は PostgreSQL 11 と互換性があり、標準 PostgreSQL 権限モデル (エキスパートモデル) をサポートしています。PostgreSQL の権限はきめ細かく、権限付与の構文が複雑なため、Hologres では、簡易権限モデル (SPM) とスキーマレベル権限モデル (SLPM) という 2 つの簡素化されたモデルも提供しています。

以下の表では、3つのモデルを比較しています。

権限モデル

シナリオ

説明

標準 PostgreSQL 権限モデル (エキスパートモデル)

特定のテーブルの特定のユーザーに対する厳格なアクセス制御。

きめ細かく柔軟ですが、権限付与の構文は複雑です。権限の付与方法の詳細については、「エキスパート権限モデル」をご参照ください。

簡易権限モデル (SPM)

粗粒度のデータベースレベルのアクセス制御。

ユーザーグループごとに固定の権限を持つ、事前パッケージ化されたデータベースレベルのロールです。より簡単な構文で、ほとんどのユースケースをカバーします。権限の付与方法の詳細については、「SPMを使用した権限管理」をご参照ください。

スキーマレベル権限モデル (SLPM)

権限付与が簡素化された、きめ細かいスキーマレベルのアクセス制御。

ユーザーグループごとに固定の権限を持つ、事前パッケージ化されたスキーマレベルのロールです。SPM よりもきめ細かな制御が可能です。権限の付与方法の詳細については、「SLPMを使用した権限管理」をご参照ください。

権限の付与

以下の表に、標準 PostgreSQL 権限モデルと簡易モデル (SPM/SLPM) での各操作に必要な権限を示します。

説明

デフォルトでは、スーパーユーザーは以下のすべての権限を持ちます。

標準 PostgreSQL 権限モデルでの操作

必要な権限

権限付与ステートメント

CREATE USER (ROLE)

DROP USER (ROLE)

CREATEROLE

ユーザー A に CREATEROLE 権限を付与する場合:

alter user A createrole;

CREATE TABLE

VIEW TABLE

FOREIGN TABLE

データベースに対するCONNECT権限と、対象スキーマに対するCREATE権限

ユーザー A にスキーマ xx に対する CREATE 権限を付与する場合:

GRANT CREATE ON SCHEMA xx TO A;

デフォルトでは、すべてのユーザーが public スキーマにテーブルを作成できます。

SELECT

対応するスキーマに対するUSAGE権限と、対象テーブルに対するSELECT権限

例:

GRANT USAGE ON SCHEMA xx to A;
GRANT SELECT ON TABLE xx TO A;
GRANT SELECT ON ALL TABLES IN SCHEMA xx TO A;

INSERT

UPDATE

DELETE

TRUNCATE

対応するスキーマに対するUSAGE権限と、対象テーブルに対する関連DML権限 (INSERT/UPDATE/DELETE/TRUNCATE)

例:

GRANT USAGE ON SCHEMA xx to A;
GRANT [INSERT/UPDATE/DELETE/TRUNCATE] ON TABLE xx TO A;
GRANT [INSERT/UPDATE/DELETE/TRUNCATE] ON ALL TABLES IN SCHEMA xx TO A;

ALTER TABLE

テーブル所有者 (ALTER OWNER で変更可能)

GRANT ではテーブルの所有権を譲渡できません。ALTER TABLE xx OWNER TO A; を実行して所有者を A に変更すると、A はテーブルの変更または削除が可能になります。

DROP TABLE

CREATE DATABASE

CREATEDB

ユーザー A に CREATEDB 権限を付与する場合:

ALTER USER A CREATEDB;

DROP DATABASE

DB 所有者

GRANT ではデータベースの所有権を譲渡できません。ALTER DATABASE xx OWNER TO A; を実行して所有者を A に変更すると、A はデータベースの削除が可能になります。

CREATE EXTENSION

DB 所有者

-

GRANT

REVOKE

関連する権限とGRANT OPTIONを持つユーザー

ユーザー A に GRANT OPTION を付与する場合:

GRANT [Privilege] TO A WITH GRANT OPTION;

権限モデルごとの権限付与

簡易権限モデル (SPM)

スキーマレベル権限モデル (SLPM)

操作

必要な権限

権限付与ステートメント

必要な権限

権限付与ステートメント

CREATE USER (ROLE)

DROP USER (ROLE)

DB管理者

ユーザーに管理者権限を付与する場合:

  • 方法1: call spm_grant('<dbname>_admin', 'A');

  • 方法2: call spm_create_user('A', '<dbname>_admin');

重要

SPM は、ユーザー名の末尾がadmindeveloperwriterviewer、またはall_users であるカスタムユーザーへの権限付与をサポートしていません。

DB管理者

ユーザーに管理者権限を付与する場合:

  • 方法1: call slpm_grant('<dbname>.<schema>.admin', 'A');

  • 方法2: call slpm_create_user('A', '<dbname>.<schema>.admin');

重要

SLPM は、ユーザー名の末尾がadmindeveloperwriterviewer、またはall_users であるカスタムユーザーへの権限付与をサポートしていません。

CREATE TABLE

VIEW TABLE

FOREIGN TABLE

スーパーユーザー、または管理者/開発者ユーザーグループの権限

上記の SPM ステートメントを使用して、管理者または開発者の権限を付与します。

スーパーユーザー、またはスキーマの管理者/開発者ユーザーグループの権限

上記の SLPM ステートメントを使用して、スキーマの管理者または開発者の権限を付与します。

SELECT

スーパーユーザー、または管理者/開発者/ライター/ビューアーユーザーグループの権限

上記の SPM ステートメントを使用して、管理者、開発者、ライター、またはビューアーの権限を付与します。

スーパーユーザー、またはスキーマの管理者/開発者/ライター/ビューアーユーザーグループの権限

上記の SLPM ステートメントを使用して、スキーマの管理者、開発者、ライター、またはビューアーの権限を付与します。

INSERT

UPDATE

DELETE

TRUNCATE

スーパーユーザー、または管理者/開発者/ライターユーザーグループの権限

上記の SPM ステートメントを使用して、管理者、開発者、またはライターの権限を付与します。

スーパーユーザー、またはスキーマの管理者/開発者/ライターユーザーグループの権限

上記の SLPM ステートメントを使用して、スキーマの管理者、開発者、またはライターの権限を付与します。

ALTER TABLE

スーパーユーザー、または管理者/開発者ユーザーグループの権限

上記の SPM ステートメントを使用して、管理者または開発者の権限を付与します。

スーパーユーザー、またはスキーマの管理者/開発者ユーザーグループの権限

上記の SLPM ステートメントを使用して、スキーマの管理者または開発者の権限を付与します。

DROP TABLE

CREATE DATABASE

DROP DATABASE

CREATE EXTENSION

DB管理者

上記の SPM ステートメントを使用して、管理者権限を付与します。

DB管理者

-

GRANT

REVOKE

DB管理者

ユーザー A に権限を付与および取り消す場合:

call spm_grant('role', 'A');
call spm_revoke('role', 'A');

DB管理者

ユーザー A に権限を付与および取り消す場合:

call slpm_grant('role', 'A');
call slpm_revoke('role', 'A');