(唐突にPostgreSQLの設定の話。Mastodon上で話していた、Mastodonのデータベースセキュリティ設定についての補足記事です)
trustは、利用者を全面的に信頼するという設定で、データベース上に作成されているどのユーザーとしてもログインでき、パスワードも要求されません。
今回のマストドンのアップデートのように、いろいろなソフトウェアを組み合わせる難しい設定をしている場合、セキュリティの設定に引っかかると何が原因で上手くいかないのか判断できなくなります。その意味では「動くようになるまでtrustにしておく」というのは有効なアプローチだと思います。
ちゃんと動く状態にできたら、今度はセキュリティの設定を安全な状態に変更しましょう。
postgresqlのコマンドやバックグラウンドサービスのための接続設定
local all postgres peer
Unixソケットにより(local)、全てのデータベースに(all)、postgresユーザーが(postgres)、OSのユーザー名に基づいて(peer)接続できるようにする設定です。
ユーザーがpostgres限定になっているので、この接続設定を使えるのはOSのpostgresユーザーだけです。PostgreSQLのサービスが使う接続設定で、これだけは変更せずに記載しておいた方が良いでしょう。
ローカル作業者のための接続設定
local all all peer
Unixソケットにより(local)、全てのデータベースに(all)、全てのユーザーが(all)、OSのユーザー名に基づいて(peer)接続できるようにする設定です。
sudoできるユーザーだけが作業するなら、この設定は削除してしまって、postgresユーザーになって作業しても良いかもしれません。
sudo -u postgres psql
Mastodonのための接続設定
host mastodon_production mastodon 127.0.0.1/32 md5
host mastodon_production mastodon ::1/128 md5
TCP/IPにより(host)、mastodon_productionデータベースに、mastodonユーザーで、127.0.0.1 と ::1 から、ユーザー名と暗号化パスワードで(md5)接続できるようにする設定です。
127.0.0.1がIPv4による同一マシン(ローカルホスト)、::1がIPv6による同一マシンからのアクセスの設定です。
/host/mastodon/live/.env.production にDB_NAME=〜の設定がありますので、そこがmastodonか、mastodon_productionのいずれかになっていますので、確認してください。
さくらのスタートアップスクリプトでは、ひょっとするとmastodonになっているかもしれません。現在の標準のMastodonのセットアップでは、mastodon_productionになります。
同じく.env.productionの、DB_USER、DB_PASSが、接続ユーザー名とパスワードの設定です。マストドンのrailsの本体、sidekiqなどが、このユーザーとパスワードで接続しにくるので、それに対応できるようになっていればOKです。
まとめ
pg_hba.confの中身は、おおむね下記のものだけで足りるということです。
local all postgres peer
host mastodon_production mastodon 127.0.0.1/32 md5
host mastodon_production mastodon ::1/128 md5
PostgreSQLへのパスワードの設定
パスワード文字列が cg2DW8drJKCXFZX6NV7xFNFg だとします。
% sudo -u postgres psql
postgres=# alter role mastodon with password 'cg2DW8drJKCXFZX6NV7xFNFg';
postgres=# \q
% sudo -u mastodon nano /home/mastodon/live/.env.production
DB_PASS=cg2DW8drJKCXFZX6NV7xFNFg
sudoでpostgresユーザーになったりmastodonユーザーになったりしながら、それぞれ設定します。
また、TCP/IPでユーザー名とパスワードで接続することはできるので、
% psql -d mastodon_production -U mastodon -W -h 127.0.0.1 -p 5432
ユーザー mastodon のパスワード: cg2DW8drJKCXFZX6NV7xFNFg
などとすることで接続することもできます。(できなければマストドン本体からも接続できないので、確認に便利かもしれません)
コメント
[…] アクセスを無制限に許してしまい、大変危険である。 その場合は、設定をmd5などにして、暗号パスワードを設定することをお勧めする。 以下のサイトを参考にされたし。 pg_hba.confの設定 […]