データベースのセキュリティは幾つかのレベルで行なえます:
データベース・ファイルの保護。データベースの中に保存されたすべて のファイルは、Postgresのスーパユーザ・アカ ウント以外のアカウントからは読まれることのないように保護されています。
デフォルトでは、クライアントからデータベース・サーバへの接続は、 TCP/IP ソケット経由ではなく、ローカルな Unix ソケット経由のみを許すよ うになっています。ローカルなクライアント以外の接続を許すためには、 -iオプションを付けてバックエンドを走らせなくてはな りません。
クライアントからの接続は、PG_DATA にある pg_hba.conf ファイルを経て IP アドレスと、かつ/ま たは、ユーザ名とによって制限することができます。
クライアントからの接続は、他の外部パッケージを経て認証されるかも しれません。
Postgresの各ユーザにはユーザ名と(オプ ションで)パスワードが与えられます。デフォルトでは、ユーザは自分で作った データベース以外にはアクセスできなくなっています。
ユーザが、グループ に割り当てられていて、 テーブルへのアクセスはグループの権限に基づいて制限されているかもしれま せん。
認証は、バックエンド・サーバと postmasterが、ユーザのリクエストしているデー タへのアクセスが、実際にそのユーザに対して許されているかどうかを確かめる プロセスです。 Postgresを起動するすべてのユーザは、 pg_user クラスの内容と照合され、ユーザがそれぞれ行 なおうとしていることが承認されていることを確認されます。しかし、そのユー ザの実際の身元の証明は色々な方法で行なわれます:
ユーザシェルから走らされるバックエンドサーバは、ユーザ postgres のユーザ-id へ setuidする前に、ユーザの(有効な)ユーザ-id を控 えておきます。有効なユーザ-id はアクセス制御の確認の基として使われます。 それ以外の認証は行なわれません。
もし、その Postgres システムが分散 利用できるように構築されていれば、誰でも postmaster プロセスのインターネット TCP ポー トへアクセスできます。そこで DBA は、 PGDATA ディレクトリの pg_hba.conf ファイルに構成を記述して、接続を行なうホストと接続するデータベータベー ス毎に、どの認証システムを使うかを指定します。 利用できる認証システムについては pg_hba.conf(5) を参照して下さい。もちろん、Unixにおけるホストベースの認証はいずれも完璧 ではありません。確信をもった侵入者がべつのホストに成り済ますことが出来ます。 これらのセキュリティの問題は Postgres の 範疇外です。