Security and Roles

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

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

!!! Note * この場合、廃止された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の将来のバージョンで変わるかもしれませんが、現在BDRconsensusモデルへのアクセスはスーパーユーザ同等のパーミッションを必要とします。

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