関数とルール

Functions and rules allow users to insert code into the backend server that other users may execute without knowing it. Hence, both mechanisms permit users to trojan horse others with relative impunity. The only real protection is tight control over who can define functions (e.g., write to relations with SQL fields) and rules. Audit trails and alerters on pg_class, pg_user and pg_group are also recommended.

ユーザは、関数とルールで、バックエンドサーバにプログラ ムを挿入することができ、他のユーザはそのことを知らないで実行すること ができます。従い、その両方の機構によって、ユーザはあまり咎められる ことも無く、トロイの木馬を仕掛けることができま す。本当の保護は関数(すなわち、SQLの場での関係への書き込み) とルールを定義できるユーザを厳しく制御することです。 pg_classpg_userおよび pg_groupに対する、監査記録と警報機構を推奨します。

関数

Functions written in any language except SQL run inside the backend server process with the permissions of the user postgres (the backend server runs with its real and effective user-id set to postgres. It is possible for users to change the server's internal data structures from inside of trusted functions. Hence, among many other things, such functions can circumvent any system access controls. This is an inherent problem with user-defined C functions.

SQL 以外の言語で書かれた関数はバックエンドサーバ・プロ セスの中で、ユーザ postgres (バックエンドサー バが本当に有効な ユーザ-id を postgres に設 定する) の権限で走らせます。ユーザは、信用のおける関数の中 から、そのサーバの内部データ構造を変えることができます。そのため、その 他色々ある中で、このような関数はいかなるシステム制御も欺くこ とができます。これは、ユーザ定義によるC関数固有の問題です。

ルール

Like SQL functions, rules always run with the identity and permissions of the user who invoked the backend server.

SQL 関数のように、いつもルールはバックエンドユーザを起 動したユーザの身元と許可で走ります。

手続中止通告

There are no plans to explicitly support encrypted data inside of Postgres (though there is nothing to prevent users from encrypting data within user-defined functions). There are no plans to explicitly support encrypted network connections, either, pending a total rewrite of the frontend/backend protocol.

Postgres の内側に暗号化されたデータを 明示的にサポートする計画はありません。(しかし、ユーザがユーザ定義関数 の中でデータを暗号化するのを妨げるものも全くありません)。暗号化された ネットワーク接続を明示的にサポートする計画も無く、フロントエンド/バッ クエンド・プロトコルの全体的な書き換えも未定です。

User names, group names and associated system identifiers (e.g., the contents of pg_user.usesysid) are assumed to be unique throughout a database. Unpredictable results may occur if they are not.

ユーザ名、グループ名、および、システムに関連した識別子(たとえば、 pg_user.usesysidの内容)は一つのデータベースの中では 一意であると仮定されます。もしそうでなければ、予想外の結果が起こるかも しれません。