listen_addresses (string)
クライアントアプリケーションからの接続をサーバが監視する TCP/IP アドレスを指定します。
この値は、ホスト名をコンマで区切ったリスト、そして/もしくは、数値によるIPアドレスです。
*という特別なエントリは利用可能な全てのIPインタフェースに対応します。
エントリ0.0.0.0は全てのIPv4アドレスの監視を、そしてエントリ::は全てのIPv6アドレスの監視を許容します。
リストが空の場合、サーバはいかなるIPインタフェースも全く監視しないで、Unixドメインソケットのみを使用して接続が行われます。
デフォルトの値はlocalhostで、ローカルなTCP/IP 「loopback」接続のみ許可します。
クライアント認証 (第20章)は誰がサーバにアクセス可能かをきめ細かく制御するのに対し、listen_addressesはどのインタフェースが接続を試みるかを制御します。
これにより、安全でないネットワークインタフェース上において繰り返して行われる悪意のある接続要求の防止に役立ちます。
このパラメータはサーバ起動時のみ設定可能です。
port (integer)
サーバが監視するTCPポートで、デフォルトは 5432です。 サーバが監視する全てのIPアドレスに対し、同じポート番号が使用されることを覚えておいてください。 このパラメータはサーバ起動時のみ設定可能です。
max_connections (integer)
データベースサーバに同時接続する最大数を決定します。 デフォルトは典型的に100接続ですが、カーネルの設定が(initdbの過程で)それをサポートしていない場合、もっと少なくなることがあります。 このパラメータはサーバ起動時のみに設定可能です。
スタンバイサーバを運用している場合、このパラメータはマスターサーバでの設定と同じ、もしくはより高い値に設定しなければなりません。そうしないと問い合わせがスタンバイサーバ内で受け入れられません。
superuser_reserved_connections
(integer)
PostgreSQLのスーパーユーザによる接続のために予約されている接続「開口部(スロット)」の数を決定します。
最大、max_connectionsの数までの接続を同時に有効にすることができます。
有効な接続数がmax_connectionsからsuperuser_reserved_connectionsを差し引いた数以上のときは、新規接続はスーパーユーザのみが許可され、新たなレプリケーション接続は受け入れられません。
デフォルトの値は3接続です。
この値は max_connectionsからmax_wal_sendersを引いた値より小さくなくてはなりません。
このパラメータはサーバ起動時のみ設定可能です。
unix_socket_directories (string)
サーバがクライアントアプリケーションからの接続要求を監視するUnixドメインソケットのディレクトリを指定します。
複数ソケットはコンマで区切られた複数ディレクトリをリストすることで作成できます。
項目間の空白文字は無視されます。
ディレクトリ名に空白文字もしくはコンマを使用する必要がある場合、ディレクトリ名を二重引用符で括ります。
空の値はいかなるUnixドメインソケットも監視しないようにします。
この場合、TCP/IPソケットのみがサーバとの接続に使用されます。
デフォルト値は通常/tmpですが、ビルド時に変更できます。
このパラメータはサーバ起動時のみ設定可能です。
.s.PGSQL.という名前のソケットファイル(nnnnnnnnはポート番号)のほかに、.s.PGSQL.というの通常ファイルがそれぞれのnnnn.lockunix_socket_directoriesディレクトリの中に作成されます。
いずれのファイルも手作業で削除してはいけません。
Windowsでは、Unixドメインソケットがありませんので、このパラメータは無関係です。
unix_socket_group (string)
Unixドメインソケット(複数も)を所有するグループを設定します(ソケットを所有するユーザは常にサーバを起動するユーザです)。
unix_socket_permissionsパラメータとの組合せで、Unixドメインソケット接続の追加的アクセス管理機構として使うことができます。
デフォルトでは空文字列で、サーバユーザのデフォルトグループを使用します。
このパラメータはサーバ起動時のみ設定可能です。
Windowsでは、Unixドメインソケットがありませんので、このパラメータは無関係です。
unix_socket_permissions (integer)
Unixドメインソケット(複数も)のアクセスパーミッションを設定します。
Unixドメインソケットは通常のUnixファイルシステムパーミッション設定の一式を使用します。
パラメータ値は、chmodおよびumaskシステムコールが受け付ける数値形式での指定を想定しています。
(通常使われる8進数形式を使用するのであれば、0(ゼロ)で始まらなければなりません。)
デフォルトのパーミッションは、誰でも接続できる0777になっています。
変更するならば0770(ユーザとグループのみです。unix_socket_groupも参照してください)や0700(ユーザのみ)が適切です。
(Unixドメインソケットでは書き込み権限だけが問題になるため、読み込みや実行のパーミッションを設定または解除する意味はありません。)
このアクセス制御機構は 第20章で記述されたものとは別個のものです。
このパラメータはサーバ起動時のみ設定可能です。
このパラメータはSolaris 10の時点でのSolarisなど、ソケットのパーミッションを完全に無視するシステムでは無関係です。
こうしたシステムでは、制限したいユーザだけが検索パーミッションを持つディレクトリをunix_socket_directoriesで指すようにすることによって同じような効果を得ることができます。
Windowsでも、Unixドメインソケットがありませんので、このパラメータは無関係です。
bonjour (boolean)
Bonjourによりサーバの存在を公表することを可能にします。デフォルトはoffです。このパラメータはサーバ起動時のみ設定可能です。
bonjour_name (string)
Bonjourサービス名を指定します。
このパラメータが空文字列''(デフォルトです)に設定されていると、コンピュータ名が使用されます。
サーバがBonjourサポート付でコンパイルでされていない場合は無視されます。
このオプションはサーバ起動時のみに設定可能です。
tcp_keepalives_idle (integer)
クライアントとのやり取りがなくなった後、TCPがkeepaliveパケットをクライアントに送信するまでの時間を秒単位で指定します。
0の場合はシステムのデフォルト値を使用します。
このパラメータはTCP_KEEPIDLEまたは同等のソケットオプションをサポートするシステムと、Windowsでのみサポートされます。
その他のシステムではゼロでなければなりません。
Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。
Windowsでは値0はこのパラメータを2時間に設定します。なぜなら、Windowsはシステムデフォルト値を読む手段を提供していないからです。
tcp_keepalives_interval (integer)
TCPのkeepaliveメッセージに対してクライアントから応答がない場合に、再送を行うまでの時間を秒単位で指定します。
0の場合はシステムのデフォルト値を使用します。
このパラメータはTCP_KEEPINTVLまたは同等のソケットオプションをサポートするシステムと、Windowsでのみサポートされます。
その他のシステムではゼロでなければなりません。
Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。
Windowsでは値0はこのパラメータを1秒に設定します。なぜなら、Windowsはシステムデフォルト値を読む手段を提供していないからです。
tcp_keepalives_count (integer)
サーバのクライアントへの接続が切れたと判断されるまでのTCP keepaliveの数を指定します。
0の場合はシステムのデフォルト値を使用します。
このパラメータはTCP_KEEPCNTまたは同等のソケットオプションをサポートするシステムでのみサポートされます。
その他のシステムではゼロでなければなりません。
Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。
このパラメータはWindowsではサポートされておらず、ゼロでなければなりません。
authentication_timeout (integer)
秒単位による、クライアント認証を完了するまでの最大時間です。
もし、この時間内に自称クライアントが認証プロトコルを完了しない場合、サーバは接続を閉じます。
これはハングしたクライアントが接続を永久に占有することを防ぎます。
デフォルトは1分(1m)です。
このパラメータはpostgresql.confファイル、またはサーバのコマンドラインでのみ設定可能です。
password_encryption (enum)
CREATE ROLEあるいはALTER ROLEでパスワードを設定する際に、このパラメータはパスワードを暗号化するアルゴリズムを指定します。
デフォルト値はmd5で、パスワードをMD5ハッシュとして格納します(onもmd5の別名として受付けます)。
このパラメータをscram-sha-256とすると、SCRAM-SHA-256でパスワードを暗号化します。
古いクライアントはSCRAM認証機構をサポートしていない可能性があり、したがってSCRAM-SHA-256による暗号化は動作しないかもしれないことに注意してください。 さらなる詳細については20.5をご覧ください。
krb_server_keyfile (string)
Kerberosサーバーキーファイルの場所を設定します。
詳細は20.6をご覧ください。
このパラメータはpostgresql.confファイル、またはサーバのコマンドラインでのみ設定可能です。
krb_caseins_users (boolean)
GSSAPIユーザ名を大文字小文字の区別なく取り扱うかどうかを設定します。
デフォルトはoff(大文字小文字を区別する)です。
このパラメータはpostgresql.confファイル、またはサーバのコマンドラインでのみ設定可能です。
db_user_namespace (boolean)
このパラメータはデータベース毎のユーザ名を可能にします。
デフォルトはオフです。
このパラメータはpostgresql.confファイル、またはサーバのコマンドラインでのみ設定可能です。
これがオンの場合、username@dbnameの様にしてユーザを作成しなければなりません。
usernameが接続中のクライアントより渡された時、 @およびデータベース名がユーザ名に付加され、そのデータベース特有のユーザ名をサーバが見に行きます。
SQL環境下で@を含む名前のユーザを作成する場合、そのユーザ名は引用符で括られなければならないことに注意してください。
このパラメータを有効にしていても通常の広域ユーザを作成することができます。
クライアントにユーザ名を指定する時に、たとえばjoe@のように単に@を付け加えてください。
@はサーバがユーザ名を検索する以前に取り去られます。
db_user_namespaceはクライアントとサーバのユーザ名の表示を区別することができます。
認証検査は常にサーバのユーザ名で行われるので、認証方式はクライアントのではなくサーバのユーザ名で構成されなければなりません。
md5では、クライアントおよびサーバの両方でユーザ名をソルトとして使用するので、md5をdb_user_namespaceと一緒に使用することはできません。
この機能は完全な解決方法が見つかるまでの一時的なものです。 完全な解決方法が見つかったら、このオプションは削除される予定です。
SSLの設定に関するさらなる情報については18.9をご覧ください。
ssl (boolean)
SSLによる接続を有効にします。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトはoffです。
ssl_ca_file (string)
SSLサーバ認証局(CA)が入っているファイル名を設定します。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトは空で、この場合CAファイルは読み込まれず、クライアントのサーバ検証は行われません。
ssl_cert_file (string)
SSLサーバ証明書が入っているファイル名を設定します。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトは server.crt です。
ssl_crl_file (string)
SSLサーバ証明書失効リスト(CRL)が入っているファイル名を設定します。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトは空で、この場合CRLファイルは読み込まれません。
ssl_key_file (string)
SSLサーバの秘密鍵が入っているファイル名を設定します。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトは server.key です。
ssl_ciphers (string)
セキュアな接続で使用できるSSL暗号スイートのリストを指定します。
設定構文と使用可能な値のリストについてはOpenSSLパッケージの
ciphersマニュアルをご覧ください。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルト値はHIGH:MEDIUM:+3DES:!aNULLです。
特別なセキュリティ要件でなければ通常これが適当です。
デフォルト値の説明:
HIGH
HIGHグループ(たとえばAES, Camellia, 3DES)を使用する暗号スイート
MEDIUM
MEDIUMグループ(たとえば RC4, SEED)を使用する暗号スイート
+3DES
OpenSSLのHIGHに対するデフォルトの並び順には問題があります。
3DESがAES128より高いとしているからです。
3DESはAES128よりもセキュアではなく、またずっと遅いので、これは間違っています。
+3DESではそれを他のすべてのHIGHとMEDIUM暗号よりも後に位置づけます。
!aNULL認証を行わない無名暗号スイートを無効にします。 そういった暗号スイートは中間者攻撃に対して脆弱で、使用すべきではありません。
OpenSSLのバージョンにより、利用可能な暗号スイートの詳細は異なります。
openssl ciphers -v 'HIGH:MEDIUM:+3DES:!aNULL'
コマンドを使って現在インストールされているOpenSSLのバージョンに関する詳細情報を得てください。
ここで得られるリストは、サーバキータイプにより実行時にフィルターされることに注意してください。
ssl_prefer_server_ciphers (boolean)
サーバのSSL暗号設定をクライアントに優先して使うかどうかを指定します。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルトはtrueです。
古いバージョンのPostgreSQLにはこの設定がなく、常にクライアントの設定を使います。 この設定は、主に古いバージョンとの互換性のために設けられています。 通常サーバの設定に従うほうが良いです。大抵の場合、サーバはより適切に設定されているからです。
ssl_ecdh_curve (string)
ECDHキー交換で使われる曲線の名前を指定します。
接続するすべてのクライアントがこの設定をサポートしている必要があります。
サーバの楕円曲線キーで使用されるのと同じ曲線である必要はありません。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
デフォルト値はprime256v1です。
OpenSSLはよく使われる曲線に名前を付けています。
prime256v1 (NIST P-256),
secp384r1 (NIST P-384),
secp521r1 (NIST P-521).
利用できる曲線の完全なリストはopenssl ecparam -list_curvesで得られます。ただし、TLSではこのすべてが利用できるわけではありません。
ssl_dh_params_file (string)
いわゆる短命DH系SSL暗号で使用するディフィー・ヘルマンパラメータを格納するファイル名を指定します。
デフォルトは空で、この場合はコンパイル時に決められたデフォルトのDHパラメータが使用されます。
攻撃者が、よく知られたコンパイル時設定のDHパラメータを解読しようとしている場合には、カスタムDHパラメータを使うことでその危険性を低減できます。
openssl dhparam -out dhparams.pem 2048を使って、独自のDHパラメータファイルを作ることができます。
このパラメータは、postgresql.confファイルか、サーバのコマンドラインでのみ設定可能です。
ssl_passphrase_command (string)
秘密鍵などのSSLファイルを復号する際に、パスフレーズの入手が必要な時に起動される外部コマンドを設定します。 デフォルトではこのパラメータは空文字で、組み込みのプロンプト機構が使用されます。
このコマンドは、パスフレーズを標準出力に書き出し、コード0で終了しなければなりません。
パラメータの値の%pはプロンプト文字列に置き換えられます。
(%を使いたい場合は%%としてください。)
プロンプト文字列はおそらく空白文字を含むので、適切に引用符付けするように注意してください。
出力の最後に一個の改行があれば、削除されます。
このコマンドは実際にはパスフレーズ用にユーザにプロンプトを表示する必要はありません。 ファイルからパスフレーズが読めるなら、キーチェーン機構やその他から取得します。 選択された仕組みが適切にセキュアかどうかを確認するのはユーザ次第です。
このパラメータはpostgresql.confファイル内、またはサーバのコマンドラインのみで設定可能です。
ssl_passphrase_command_supports_reload (boolean)
このパラメータは、キーにパスフレーズが必要な場合、設定ファイルの再読み込み中にssl_passphrase_commandで設定されたパスフレーズコマンドも呼び出されるかどうかを設定します。
このパラメータが偽(デフォルト)なら、ssl_passphrase_commandは再読込の際に無視され、パスフレーズが必要な場合、SSL設定は再読込されません。
この設定は、サーバ実行中は存在しないかもしれないTTYがプロンプトに必要なコマンドに適しています。
たとえばパスフレーズがファイルから読み込める場合には、この設定を真にするのが適切です。
このパラメータはpostgresql.confファイル内、またはサーバのコマンドラインのみで設定可能です。