2
Postgresのofficial docsは、がというユーザーの特権で実行され、セキュリティデフィナーで定義された機能が実行されていることを示しています。例えばhereとhereとしてSECURITY DEFINER - 関数の作成者または所有者の権限?
しかしながら、他の供給源は、それが機能の所有者の特権であると主張しています。
どちらが正しいですか?
Postgresのofficial docsは、がというユーザーの特権で実行され、セキュリティデフィナーで定義された機能が実行されていることを示しています。例えばhereとhereとしてSECURITY DEFINER - 関数の作成者または所有者の権限?
しかしながら、他の供給源は、それが機能の所有者の特権であると主張しています。
どちらが正しいですか?
(9.4+用)通常(最初は)作成者が所有者です。ただし、機能の所有者が変更された場合は、security definer
が新しい所有者に適用されます。 Per the documentation:
new_owner - 関数の新しい所有者。この機能にSECURITY DEFINERとマークされている場合は、その後、新しい所有者として実行されます。
機能を作成するユーザーは、 –
@a_horse_with_no_name(手動所有者を変更しない限り)しかし、それは私が新しい関数を作成するときに、私は非常に高い権限でログインしています、一般的に...全体のポイントの所有者であります。私は、これらの機能を実行するユーザーに限定された(時にはSELECTのみの)権限を与えたいと思っています。 – ExactaBox
次に、セキュリティ定義者を除外します(これは、セキュリティ定義者の要点です。権限のないユーザーに特権のあるものへのアクセスを許可します)。 –