PostgreSQLでは、ある種の共通に必要で、特権のある機能や情報にアクセスできるよう、いくつかのデフォルトロールを提供しています。 管理者は自分の環境のユーザあるいはロールに対し、これらのロールを付与(GRANT)することで、それらのユーザに、その機能や情報を提供することができます。
デフォルトロールについては表 21.1で説明します。 それぞれのデフォルトロールの個別の権限については、将来、さらなる機能が追加されるに連れて変更されるかもしれません。 管理者は、変更がないかリリースノートを確認するようにしてください。
表21.1 デフォルトロール
ロール | 可能なアクセス |
---|---|
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_signal_backend | 他のバックエンドに問い合わせのキャンセルやセッションの終了のシグナルを送信する |
pg_read_server_files | COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所からファイルを読み取ることを許可する |
pg_write_server_files | COPYやその他のファイルアクセス関数で、データベースがサーバ上でアクセスできる任意の場所にファイルを書き込むことを許可する |
pg_execute_server_program | COPYやサーバ側のプログラムを実行できるその他の関数で、データベースを実行しているユーザとしてデータベースサーバ上でのプログラムの実行を許可する |
pg_monitor
、pg_read_all_settings
、pg_read_all_stats
およびpg_stat_scan_tables
ロールは、データベースサーバを監視するためのロールを、管理者が簡単に設定できるようにする目的があります。
これらのロールは通常スーパーユーザに限定されている各種の有用な構成設定、統計情報およびその他のシステム情報を読むことができる一般的な権限のセットを与えることができます。
pg_signal_backend
ロールは、信頼はできるが非スーパーユーザであるロールが他のバックエンドにシグナルを送信することを、管理者が許可できるようにすることを意図しています。
今のところ、このロールは他のバックエンドでの問い合わせをキャンセルしたり、セッションを終了するシグナルを送信できます。
しかしながら、このロールの権限を与えられたユーザは、スーパーユーザが所有するバックエンドにシグナルを送信できません。
9.26.2を参照してください。
pg_read_server_files
、pg_write_server_files
、pg_execute_server_program
ロールは、信頼はできるが非スーパーユーザであるロールがデータベースを実行しているユーザとしてデータベースサーバ上でファイルにアクセスしたりプログラムを実行したりすることを、管理者が許可できるようにすること意図しています。
これらのロールはサーバファイルシステムの任意のファイルにアクセスできますので、ファイルに直接アクセスする時にはデータベースレベルの権限検査はすべて行なわれず、スーパーユーザレベルのアクセスを得るのに使えます。ですので、これらのロールをユーザに許可する時には注意すべきです。
これらのロールを許可する場合は、必要な場合にのみ、これらのロールは機密情報へのアクセス権を与えることを理解して、使用されるように注意する必要があります。
管理者はGRANTコマンドを使って、ユーザにこれらのロールへのアクセスを許可できます。例えば、
GRANT pg_signal_backend TO admin_user;