他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

31.7. セキュリティ

サブスクライバー側のテーブルのスキーマを変更できるユーザは任意のコードをスーパーユーザとして実行することができます。 そのようなテーブルの所有権とTRIGGER権限はスーパーユーザが信頼するロールにのみ付与するように制限してください。 さらに信用できないユーザがテーブルを作成できる場合は、テーブルを明示的にリストしているパブリケーションのみを使用してください。 つまり、スーパーユーザが全てのユーザにパブリッシャやサブスクライバーに非一時テーブルを作成することを信用している場合にのみ、FOR ALL TABLESサブスクリプションを作成してください。

レプリケーション接続のために使われるロールには、REPLICATION属性が付与されている(もしくはスーパーユーザである)必要があります。 ロールに SUPERUSERBYPASSRLSがない場合は、パブリッシャは行セキュリティポリシーを実行できます。 ロールが全てのテーブルの所有者を信頼していない場合、接続文字列にoptions=-crow_security=offを含めてください。 テーブルの所有者が行セキュリティポリシーを追加した場合、ポリシーが実行されるのではなく、レプリケーションが停止します。 接続のためのロールはpg_hba.confで設定され、 LOGIN属性を持つ必要があります。

テーブルの初期データをコピーできるためには、レプリケーション接続に使用されるロールは、パブリッシュされるテーブルに対してSELECT権限を持っていなければなりません。 (あるいはスーパーユーザでなければなりません。)

パブリケーションを作成するためには、ユーザはデータベース中のCREATE権限を持っていなければなりません。

テーブルをパブリケーションに追加するためには、ユーザはテーブルの所有権限を持っていなければなりません。 自動的にすべてのテーブルにパブリッシュするパブリケーションを作成するには、ユーザはスーパーユーザでなければなりません。

サブスクリプションを作成するためには、ユーザはスーパーユーザでなければなりません。

ローカルデータベースで実行されるサブスクリプション適用プロセスは、スーパーユーザ権限で実行されます。

権限は、レプリケーション接続の開始時に一度だけチェックされます。 パブリッシャーから更新レコードを読む際、あるいは個々の更新を適用する際には再チェックされません。