pg_hba.confで同じPostgreSQLローカルユーザーに対してピア認証とmd5認証の両方を有効にできますか?


14

PostgreSQL(スーパー)ユーザーが「peer」または「md5」認証方法で認証されるようにしたいと思います。できれば両方のケースでローカルUnixドメインソケットを使用してください。問題は、pg_hba.confのエントリの順序が重要であり、最初の一致が適用されることです。

私が持っているもの:

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer
  local   all        all                 md5

欲しいもの(無効な構文):

# TYPE    DATABASE   USER      ADDRESS   METHOD
  local   all        harold              peer-or-md5
  local   all        all                 md5

これを使用したい環境の詳細を以下に示します。

この特定のサーバーでは、すべてのデータベースは比較的小さく(それぞれ10 MB未満のデータ)、純粋に読み取り専用です。それらはハロルドのスーパーユーザーによって毎晩ドロップされ、再作成されます。haroldはシステムアカウントでもあるため、「peer」はパスワードなしのcronjobなどでうまく機能します。次に、データベースにアクセスするWebインターフェイスがあります。これはmd5認証を使用します(システムユーザーはwebserver、pgユーザー名、パスワード、db訪問者)。ここで、haroldユーザーにWebインターフェースからもログインさせたいと思います。これは、ハロルドの「ピア」設定のために失敗します。

現在の回避策は、WebインターフェイスがTCP経由で接続できるようにすることです。

# TYPE    DATABASE   USER      ADDRESS        METHOD
  host    all        all       127.0.0.1/32   md5
  host    all        all       ::1/128        md5

最初の例のローカルエントリに加えて。これは機能しますが、ここでもローカルソケットを使用します-パフォーマンスのために、そしてそれが正しいことのように思えるという直感のためです。

これは可能ですか?改善策はありますか?

回答:


10

同様のStackOverflowの質問によると、答えはノーです。同じタイプ、データベース、ユーザー、およびアドレスに対して2種類の認証を有効にすることはできません。

StackOverflowの質問.pgpassでは、ユーザーのホームディレクトリにあるファイルを使用し、md5認証を使用することを推奨していますが、それがcronジョブで必ず機能するかどうかはわかりません。


cronjobが、ホームディレクトリに.pgpassを持つ同じユーザーのものである場合に機能します。
アンドレイ・ミハルツォフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.