メインコンテンツへスキップ
プロトコル・技術

SECURITY DEFINER

SECURITY DEFINER

PostgreSQLの関数などを、呼び出した人ではなく所有者の権限で実行する指定。限定した処理を委譲できる一方、関数の権限と入力の扱いが新たな信頼境界になる。

呼び出し権限を持つ人が、所有者に許された処理を間接的に利用します。所有者を必要以上に強いロールにしないこと、参照するオブジェクトと実行許可を限定することが重要です。機能上便利でも通常の呼び出し元権限で足りるなら、その設計を優先します。

  • 初心者向けには「決めた仕事だけを所有者の権限で代行する関数」
  • 関数の変更権限と呼び出し権限を分けて監査する
  • 権限境界を扱うためコードレビューが必要

よくある質問

SECURITY DEFINERとは?

PostgreSQLの関数などを、呼び出した人ではなく所有者の権限で実行する指定。限定した処理を委譲できる一方、関数の権限と入力の扱いが新たな信頼境界になる。

SECURITY DEFINERについて詳しく知るには?

呼び出し権限を持つ人が、所有者に許された処理を間接的に利用します。所有者を必要以上に強いロールにしないこと、参照するオブジェクトと実行許可を限定することが重要です。機能上便利でも通常の呼び出し元権限で足りるなら、その設計を優先します。

SECURITY DEFINERのポイントは?

初心者向けには「決めた仕事だけを所有者の権限で代行する関数」 関数の変更権限と呼び出し権限を分けて監査する 権限境界を扱うためコードレビューが必要

← 用語集一覧に戻る
ESC