PostgreSQLで暗号化されたパスワードを持つユーザを作成する

PostgreSQL で、平文のパスワードを入力せずにユーザを作成することは可能ですか (理想的には、sha-256 で暗号化したパスワードのみを入力するユーザを作成したいです)。

私がやりたいのは、このようなものでユーザーを作ることです。

CREATE USER "martin" WITH PASSWORD '$6$kH3l2bj8iT$KKrTAKDF4OoE7w.oy(...)BPwcTBN/V42hqE.';

何か方法があるのでしょうか?

よろしくお願いします。

ソリューション

doc (CREATE ROLE) にあるように、md5でハッシュ化したパスワードを提供することもできます。

ENCRYPTED UNENCRYPTED これらのキーワードは、パスワードの保存の有無を制御します。 システムカタログに暗号化して保存されます。(どちらも指定しない場合は デフォルトの動作は、設定パラメータ パスワードの暗号化(password_encryption)。**提示されたパスワード文字列がすでに MD5で暗号化された形式で保存される場合は、以下の条件に関わらず、そのまま暗号化されて保存されます。 ENCRYPTEDとUNENCRYPTEDのどちらを指定しても(システム上では 指定された暗号化されたパスワード文字列を復号化します)。これによって ダンプ/リストア時に暗号化されたパスワードの再読み込みを行います。

ここで足りない情報は、MD5で暗号化された文字列は、パスワードとユーザー名を連結し、先頭にmd5を付けたものでなければならないということです。

例えば、u0 をパスワード foobar で作成する場合、 md5('foobaru0')ac4bbe016b808c3c0b816981f240dcae であると知っているわけです。

CREATE USER u0 PASSWORD 'md5ac4bbe016b808c3c0b816981f240dcae';

と入力すると、u0はパスワードとしてfoobarを入力してログインできるようになります。

PostgreSQL のパスワードに md5 の代わりに SHA-256 を使用する方法は、今のところないと思われます。

解説 (6)

パスワードのデフォルトの md5 暗号化を上書きする方法は存じ上げませんが、md5 暗号化済みのパスワードを持つ ROLE (別名 "USER") があれば、それを提供することができるようです。pg_dumpall -g (クラスタのグローバルを見る)を使用してこれを確認してください。 例

psql postgres
create role foo with encrypted password foobar;
\q

-- View the role from pg_dumpall -g
pg_dumpall -g | grep foo
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD 'md5c98cbfeb6a347a47eb8e96cfb4c4b890';

Or get it from:
select * from pg_catalog.pg_shadow;

-- create the role again with the already-encrypted password
psql postgres
drop role foo;
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD 'md5c98cbfeb6a347a47eb8e96cfb4c4b890';
\q

-- view the ROLE with the same password
pg_dumpall -g | grep foo
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD 'md5c98cbfeb6a347a47eb8e96cfb4c4b890';

CREATE ROLE]1のDocs。

解説 (0)

もっと簡単な方法です。

CREATE USER u0 PASSWORD 'foobar';.

select * from pg_catalog.pg_shadow;

パスワードは md5ac4bbe016b808c3c0b816981f240dcae となります。

解説 (0)