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
での値より小さくなくてはなりません。
このパラメータはサーバ起動時のみ設定可能です。
unix_socket_directories
(string
)
サーバがクライアントアプリケーションからの接続要求を監視するUnixドメインソケットのディレクトリを指定します。
複数ソケットはコンマで区切られた複数ディレクトリをリストすることで作成できます。
項目間の空白文字は無視されます。
ディレクトリ名に空白文字もしくはコンマを使用する必要がある場合、ディレクトリ名を二重引用符で括ります。
空の値はいかなるUnixドメインソケットも監視しないようにします。
この場合、TCP/IPソケットのみがサーバとの接続に使用されます。
デフォルト値は通常/tmp
ですが、ビルド時に変更できます。
このパラメータはサーバ起動時のみ設定可能です。
.s.PGSQL.
という名前のソケットファイル(nnnn
nnnn
はポート番号)のほかに、.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
ファイル、またはサーバのコマンドラインでのみ設定可能です。
ssl
(boolean
)
SSLによる接続を有効にします。これを使用する前に18.9. SSLによる安全なTCP/IP接続をお読みください。デフォルトはoff
です。このパラメータはサーバ起動時のみ設定可能です。SSL通信はTCP/IP接続の場合のみ有効です。
ssl_ca_file
(string
)
SSLサーバ認証局(CA)が入っているファイル名を設定します。
デフォルトは空です。
つまりCAファイルは読み込まれず、クライアントのサーバ検証は行われません。
(以前のPostgreSQLリリースでは、このファイルは root.crt
としてハードコードされていました。)
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータはサーバ起動時のみ設定可能です。
ssl_cert_file
(string
)
SSLサーバ証明書が入っているファイル名を設定します。
デフォルトは server.crt
です。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータはサーバ起動時のみ設定可能です。
ssl_crl_file
(string
)
SSLサーバ証明書失効リスト(CRL)が入っているファイル名を設定します。
デフォルトは空です。
つまりCRLファイルは読み込まれません。
(以前のPostgreSQLリリースでは、このファイルは root.crt
としてハードコードされていました。)
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータはサーバ起動時のみ設定可能です。
ssl_key_file
(string
)
SSLサーバの秘密鍵が入っているファイル名を設定します。
デフォルトは server.key
です。
相対パスの場合は、データディレクトリからの相対パスになります。
このパラメータはサーバ起動時のみ設定可能です。
ssl_ciphers
(string
)
セキュアな接続で使用できるSSL暗号スィートのリストを指定します。
設定構文と使用可能な値のリストについてはOpenSSLパッケージの
ciphersマニュアルをご覧ください。
デフォルト値は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
(bool
)
サーバのSSL暗号設定をクライアントに優先して使うかどうかを指定します。 デフォルトは真です。 このパラメータはサーバ起動時のみ設定可能です。
古いバージョンのPostgreSQLにはこの設定がなく、常にクライアントの設定を使います。 この設定は、主に古いバージョンとの互換性のために設けられています。 通常サーバの設定に従うほうが良いです。大抵の場合、サーバはより適切に設定されているからです。
ssl_ecdh_curve
(string
)
ECDHキー交換で使われる曲線の名前を指定します。
接続するすべてのクライアントがこの設定をサポートしている必要があります。
サーバの楕円曲線キーで使用されるのと同じ曲線である必要はありません。
デフォルト値はprime256v1
です。
このパラメータはサーバ起動時のみ設定可能です。
OpenSSLはよく使われる曲線に名前を付けています。
prime256v1
(NIST P-256),
secp384r1
(NIST P-384),
secp521r1
(NIST P-521).
利用できる曲線の完全なリストはopenssl ecparam -list_curves
で得られます。ただし、TLSではこのすべてが利用できるわけではありません。
password_encryption
(boolean
)
ENCRYPTED
もしくはUNENCRYPTED
の指定なしで、CREATE USER もしくはALTER USERにてパスワードが指定されている場合、このパラメータはパスワードを暗号化するか否かを決定します。
デフォルトはon
(パスワードを暗号化)です。
krb_server_keyfile
(string
)
Kerberosサーバの鍵ファイルの場所を設定します。詳細は20.3.3. GSSAPI認証を参照してください。
このパラメータは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
と一緒に使用することはできません。
この機能は完全な解決策が見つかるまでの暫定的な手段です。見つかった時点でこのオプションは削除されます。