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

Hologres:Hologres の権限モデル

最終更新日:Jan 14, 2026

Hologres インスタンスにログインした後、ユーザーは操作を実行するために必要な権限を持っている必要があります。このトピックでは、Hologres インスタンスでの開発に必要な権限について説明します。

Hologres の認証フロー

以下の図は、ユーザーが Hologres に接続してから使用するまでの完全な認証フローを示しています:Hologres authentication flow

ユーザーの概念

Alibaba Cloud アカウントが Hologres に接続する場合、そのアカウントを Hologres ユーザーとして作成する必要があります。管理者は create user "xxx" 文を実行する必要があります。そうしないと、role "xxx" does not exist というエラーメッセージが表示されます。ユーザーはインスタンスレベルで存在します。ユーザーの追加または削除は、インスタンスへの追加またはインスタンスからの削除を意味します。インスタンス内でのテーブル作成などの特定の操作には、データベースレベルの権限が必要です。権限は特定のデータベース内で付与されます。これらの権限は、そのデータベース内のオブジェクトにのみ適用され、データベースをまたいで使用することはできません。

説明

select * from pg_user; コマンドを実行すると、現在のインスタンスのスーパー管理者を表示できます。

権限モデル

Hologres は PostgreSQL 11 と互換性があります。開発権限を付与するには、標準の PostgreSQL 権限付与文を使用できます。この方法は、標準 PostgreSQL 権限モデルとして知られています。PostgreSQL の権限の粒度はきめ細かく、その権限付与構文は複雑です。アクセス制御を簡素化するために、Hologres は簡易権限モデルも提供しています。

次の表では、簡易権限モデルと標準 PostgreSQL 権限モデルの違い、およびそれぞれのシナリオについて説明します。

権限タイプ

シナリオ

説明

標準 PostgreSQL 権限モデル

このモデルは、厳格なアクセス制御が必要なシナリオに適しています。たとえば、特定のユーザーに特定のテーブルに対する権限を付与できます。

標準 PostgreSQL 権限モデルは、きめ細かい粒度と柔軟性で権限を付与します。特定のユーザーに特定のテーブルに対する権限を付与できます。ただし、権限付与の構文は複雑です。権限の付与方法の詳細については、「標準 PostgreSQL 権限モデル」をご参照ください。

簡易権限モデル (SPM)

このモデルは、データベースレベルのアクセス制御を提供し、粗い粒度の権限管理シナリオに適しています。

簡易権限モデルは、データベースディメンションに基づいた事前パッケージ化されたモデルです。各ユーザーグループには対応する権限があり、変更することはできません。ほとんどの権限付与ニーズを満たし、権限付与操作を簡素化します。権限の付与方法の詳細については、「簡易権限モデル」をご参照ください。

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

このモデルは、スキーマレベルのアクセス制御を提供し、きめ細かい権限が必要でありながら、簡素化された権限付与フローも求められるシナリオに適しています。

スキーマレベル簡易権限モデルは、スキーマディメンションに基づいた事前パッケージ化されたモデルです。各ユーザーグループには対応する権限があり、変更することはできません。よりきめ細かいアクセス制御をサポートし、権限付与操作を簡素化します。権限の付与方法の詳細については、「スキーマレベル簡易権限モデルの使用」をご参照ください。

権限の付与

Hologres を使用して開発を行うには、ユーザーに特定の権限を付与する必要があります。次の 2 つの表は、標準 PostgreSQL 権限モデルと簡易権限モデルの操作と必要な権限を示しています。必要な操作と使用する権限モデルに基づいて、ユーザーに権限を付与してください。

説明

スーパー管理者は、デフォルトで表に記載されているすべての権限を持っています。

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

必要な権限

権限付与文

CREATE USER(ROLE)

DROP USER(ROLE)

CREATEROLE

次の例では、ユーザー A にロールを作成する権限を付与します。

alter user A createrole;

CREATE TABLE

VIEW TABLE

FOREIGN TABLE

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

次の例では、ユーザー A に xx スキーマでテーブルを作成する権限を付与します。

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 権限と、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 にデータベースを作成する権限を付与します:

ALTER USER A CREATEDB;

DROP DATABASE

DB オーナー

GRANT を使用してデータベースを削除するのではなく、ALTER DATABASE xx OWNER TO A; コマンドを実行してデータベースのオーナーを A に変更します。その後、ユーザー A はデータベースを削除できます。

CREATE EXTENSION

DB オーナー

-

GRANT

REVOKE

対応する権限と GRANT OPTION 権限を持つユーザー

次の例では、ユーザーに GRANT 操作の権限を付与します:

GRANT [Privilege] TO A WITH GRANT OPTION;

権限モデルによる権限付与

簡易権限モデル (SPM)

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

操作

必要な権限

権限付与文

必要な権限

権限付与文

CREATE USER(ROLE)

DROP USER(ROLE)

DB 管理者

次の 2 つの方法のいずれかで、ユーザーに管理者権限を付与します:

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

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

重要

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

DB 管理者

次の 2 つの方法のいずれかで、ユーザーに管理者権限を付与します:

  • 方法 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

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

この表の SPM 権限付与文を参照して、ユーザーに管理者、開発者、writer、または viewer 権限を付与します。

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

この表の SLPM 権限付与文を参照して、ユーザーにスキーマの管理者、開発者、writer、または viewer 権限を付与します。

INSERT

UPDATE

DELETE

TRUNCATE

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

この表の SPM 権限付与文を参照して、ユーザーに管理者、開発者、または writer 権限を付与します。

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

この表の SLPM 権限付与文を参照して、ユーザーにスキーマの管理者、開発者、writer、または viewer 権限を付与します。

ALTER TABLE

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

この表の SPM 権限付与文を参照して、ユーザーに管理者または開発者権限を付与します。

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

この表の SLPM 権限付与文を参照して、ユーザーにスキーマの管理者または開発者権限を付与します。

DROP TABLE

CREATE DATABASE

DROP DATABASE

CREATE EXTENSION

DB 管理者

この表の SPM 権限付与文を参照して、ユーザーに管理者権限を付与します。

DB 管理者

この表の SLPM 権限付与文を参照して、ユーザーにスキーマの管理者権限を付与します。

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');