このトピックでは、EXECUTE特権について説明します。
SPLプログラム (関数、ストアドプロシージャ、またはパッケージ) は、次のいずれかの条件を満たす場合にのみ実行できます。
- 現在のユーザーにSPLプログラムのEXECUTE権限が付与されています。
- 現在のユーザーは、このEXECUTE特権を持つグループのメンバーであるため、SPLプログラムのEXECUTE特権を継承します。
- EXECUTE特権がPUBLICグループに付与されました。
PolarDB for PostgreSQL (Compatible with Oracle) でSPLプログラムを作成すると、デフォルトでPUBLICグループにEXECUTE権限が自動的に付与されます。 したがって、ユーザは、直ちにプログラムを実行することができる。
次の例に示すように、REVOKEEXECUTEコマンドを実行して、このデフォルト特権を削除できます。
REVOKE EXECUTE ON PROCEDURE list_emp FROM PUBLIC;次に、プログラム上の明示的なEXECUTE特権を各ユーザまたはグループに付与することができる。
手続き上の許可実行list_emp TO john;現在、ユーザーjohnはlist_empプログラムを実行できます。 このトピックの冒頭に記載されている条件を満たさない他のユーザーは、このプログラムを実行できません。
プログラムの実行が開始された後、セキュリティの次の側面は、プログラムがデータベースオブジェクトに対してアクションを実行しようとした場合に実行される特権チェックです。 アクションは次のとおりです。
- テーブルまたはビューデータの読み取りまたは変更
- テーブル、ビュー、インデックス、シーケンスなどのデータベースオブジェクトの作成、変更、または削除
- シーケンスから現在または次の値を取得する
- 別のプログラム (関数、ストアドプロシージャ、またはパッケージ) を呼び出す
データベースオブジェクトでは、ユーザーに対して許可または不許可の特権がこれらの各アクションを保護できます。
説明 データベースには、同じ型と名前を持つ複数のオブジェクトを含めることができますが、これらのオブジェクトはそれぞれデータベース内の異なるスキーマに属します。 この場合、SPLプログラムによって参照されるオブジェクトの詳細については、「データベースオブジェクトの名前解決」をご参照ください。