無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

18.3. 接続と認証

18.3.1. 接続設定

listen_addresses ( string )

クライアントアプリケーションからの接続をサーバが監視する TCP/IP アドレスを指定します。 この値は、ホスト名をコンマで区切ったリスト、そして/もしくは、数値によるIPアドレスです。 * という特別なエントリは利用可能な全てのIPインタフェースに対応します。 エントリ 0.0.0.0 は全てのIPv4アドレスの監視を、そしてエントリ :: は全てのIPv6アドレスの監視を許容します。 リストが空の場合、サーバはいかなるIPインターフェイスも全く監視しないで、Unixドメインソケットのみを使用して接続が行われます。 デフォルトの値は localhost で、ローカルなTCP/IP "loopback" 接続のみ許可します。 クライアント認証 ( 第19章 )は誰がサーバにアクセス可能かをきめ細かく制御するのに対し、 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 ですが、構築時に変更できます。このパラメータはサーバ起動時のみ設定可能です。

ソケットファイル、これは nnnn がポート番号である、 .s.PGSQL. nnnn と名前が付いているもの、それ自身に加え、 .s.PGSQL. nnnn .lock と名前が付いている通常のファイルがそれぞれの unix_socket_directories ディレクトリの中に作成されます。 いずれのファイルも手作業で削除してはいけません。

Unixドメインソケットを持たないWindowsではこのパラメータは無関係です。

unix_socket_group ( string )

Unixドメインソケット(複数も)を所有するグループを設定します(ソケットを所有するユーザは常にサーバを起動するユーザです)。 unix_socket_permissions パラメータとの組合せで、Unixドメインソケット接続の追加的アクセス管理機構として使うことができます。 デフォルトでは空文字列で、どのユーザがサーバユーザのデフォルトグループかを示します。このパラメータはサーバ起動時のみ設定可能です。

Unixドメインソケットを持たないWindowsではこのパラメータは無関係です。

unix_socket_permissions ( integer )

Unixドメインソケット(複数も)のアクセス許可を設定します。 Unixドメインソケットは通常のUnixファイルシステム許可設定の一式を使用します。 パラメータ値は、 chmod および umask システムコールが受け付ける数値形式での指定を想定しています。(通常使われる8進数形式を使用するのであれば、 0 (ゼロ)で始まらなければなりません。)

デフォルトでの許可は、誰でも接続できる 0777 になっています。 変更するならば 0770 (ユーザとグループのみです。 UNIX_SOCKET_GROUP も参照してください)や 0700 (ユーザのみ)が適切です。(実際、Unixドメインソケットでは書き込み権限だけが問題です。そのため、読み込み許可や実行許可を設定または解除する意味はありません。)

のアクセス制御機構は 第19章 で記述されたものとは別個のものです。

このパラメータはサーバ起動時のみ設定可能です。

Unixドメインソケットを持たないWindowsではこのパラメータは無関係です。

bonjour ( boolean )

Bonjour によりサーバの存在を公表することを可能にします。デフォルトはoffです。このパラメータはサーバ起動時のみ設定可能です。

bonjour_name ( string )

Bonjour サービス名を指定します。 このパラメータが空文字列 '' (デフォルトです)に設定されていると、コンピュータ名が使用されます。 サーバが Bonjour サポート付でコンパイルでされていない場合は無視されます。 このオプションはサーバ起動時のみに設定可能です。

tcp_keepalives_idle ( integer )

keepaliveパケットを除いては待機状態となっている接続に、keepaliveパケットを送信する前までの時間を秒単位で指定します。 0の場合はシステムのデフォルト値を使用します。このパラメータは TCP_KEEPIDLE または TCP_KEEPALIVE シンボルをサポートするシステムとWindowsのみサポートされます。 その他のシステムではゼロでなければなりません。 Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。

注意: Windowsでは値0はこのパラメータを2時間に設定します。なぜなら、Windowsはシステムデフォルト値を読む手段を提供していないからです。

tcp_keepalives_interval ( integer )

keepaliveパケットを除いては待機状態となっている接続に、keepaliveパケットを送信する間隔の時間を秒単位で指定します。 0の場合はシステムのデフォルト値を使用します。 このパラメータは TCP_KEEPINTVL シンボルをサポートするシステムとWindowsのみサポートされます。 その他のシステムではゼロでなければなりません。 Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。

注意: Windowsでは値0はこのパラメータを1秒に設定します。なぜなら、Windowsはシステムデフォルト値を読む手段を提供していないからです。

tcp_keepalives_count ( integer )

keepaliveパケットを除いては待機状態となっている接続に、送信するkeepaliveパケットの数を指定します。 0の場合はシステムのデフォルト値を使用します。 このパラメータは TCP_KEEPCNT シンボルをサポートするシステムのみサポートされます。その他のシステムではゼロでなければなりません。 Unixドメインソケット経由で接続されたセッションでは、このパラメータは無視され、常にゼロとして読み取られます。

注意: このパラメータはWindowsではサポートされておらず、ゼロでなければなりません。

18.3.2. セキュリティと認証

authentication_timeout ( integer )

秒単位による、クライアント認証を完了するまでの最大時間です。 もし、この時間内に自称クライアントが認証プロトコルを完了しない場合、サーバは接続を閉じます。 これはハングしたクライアントが接続を永久に占有することを防ぎます。 デフォルトは1分( 1m )です。 このパラメータは postgresql.conf ファイル、またはサーバのコマンドラインでのみ設定可能です。

ssl ( boolean )

SSL による接続を有効にします。これを使用する前に 項17.9 をお読みください。デフォルトは 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_renegotiation_limit ( integer )

そのセッションキーの再調停が行われる前に、 SSL 暗号化接続上で、どれだけの量のデータのが流れても良いかを指定します。 再調停は攻撃者が大量のトラフィックを送出した場合、暗号解析を行う機会を減少させます。しかし、同時に多大な性能上の不利益をもたらします。 送出されたのと受け取られたトラフィックの合計はその限度の検証に使用されます。もしパラメータが0に設定されると再調停は無効になります。デフォルトは 512MB です。

注意: SSLプロトコルにおける脆弱性によりSSL再調停を使用した場合、2009年11月以前のSSLライブラリは安全でありません。 この脆弱性への応急的な対処として、いくつかのベンダーは再調停を行う機能がないSSLライブラリを出荷しました。 もしこれらのライブラリがクライアントまたはサーバで使用されているのであれば、SSL再調停は無効にすべきです。

ssl_ciphers ( string )

安全な接続で使用できる SSL 暗号のリストを指定します。 サポートされる暗号のリストについては openssl のマニュアルページを参照してください。

password_encryption ( boolean )

ENCRYPTED もしくは UNENCRYPTED の指定なしで、 CREATE USER もしくは ALTER USER にてパスワードが指定されている場合、このパラメータはパスワードを暗号化するか否かを決定します。 デフォルトは on (パスワードを暗号化)です。

krb_server_keyfile ( string )

Kerberosサーバの鍵ファイルの場所を設定します。詳細は 項19.3.5 または 項19.3.3 を参照してください。 このパラメータは postgresql.conf ファイル、またはサーバのコマンドラインでのみ設定可能です。

krb_srvname ( string )

Kerberosのサービス名を設定します。詳細は 項19.3.5 を参照してください。 このパラメータは postgresql.conf ファイルか、サーバコマンドラインでのみ設定可能です。

krb_caseins_users ( boolean )

KerberosおよびGSSAPIのユーザ名が大文字小文字を区別すべきかの設定をします。 デフォルトは off (大文字小文字を区別する)です。 このパラメータは postgresql.conf ファイル、またはサーバのコマンドラインでのみ設定可能です。

db_user_namespace ( boolean )

このパラメータはデータベース毎のユーザ名を可能にします。 デフォルトではオフです。 このパラメータは postgresql.conf ファイル内、またはサーバのコマンドラインのみで設定可能です。

これがオンの場合、 username@dbname の様にしてユーザを作成しなければなりません。 username が接続中のクライアントより渡された時、 @ およびデータベース名がユーザ名に付加され、そのデータベース特有のユーザ名をサーバが見に行きます。SQL環境下で @ を含む名前のユーザを作成する場合、そのユーザ名は引用符で括られなければならないことに注意してください。

このパラメータを有効にしていても通常の広域ユーザを作成することができます。 クライアントにユーザ名を指定する時に、たとえば joe@ のように単に @ を付け加えてください。 @ はサーバがユーザ名を検索する以前に取り去られます。

db_user_namespace はクライアントとサーバのユーザ名の表示を区別することができます。 認証検査は常にサーバのユーザ名で行われるので、認証方式はクライアントのではなくサーバのユーザ名で構成されなければなりません。 md5 では、クライアントおよびサーバの両方でユーザ名をソルトとして使用しますので、 md5 db_user_namespace と一緒に使用することはできません。

注意: この機能は完全な解決策が見つかるまでの暫定的な手段です。見つかった時点でこのオプションは削除されます。


powered by SEO.CUG.NET