Security and Roles

基本的なパッケージのインストールと構成を超えて、 HARP自分自身が動作するにはPostgresの権限が必要です。これらにより、必要に応じてPostgresまたはBDRに関する情報を収集し、コンセンサスレイヤー内のノードステータスを維持できます。

Postgresの許可

node.dsnパラメータで指定されたロールは、次のいずれかの方法で作成されている必要があります。

  • CREATE USER ...

  • CREATE ROLE ... WITH LOGIN

これにより、ロールがデータベースにロギングして診断情報を収集できるオーダーになります。

同様に、このロールのpg_hba.confにエントリーが存在する必要があります。これにはさまざまな方法があります。例として、すべてのデータベースホストが10.10.*のどこかにあるVPNサブネットを考えます。そのような場合、最も簡単なアプローチは特定の行を追加することです:

#  TYPE     DATABASE    USER         ADDRESS         METHOD
hostssl    all         harp_user    10.10.1.1/16    scram-sha-256

注釈

この場合、廃止された`md5`ではなく、より新しい`scram-sha-256`認証を使用しました。また、`hostssl`を指定してSSL認証を要求することも選択しました。

BDRのアクセス許可

BDRノードには、特定のロールがHARP対応ユーザに付与されている場合にのみ可視されるメタデータとビューがあります。この場合、 HARPユーザには以下が必要です。

GRANT bdr_monitor TO harp_user;

bdr_monitor BDRロールは、クラスターオペレーションに関する進行中の情報を維持するためのステータスモニタリングツールを対象としているため、 HARPに最適です。

BDRコンセンサス権限

dcs.driver設定パラメータがbdrに設定されている場合、 HARPはコンセンサスレイヤーとしてBDR自分自身を利用します。そのため、現在bdr_superuserロールでのみ使用可能なAPIメソッドへのアクセスが必要です。これは、 HARP対応ユーザが以下を必要とすることを意味します。

GRANT bdr_superuser TO foobar;

これはBDRの将来のバージョンで変わるかもしれませんが、現在BDRコンセンサスモデルへのアクセスはスーパーユーザ同等のパーミッションを必要とします。

重要

BDRスーパーユーザーはPostgresスーパーユーザーではありません*。 `bdr_superuser`ロールには、制限された機能、テーブル、ビュー、およびその他のオブジェクトへのアクセスなど、 BDR内での昇格された特権が付与されるだけ自分自身。