<productname>PostgreSQL</productname> provides a set of predefined roles
that provide access to certain, commonly needed, privileged capabilities
and information. Administrators (including roles that have the
<literal>CREATEROLE</literal> privilege) can <command>GRANT</command> these
roles to users and/or other roles in their environment, providing those
users with access to the specified capabilities and information.
PostgreSQLでは、ある種の共通に必要で、特権のある機能や情報にアクセスできるよう、いくつかのあらかじめ定義されたロールを提供しています。
(CREATEROLE
権限を持つロールを含む)管理者は自分の環境のユーザあるいはロールに対し、これらのロールをGRANT
(付与)することで、それらのユーザに、その機能や情報を提供することができます。
The predefined roles are described in <xref linkend="predefined-roles-table"/>. Note that the specific permissions for each of the roles may change in the future as additional capabilities are added. Administrators should monitor the release notes for changes. 定義済みロールについては表 21.1で説明します。 それぞれのロールの個別の権限については、将来、さらなる機能が追加されるに連れて変更されるかもしれないことに注意してください。 管理者は、変更がないかリリースノートを確認するようにしてください。
表21.1 定義済みロール
ロール | 可能なアクセス |
---|---|
pg_read_all_data |
それらのオブジェクトに対するSELECT 権限を持っていて、明示的に持っていなかったとしてもすべてのスキーマに対してUSAGE権限を持っているかのように、すべてのデータ(テーブル、ビュー、シーケンス)を読み取る。
このロールにはロール属性BYPASSRLS は設定されていません。
RLSが使われているのであれば、管理者はこのロールがGRANTされるロールに対してBYPASSRLS を設定したいと思うかもしれません。
|
pg_write_all_data |
それらのオブジェクトに対するINSERT 、UPDATE およびDELETE 権限を持っていて、明示的に持っていなかったとしてもすべてのスキーマに対してUSAGE権限を持っているかのように、すべてのデータ(テーブル、ビュー、シーケンス)に書き込む。
このロールにはロール属性BYPASSRLS は設定されていません。
RLSが使われているのであれば、管理者はこのロールがGRANTされるロールに対してBYPASSRLS を設定したいと思うかもしれません。
|
pg_read_all_settings | 通常スーパーユーザのみが読み取れる、全ての設定変数を読み取る |
pg_read_all_stats | 通常スーパーユーザのみが読み取れる、すべてのpg_stat_*ビューを読み取り、各種の統計関連のエクステンションを使用する |
pg_stat_scan_tables | 潜在的に長時間、テーブルのACCESS SHARE ロックを取得する可能性がある監視機能を実行する |
pg_monitor | 各種の監視ビューや機能を読み取り/実行する。
このロールは、pg_read_all_settings 、pg_read_all_stats およびpg_stat_scan_tables のメンバです。 |
pg_database_owner | なし。メンバ資格は暗黙に現在のデータベースの所有者から構成されます。 |
pg_signal_backend | 他のバックエンドに問い合わせのキャンセルやセッションの終了のシグナルを送信する |
pg_read_server_files | COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所からファイルを読み取ることを許可する |
pg_write_server_files | COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所にファイルを書き込むことを許可する |
pg_execute_server_program | COPYやサーバ側のプログラムを実行できるその他の関数で、データベースを実行しているユーザとしてデータベースサーバ上でのプログラムの実行を許可する |
pg_checkpoint | CHECKPOINT コマンドの実行を許可する |
pg_maintain | 《機械翻訳》すべてのリレーションに対して
VACUUM 、
ANALYZE 、
CLUSTER 、
REFRESH MATERIALIZED VIEW 、
REINDEX 、
およびLOCK TABLE を実行することを許可します。
明示的に許可しなくても、これらのオブジェクトに対してMAINTAIN 権限があるかのように実行できます。 |
pg_use_reserved_connections | reserved_connectionsによって予約済みの接続スロットの使用を許可する |
pg_create_subscription |
CREATE SUBSCRIPTION を実行するために、ユーザに対してデータベースへのCREATE 権限を許可する
|
The <literal>pg_monitor</literal>, <literal>pg_read_all_settings</literal>,
<literal>pg_read_all_stats</literal> and <literal>pg_stat_scan_tables</literal>
roles are intended to allow administrators to easily configure a role for the
purpose of monitoring the database server. They grant a set of common privileges
allowing the role to read various useful configuration settings, statistics and
other system information normally restricted to superusers.
pg_monitor
、pg_read_all_settings
、pg_read_all_stats
およびpg_stat_scan_tables
ロールは、データベースサーバを監視するためのロールを、管理者が簡単に設定できるようにする目的があります。
これらのロールは通常スーパーユーザに限定されている各種の有用な構成設定、統計情報およびその他のシステム情報を読むことができる一般的な権限のセットを与えることができます。
The <literal>pg_database_owner</literal> role has one implicit,
situation-dependent member, namely the owner of the current database. Like
any role, it can own objects or receive grants of access privileges.
Consequently, once <literal>pg_database_owner</literal> has rights within a
template database, each owner of a database instantiated from that template
will exercise those rights. <literal>pg_database_owner</literal> cannot be
a member of any role, and it cannot have non-implicit members. Initially,
this role owns the <literal>public</literal> schema, so each database owner
governs local use of the schema.
pg_database_owner
ロールには暗黙で状況に依存したメンバが1つあります。すなわち、現在のデータベースの所有者です。
他のロールと同様に、オブジェクトを所有したり、アクセス権限の許可を受けたりすることができます。
したがって、pg_database_owner
がテンプレートデータベース内で権限を一度持てば、そのテンプレートから作成されたデータベースの所有者は皆、その権限を行使します。
pg_database_owner
は他のロールのメンバにはなれませんし、暗黙でないメンバも持てません。
最初に、このロールはpublic
スキーマを所有していますので、各データベース所有者はそのスキーマのローカルでの利用を管理します。
The <literal>pg_signal_backend</literal> role is intended to allow
administrators to enable trusted, but non-superuser, roles to send signals
to other backends. Currently this role enables sending of signals for
canceling a query on another backend or terminating its session. A user
granted this role cannot however send signals to a backend owned by a
superuser. See <xref linkend="functions-admin-signal"/>.
pg_signal_backend
ロールは、信頼はできるが非スーパーユーザであるロールが他のバックエンドにシグナルを送信することを、管理者が許可できるようにすることを意図しています。
今のところ、このロールは他のバックエンドでの問い合わせをキャンセルしたり、セッションを終了するシグナルを送信できます。
しかしながら、このロールの権限を与えられたユーザは、スーパーユーザが所有するバックエンドにシグナルを送信できません。
9.28.2を参照してください。
The <literal>pg_read_server_files</literal>, <literal>pg_write_server_files</literal> and
<literal>pg_execute_server_program</literal> roles are intended to allow administrators to have
trusted, but non-superuser, roles which are able to access files and run programs on the
database server as the user the database runs as. As these roles are able to access any file on
the server file system, they bypass all database-level permission checks when accessing files
directly and they could be used to gain superuser-level access, therefore
great care should be taken when granting these roles to users.
pg_read_server_files
、pg_write_server_files
、pg_execute_server_program
ロールは、信頼はできるが非スーパーユーザであるロールがデータベースを実行しているユーザとしてデータベースサーバ上でファイルにアクセスしたりプログラムを実行したりすることを、管理者が許可できるようにすること意図しています。
これらのロールはサーバファイルシステムの任意のファイルにアクセスできますので、ファイルに直接アクセスする時にはデータベースレベルの権限検査はすべて行なわれず、スーパーユーザレベルのアクセスを得るのに使えます。ですので、これらのロールをユーザに許可する時には注意すべきです。
Care should be taken when granting these roles to ensure they are only used where needed and with the understanding that these roles grant access to privileged information. これらのロールを許可する場合は、必要な場合にのみ、これらのロールは機密情報へのアクセス権を与えることを理解して、使用されるように注意する必要があります。
Administrators can grant access to these roles to users using the
<link linkend="sql-grant"><command>GRANT</command></link> command, for example:
管理者はGRANT
コマンドを使って、ユーザにこれらのロールへのアクセスを許可できます。例えば、
GRANT pg_signal_backend TO admin_user;