Storing user settings in the backend, accessible to all web application instances

Storing user settings in the backend, accessible to all web application instances#

PEM Webアプリケーションの複数のインスタンスを展開する場合、ユーザー設定をバックエンドデータベースに保存するようにPEMを構成して、すべてのインスタンスで同期されるようにします。

PEMバックエンドの構成#

PEMバックエンドのPostgresインスタンスで、スーパーユーザーとして接続し、新しいデータベースを作成します。

新しいユーザーにこのデータベースに接続する権利を付与し、PEMデータベースに接続する権利を取り消します。

CREATE DATABASE pem_user_settings;
CREATE USER pem_user_settings WITH PASSWORD choose-a-password;
GRANT CONNECT ON DATABASE pem_user_settings FROM PUBLIC;
REVOKE CONNECT ON DATABASE pem FROM PUBLIC;

また、このインスタンス上の他のデータベースたとえば postgres やedb などに接続する権限を取り消す必要があります。

また、ユーザー pem_user_settings がWebアプリケーションインスタンスから各Postgresインスタンスに接続することを許可されていることを確認する必要があります。これには、次の形式のルールをpg_hba.confに追加する必要がある場合があります。

hostssl  pem_user_settings  pem_user_settings  <web-application-subnet>  scram-sha-256

スーパーユーザーとして新しいデータベースに接続し、新しいユーザーに新しいデータベースに必要なすべての権限を付与します。

ALTER DEFAULT PRIVILEGES FOR ROLE pem_user_settings GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO pem_user;
ALTER DEFAULT PRIVILEGES FOR ROLE pem_user_settings GRANT SELECT, UPDATE ON SEQUENCES TO pem_user;

PEM Webアプリケーションの構成#

PEM Webアプリケーションの各インスタンスで、 config_local.py ファイルを見つけるか、存在しない場合は作成します Managing configuration settings を参照してください。

次の行を追加し、 <password> をpem_user_settings ユーザーのパスワードに置き換えます。

  • 単一のエンドポイントを使用してトラフィックをプライマリPEMバックエンドインスタンスにルーティングしている場合、 <host-ip> および<host-port> はそのエンドポイントのIPアドレスとポートである必要があります。

CONFIG_DATABASE_URI="postgres://pem_user_settings:<password>@<host-ip>:<host-port>/pem_user_settings"
  • マルチホスト接続文字列を使用してトラフィックをPEMプライマリにルーティングしている場合、次のフォーマットを使用して、各PEMバックエンドの詳細を指定できます。

CONFIG_DATABASE_URI="postgres://pem_user_settings:<password>@<host-1-ip>:<host-1-port>,<host-2-ip>:<host-2-port>,<host-3-ip>:<host-3-port>/pem_user_settings"