PostgreSQL 10 以降 のscram-sha-256 authentication [RDBMS]
最近気づいたが PostgreSQL 10 になってから、 SASL 認証という認証プラグイン機構のひとつとして SCRAM-SHA-256 というチャレンジレスポンス方式の認証方法が実装されたらしい。
http://tatsuo-ishii.github.io/doc-ja/10.0/sasl-authentication.html#sasl-scram-sha256
既存のアカウントを scram-sha-256 で使うためには、サーバーで、以下の2つをオペレーションを実施する
1. パスワードを scram-sha-256 で再設定
https://paquier.xyz/postgresql-2/postgres-10-scram-authentication/
postgres ユーザーで psql コマンドを起動して以下のように入力(下記例ではユーザー scram のパスワードを再設定している)
2. pg_hba.conf で METHOD にscram-sha-256 を指定する
クラウドの時代で、サーバーとクライアントがインターネットを挟んでいて sniff される可能性があっても、データーのやり取りは TLS で通信すればいいんで、最初の認証を安全にできるようにしようということらしい。
PGCon 2017 の資料
https://www.pgcon.org/2017/schedule/attachments/466_PGCon2017-SCRAM.pdf
ちなみにいつもわすれちゃうけど、PostgreSQL のユーザーの作成、データーベースの作成、権限の付与、パスワードの変更はここらへん
https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
(2018-09-22 追記)ドライバーの実装
- C# https://github.com/npgsql/npgsql/pull/1769/files
- erlang https://github.com/epgsql/epgsql/blob/devel/src/epgsql_scram.erl
- python https://github.com/nakagami/minipg/commit/d4ef01ae2867b267c4e4dca8550b9cfce0a61ccc
http://tatsuo-ishii.github.io/doc-ja/10.0/sasl-authentication.html#sasl-scram-sha256
既存のアカウントを scram-sha-256 で使うためには、サーバーで、以下の2つをオペレーションを実施する
1. パスワードを scram-sha-256 で再設定
https://paquier.xyz/postgresql-2/postgres-10-scram-authentication/
postgres ユーザーで psql コマンドを起動して以下のように入力(下記例ではユーザー scram のパスワードを再設定している)
postgres=# SET password_encryption = 'scram-sha-256'; SET postgres=# \password scram; Enter new password: Enter it again: postgres=#
2. pg_hba.conf で METHOD にscram-sha-256 を指定する
クラウドの時代で、サーバーとクライアントがインターネットを挟んでいて sniff される可能性があっても、データーのやり取りは TLS で通信すればいいんで、最初の認証を安全にできるようにしようということらしい。
PGCon 2017 の資料
https://www.pgcon.org/2017/schedule/attachments/466_PGCon2017-SCRAM.pdf
ちなみにいつもわすれちゃうけど、PostgreSQL のユーザーの作成、データーベースの作成、権限の付与、パスワードの変更はここらへん
https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
(2018-09-22 追記)ドライバーの実装
- C# https://github.com/npgsql/npgsql/pull/1769/files
- erlang https://github.com/epgsql/epgsql/blob/devel/src/epgsql_scram.erl
- python https://github.com/nakagami/minipg/commit/d4ef01ae2867b267c4e4dca8550b9cfce0a61ccc
コメント 0