ページの先頭行へ戻る
Enterprise Postgres 14 SP1 スケールアウト運用ガイド
FUJITSU Software

5.5.1 ユーザーマッピングの自動作成

スケールアウトでは、多数のノードが存在する可能性があり、各ノードとロールの組合せに対し、個々にユーザーマッピングを定義するのは大変です。

そこで、インスタンスの作成時のスーパーユーザーおよび全ノードに対してログイン可能なロールに対し、それらロールを定義した際、および新たなノードを定義した際に、それらのユーザー/ロールを利用して各ノードに接続するためのユーザーマッピングを自動で定義する機能を提供します。

なお、これらのユーザーマッピングは、クラスタ共通のシステムカタログpgx_shuser_mappingに登録されます。

自動で設定される値

ユーザーマッピングには、以下の値が自動で設定されます。

以下に例を示します。

SET pgx_ddl_target_node = 'ALLNODES'
CREATE ROLE role_sc LOGIN PASSWORD 'pw';
SELECT umoptions FROM pgx_shuser_mapping;
   umoptions    
----------------
{user=role_sc,password=pw,sslkey=~/.postgresql/role_sc.key,sslcert=~/.postgresql/role_sc.cert}

ロール情報の変更に伴うユーザーマッピングの値の変更

ALTER文によってロールの情報を変更した場合、自動で作成されたユーザーマッピングの値も変更されます。

新たにパスワードが指定された場合、そのパスワードがpasswordオプションに設定されます。

ロール名が変更された場合、user,sslkey,sslcertオプションが、それぞれ新しいロール名に対応した値に設定されます。

注意

CREATE文やALTER文でロールのパスワードを設定する際、パスワード文字列が既にMD5またはSCRAMの暗号化形式になっている場合は、CREATE文の場合はユーザーマッピングは作成されず、また、ALTER文の場合は、ユーザーマッピングのパスワードの値は変更されません。

これは、ユーザーマッピングのパスワードの値には、暗号化前のパスワード文字列を設定する必要がありますが、指定のパスワードを暗号化した文字列を復号できないためです。

この場合、手動で各ノードに対するユーザーマッピングを作成してください。ただし、このユーザーマッピングを作成する際、パスワードはサーバに平文で送信されます。クライアントのコマンド履歴やサーバのログにこれが残ってしまう可能性があります。パスワード認証ではなく、SSL認証などを利用することで、これを防ぐことができます。