0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PostgreSQLの認証にパスワード認証を使う

Posted at

環境

PostgreSQL12.4
Ubuntu20.4

はじめに

PostgreSQLに接続するときの認証には、デフォルトでpeer認証が使われています。 /etc/postgresql/12/main/pg_hba.conf を見ると、デフォルトでは次の設定になっています。

/etc/postgresql/12/main/pg_hba.conf
# TYPE    DATABASE        USER            ADDRESS                 METHOD
  local   all             postgres                                peer
  local   all             all                                     peer

設定の見方ですが、1行目は、UNIXドメインソケットを使用した接続、つまり、ローカルからの接続において、すべてのデータベースに対して、postgresユーザーが接続するときは、peer認証が適用されますという意味になります。

2行目は、postgresユーザー以外のユーザーが接続するときも、すべてのデータベースに対して、peer認証が適用されますという意味になります。

設定

特定の1ユーザー(testユーザー)だけパスワード認証にして、残りのユーザーはpeer認証にする場合は次のようにします。

/etc/postgresql/12/main/pg_hba.conf
# TYPE    DATABASE        USER            ADDRESS                 METHOD
  local   all             postgres                                peer
  local   all             test                                    md5
  local   all             all                                     peer

ここで重要なことは、testユーザーは2行目に追加するということです。testユーザーを3行目に追加すれば、パスワード認証は有効になりません。

pg_hba.confの設定はファイヤーウォールを設定する際の記述方法に似ています。pg_hba.confは上から順番に読み込まれます。そして、下位の記述に上位の記述と重複する設定がある場合は、上位の設定の方が有効になります。

上記の例では、test(2行目)の下にall(3行目)があります。testはallの中に含まれるため、重複した記述になっています。この場合、下位にあるallが有効になるのではなく、上位のtestの方が有効になります。つまり、testユーザーはパスワード認証が有効になるということです。METHODにmd5とありますが、パスワードをMD5のアルゴリズムで暗号化するという意味です。パスワードを平文で送る場合は、METHODはpasswordの設定になります。セキュリティが弱くなるため、恐らく、この設定をすることはないかと思います。ちなみに、認証を一切行わない場合は、METHODの設定はtrustになります。更にセキュリティが弱くなるため、この設定もすることはないかと思います。

pg_hba.confの設定を変更したら、PostgreSQLのサービスを再起動する必要があります。再起動しないと設定が有効になりません。

まとめ

さて、peer認証からパスワード認証に変更する理由ですが、PostgreSQLに新規でロールを追加する場合、peer認証だとPostgreSQLにロールを追加した後、Linuxにも同じ名前のユーザー名を追加する必要がでてきます。Linuxには新規ユーザーを追加したくないといった場合は、パスワード認証を採用することで回避することができます。つまり、testユーザーがLinuxにない状態で、別のユーザーでLinuxにログインしていても、下記のコマンドでPostgreSQLにログインできるようになるということです。

#psql -U test -d データベース名

参考

PostgreSQLの公式マニュアル
https://www.postgresql.jp/document/12/html/auth-pg-hba-conf.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?